Form haalt data uit DB, vervolgens keuzelijst met autosubmit hoe waardes onthouden?

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Beste ,

Ik heb mbv jullie forummers een en ander in elkaar geprutst:P

Nu heb ik een form dat bestaat uit 5 dropdowns, wanneer je hier uit een waarde selecteert, krijg je een (indien javascript aanstaat) een autosubmit die wordt doorgestuurd naar een validatie pagina en haalt mbv query's de juiste data op.

Echter wat ik wil bereiken is dat dit form wanneer je het eerste veld invult de autosubmit gedaan wordt, en zo dus de query uitgevoerd, maar dat de waarde in het form wel blijft staan , zodat wanneer je nog een dropdown invult, je een specifiekere query krijgt.

Ik hoop dat jullie snapeen wat ik bedoel?

Anywaytjes, iemand een idee hoe dit te doen?

form OPBOUW:

PHP:
<?php


$sql = "SELECT * FROM accomodations";
$result = mysql_query($sql) or die(mysql_error());
    while ($record = mysql_fetch_assoc($result)) {
	    $acco=$record['accomodatieTypes'];
        $soortreis = $record['reisSoorten'];
		$countryid = $record['land_id'];
		$offer_price = $record['offer_price'];
		$sterren = $record['klasse'];
}
	 
	 		

	
	
		$query = mysql_query("SELECT * FROM countries ");
  while($record=mysql_fetch_array($query)) {
		$id = $record['id'];
		$naam = $record['naam'];
		
			if ($_POST['country']==$naam){

			$land .='<option value='.$id.'selected="selected">' . $naam . '</option>';
			}
			else{
             $land .= '<option value="' . $id. '"> '.  $naam. ' </option>';   
			 	 
			 } }
			 $land .= '<option value="" selected = "selected" disabled = "disabled" >-- Kies een land --</option>';
			 	
		
	   
		$query = mysql_query("SELECT * FROM accomodatie_types ");
  while($record=mysql_fetch_array($query)) {
		$id = $record['id'];
		$naam = $record['name'];
	             
		$accommodatie .= '<option value="%' . $id . '%"> '.  $naam. ' </option>';
		    }
		$accommodatie .= '<option value="" selected = "selected" disabled = "disabled" >-- Soort accommodatie --</option>';
	

	
	    	$query = mysql_query("SELECT * FROM reis_soorten ");
  while($record=mysql_fetch_array($query)) {
		$id = $record['id'];
		$naam = $record['name'];
			
             $verzorging .= '<option value="%' . $id  . '%"> '.  $naam. ' </option>';
			 }
			 $verzorging .= '<option value="" selected = "selected" disabled = "disabled" >-- Verzorging --</option>';
	
		
			 $query = mysql_query("SELECT * FROM klasse ");
  while($record=mysql_fetch_array($query)) {
			$naam = $record['naam'];
			
			
             $klasse .= '<option value="' . $naam  . '"> '.  $naam. ' </option>';
			 }
			 $klasse .= '<option value="" selected = "selected" disabled = "disabled" >-- Klasse --</option>';
			 
			 $query = mysql_query("SELECT * FROM aanbieding ");
  while($record=mysql_fetch_array($query)) {
			$offer = $record['naam'];
			$nr = $record['id'];
             $aanbieding .= '<option value="' . $nr  . '"> '.  $offer. ' </option>';
			 }
			 $aanbieding .= '<option value="" selected = "selected" disabled = "disabled" >-- Aanbiedingen? --</option>';
		


	?>
	
	<form action="index.php?id=2" method="post"  id="form1">
 	  <table width="235" border="0">
        <tr>
          <td width="77">Bestemming:</td>
          <td width="235"><select name="country" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();"><?php echo $land;  ?>		</td>
        </tr>
        <tr>
          <td height="22">Sterren:</td>
          <td><select name='star' width="200"  STYLE="width: 160px" title="Aantal sterren" onchange="document.forms['form1'].submit();" ><?php echo $klasse; ?>	  </td>
        </tr>
      
	  <td height="22">Aanbieding:</td>
       <td><select name="aanbieding" width="200" STYLE="width: 160px"  title="aanbieding" onchange="document.forms['form1'].submit();"><?php echo $aanbieding; ?></td>
			</tr>
			
			      <tr>
          <td height="22">Accomodatie:</td>
          <td><select name="acco" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();"><?php echo $accommodatie; ?>		  </td>
        </tr>
			
			
			      <tr>
          <td height="22">Verzorging:</td>
          <td><select name="verzorging" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();"><?php echo $verzorging; ?></td>
        </tr>
		
</table>	  
<input type="submit" name="zoekland" id="search" value="Zoek" /> 
</form>

Verwerken:

PHP:
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_start();

//Als er op verzenden wordt geklikt doe dan:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//Ophalen van de vluchtprijzen
$querie="SELECT Prijs FROM vluchten WHERE id='".$_POST['country']."'";
$resultaat = mysql_query($querie) or die (mysql_error()) ;
while($rekord=mysql_fetch_assoc($resultaat)){
$Prijs=$rekord['Prijs'];
}

//Basis query
$basequery = "SELECT * FROM accomodations WHERE  ";
$actief = " AND active=1 ";
$wheres = array();
//Zet de vershillende mogelijke keuzes
if (isset($_POST['country'] )) {
	$wheres[] = "land_id ='" . $_POST['country'] . "'" ;
	
	}
if (isset($_POST['star'] )) {
	$wheres[] = "klasse ='" . $_POST['star'] . "'" ;
	}	
if (isset($_POST['aanbieding'] )) {
	$wheres[] = "offer_price ='" . $_POST['aanbieding'] . "'" ;
	}
if (isset($_POST['acco'] )) {
	$wheres[] = "accomodatieTypes LIKE'" . $_POST['acco'] . "'" ;
	}
if (isset($_POST['verzorging'] )) {
	$wheres[] = "reisSoorten LIKE'" . $_POST['verzorging'] . "'" ;
	}
if ( count( $wheres ) == 0 ) {
  // geen keuze door klant opgegegeven dus toon alles
    $where = "1";
	}

//Wel een keuze gegeven door klant, bouw vervolg string op.
else{
$where = implode( " AND ",  $wheres );
}
//opbouw van de basisquery + de geselecteerde opties
$query = $basequery . $where . $actief;
          //voer uit	
		    
        // hier beginnen met lijst te declareren
    $lijst = NULL;
    // hier de query dus uitvoeren
    $result = mysql_query($query) or die(mysql_error());
    while ($record = mysql_fetch_assoc($result)) {
		$thumbnail = $record['thumbnail'];
        $reis_id=$record['id'];
        $land_id = $record['land_id'];
        $code = $record['code'];
        $alias = $record['alias'];
        $naam = $record['naam'];
        $plaats = $record['plaats'];
        $intro = $record['intro'];
        $vanafPrijs = $record['vanafPrijs'];
        $infoAlgemeen = $record['infoAlgemeen'];
        $infoFaciliteiten = $record['infoAlgemeen'];
        $acco=$record['accomodatieTypes'];
        $klasse = $record['klasse'];
     
		//Vluchtprijs optellen bij acommodatieprijs
$optellen = $Prijs + $vanafPrijs;

//Haal foto bij acco op
$querie="SELECT locatie FROM reizen_foto WHERE reis_id='".$reis_id."'";
$resultaat = mysql_query($querie) or die (mysql_error()) ;
while($retord=mysql_fetch_assoc($resultaat)){
$img=$retord['locatie'];
}
   // de lijst wordt hier telkens aangevuld, slechts één .= nodig hierbij
        // en nette opmaak
        $lijst .= '
            <div id="tabel">
                <div id="lijstachtergrondtitel">
                    <table border="0">
                        <tr>
                            <td width="300"><B>' . $naam .'</B></td>
                            <td width="300"> <B><font color="red"> ' . number_format($optellen,2,',','') . ' </font></B></td>
                        </tr>
                    </table>
                </div>
                <div id="lijstinhoudachtergrond">
                    <table border="0" >
                        <tr> <td width="100%">' . $intro. '</td>
						<!--Spatiegebruik in naam nog niet mogelijk, nog op te lossen!!!-->
						<td><img src=http://localhost/modx/assets/modules/reizen/foto/thumbnail/'. ($thumbnail) .' "height="100" width="100"></td>
                            
                                                   </tr>
                    </table>
                </div>
            </div>';
    }
    // verkorte if else statement
    echo (isset ($lijst)) ? ($lijst) : (NULL);
}




$_SESSION['country']=$_POST['country'];
echo "Pageviews=". $_SESSION['country'];
echo $query;
?>

p.s, die session hier net boven, was een probeersel van mij maar dat resulteerde in niets en is al weer weg../
 
Laatst bewerkt:
Als je nieuwe pagina inlaadt, bevindt het vorige gekozen element van de gebruiker zich in de $_POST array. Hierdoor weet je wat hij gekozen heeft (dat moet ook wel, want anders kun je niet queryen)

Je kunt die gebruiken om te bepalen wat het default gezette element is van je dropdown box.

Dat heb ik toevallig vanochtend nog uitgelegd aan iemand in het topic net onder het jouwe ;)
http://www.helpmij.nl/forum/showthread.php/556510-Formulier-in-php-Verkeerd-ingevult-alles-weg
 
Ik had die inderdaad al eeerst eens doorgenomen, echtaer snap ik het idee niet helemaal, ik heb hem ook geprobeerd toe te passen, maar mijn form verandert weer naar leeg:(

Heb t ook met session geprobeerd, maar dat werd ook geen succes...
 
En nu op maandag nog eens rustig naar gekeken, en je raadt het al, toegepast en werkend binnen 30 min.

Wederom is mijn dank groot!:thumb:
 
Hmmmm, toch nog niet helemaal , ik wilde het namelijk in een variabele proppen, want het zou zo kunnen zijn dat er een landje bij komt of afvalt, en ook klasses e.d zijn variabel.

Hoe zet ik dit fatsoenlijk in een variabele?
Ik kom nu zo ver dat hij het laatste id en de daarbij behorende naam ophaalt, en dus zet in t formulier.
 
Even een update,

Het lukt me nu om het in een variable te proppen, echter twijfel ik aan de correctheid hiervan, zou iemand hioer eens naar willen kijken?

PHP:
<?php
error_reporting(E_ALL ^ E_NOTICE);
//Haal gegevens op uit tabel accomodaties, hieronder checken we deze in het form tegen de afzonderlijke tabellen.
$sql = "SELECT * FROM accomodations";
$result = mysql_query($sql) or die(mysql_error());
    while ($record = mysql_fetch_assoc($result)) {
	    $acco=$record['accomodatieTypes'];
        $soortreis = $record['reisSoorten'];
		$countryid = $record['land_id'];
		$offer_price = $record['offer_price'];
		$sterren = $record['klasse'];
}
?>
	
	<form action="index.php?id=2" method="post"  id="form1">
 	  <table width="235" border="0">
        <tr>
          <td width="77">Bestemming:</td>
          <td width="235"><select name="country" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();">
		<?php 				//Haal waardes op uit tabel countries
							$query = mysql_query("SELECT * FROM countries ORDER BY naam ");
						while($record=mysql_fetch_array($query)) {
							$idland = $record['id'];
							$naamland = $record['naam'];
		
		?>
		<!-- Maak hier je Selectbox aan binnen de while, let op de accolade die je onder de select box pas sluit, met de if zorg je ervor dat je de geselecteerde waarde vasthoudt in het formulier-->
			<option value="<?php echo $idland; ?>" <?php if ( $_POST['country'] == $idland ): ?> selected="selected"<?php endif; ?>><?php echo $naamland;?></option>
			<?php } ?>
			<!--Indien niets geselecteerd, zet dan waardes op null, en geef dan alles weer, met uitzondering van hieronder gezette filters, wat je terugkrijgt-->
<option value="" <?php if ( $_POST['country'] == '' ): ?> selected = "selected" <?php endif; ?> disabled = "disabled" >-- Kies een land --</option>


		  </td>
        </tr>
		
        <tr>
          <td height="22">Sterren:</td>
          <td><select name='star' width="200"  STYLE="width: 160px" title="Aantal sterren" onchange="document.forms['form1'].submit();" >
		  <?php 
		  			 $query = mysql_query("SELECT * FROM klasse ");
  while($record=mysql_fetch_array($query)) {
			$naamklasse = $record['naam'];
			$idklasse = $record['id'];
			 ?>
			 
		  <option value="<?php echo $idklasse; ?>" <?php if ( $_POST['star'] == $idklasse ): ?> selected="selected"<?php endif; ?>><?php echo $naamklasse;?></option>
			<?php } ?>
		  	  
		  <option value="" <?php if ( $_POST['star'] == '' ): ?> selected = "selected" <?php endif; ?> disabled = "disabled" >-- Klasse --</option>
			</td>
        </tr>
      
	  <td height="22">Aanbieding:</td>
       <td><select name="aanbieding" width="200" STYLE="width: 160px"  title="aanbieding" onchange="document.forms['form1'].submit();">
	   <?php 
	   			 $query = mysql_query("SELECT * FROM aanbieding ");
  while($record=mysql_fetch_array($query)) {
			$aanbiedingnaam = $record['naam'];
			$aanbiedingid = $record['id'];
	   ?>
	   	
		<option value="<?php echo $aanbiedingid; ?>" <?php if ( $_POST['aanbieding'] == $aanbiedingid ): ?> selected="selected"<?php endif; ?>><?php echo $aanbiedingnaam;?></option>
		<?php } ?>		
		<option value="" <?php if ( $_POST['aanbieding'] == '' ): ?> selected = "selected" <?php endif; ?> disabled = "disabled" >-- Aanbieding? --</option>

	   </td>
			</tr>
			
			      <tr>
          <td height="22">Accomodatie:</td>
          <td><select name="acco" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();">
		  <?php
		  		$query = mysql_query("SELECT * FROM accomodatie_types ");
  while($record=mysql_fetch_array($query)) {
		$idtype = $record['id'];
		$naamtype = $record['name'];
		  ?>
		  <option value="%<?php echo $idtype; ?>%" <?php if ( $_POST['acco'] == $idtype ): ?> selected="selected"<?php endif; ?>><?php echo $naamtype;?></option>
		  <?php } ?>	
		  
		<option value="" <?php if ( $_POST['acco'] == '' ): ?> selected = "selected" <?php endif; ?> disabled = "disabled" >-- Soort Accommodatie --</option>

		  </td>
        </tr>
			
			
			      <tr>
          <td height="22">Verzorging:</td>
          <td><select name="verzorging" width="200" STYLE="width: 160px"  onchange="document.forms['form1'].submit();">
		  <?php 
		      	$query = mysql_query("SELECT * FROM reis_soorten ");
  while($record=mysql_fetch_array($query)) {
		$idverzorging = $record['id'];
		$naamverzorging = $record['name'];
		  ?>
		  <option value="%<?php echo $idverzorging ?>%" <?php if ( $_POST['verzorging'] == $idverzorging ): ?> selected="selected"<?php endif; ?>><?php echo $naamverzorging;?></option>
		   <?php } ?>
		  
		 <option value="" <?php if ( $_POST['verzorging'] == '' ): ?> selected = "selected" <?php endif; ?> disabled = "disabled" >-- Verzorging --</option>
	
		  </td>
        </tr>
		
</table>	  
<input type="submit" name="zoekland" id="search" value="Zoek" /> 
</form>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan