query uitvoeren op basis van <option>

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Beste,

wat zie ik hier over het hoofd?
Ik wil dus een selectie maken op land, waarin dus de sql query zich aan moet passen naar wat ik in de select aangeef?

PHP:
<?php
if (isset ($_POST['zoekland'] )) {
$query="SELECT * FROM reizen_aanbod WHERE land='".$_GET['Landen']."' ";
        //query uitvoeren
        $result = mysql_query($query) or die(mysql_error());
        while ($record = mysql_fetch_array($result)) {
            $titel = $record['titel'];
            $prijs = $record['prijs'];
            $sterren = $record['sterren'];
            $tekst = $record['tekst'];
            $aanbieding = $record['aanbieding'];
            $soort = $record['soort'];
            $accommodatie = $record['accommodatie'];
            $land = $record['land'];
         
  
   echo $titel; 
   echo "<br />";
   echo $prijs ; 
   echo $sterren; 
   echo $tekst ;
   echo $aanbieding ;
   echo $soort ;
   echo $accommodatie ;
   echo $land  ; 
   echo "<br />" ;
  }
  
  }echo $query;
  ?>
  
  <form id="form1" name="form1" method="post" action="">
  <label>
  <select name="Landen" id="Landen">
	<option value="Aruba">Aruba</option>
    <option value="Bonaire">Bonaire</option>
    <option value="Curacao">Curacao</option>
    <option value="Suriname">Suriname</option>
    <option value="Jamaica">Jamaica</option>
    <option value="Saba">Saba</option>
  </select>
  </label>
  <input type="submit" name="zoekland" id="zoekland" value="Submit" />
</form>
 
Principe is goed hoor.

Krijg je notices? Wat gebeurd er? Druk je op "enter" of klik je op de knop?

Je kunt beter $_SERVER['REQUEST_METHOD'] == 'POST' gebruiken om te kijken of een formulier ingezonden is, is betrouwbaarder.

Zorg dat je alle kleine foutjes en opmerkingen van je server toont:

PHP:
error_reporting( E_ALL );
 
hmmm ik dacht al zoiets...
ik krijg verder geen notices, niks.

Als ik de query echo, krijg ik dit:
Testje
456461vmnbvjerfhvjbervojuirebuverjJaTrouw/HuwelijksreisAppartement/Bungalow/VillaAruba
SELECT * FROM reizen_aanbod WHERE land='Aruba' Amsterdam Manor
14595tjonge jongeJaTrouw/HuwelijksreisHotelAruba
SELECT * FROM reizen_aanbod WHERE land='Aruba'

(2 records die er momenteel in staan.)

ik ga de andere methode voor controle nu eens proberen
 
euhm, nou de query was in eerste instantie leeg waneer ik hem echoode, althans je kreeg dan de query where land=".
En nu echoot hij de query niet eens meer..

Edit, bij de eertse keer benaderen, pakt hij goed het land op nu, echter maak ik voor de tweekde keer een keuze, dan houdt hij vast aan het eertse land wat ik selecteerde.
Ik heb nu:
PHP:
<?php
error_reporting( E_ALL );

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$query="SELECT * FROM reizen_aanbod WHERE land='".$_POST['Landen']."' ";
        //query uitvoeren
        $result = mysql_query($query) or die(mysql_error());
        while ($record = mysql_fetch_array($result)) {
            $titel = $record['titel'];
            $prijs = $record['prijs'];
            $sterren = $record['sterren'];
            $tekst = $record['tekst'];
            $aanbieding = $record['aanbieding'];
            $soort = $record['soort'];
            $accommodatie = $record['accommodatie'];
            $land = $record['land'];
         
  
   echo $titel; 
   echo "<br />";
   echo $prijs ; 
   echo $sterren; 
   echo $tekst ;
   echo $aanbieding ;
   echo $soort ;
   echo $accommodatie ;
   echo $land  ; 
   echo "<br />" ;
 
  }
    
  }  echo $query;
  
  ?>
  
  <form id="form1" name="form1" method="post" action="">
  <label>
  <select name="Landen" id="Landen">
	<option value="Aruba">Aruba</option>
    <option value="Bonaire">Bonaire</option>
    <option value="Curacao">Curacao</option>
    <option value="Suriname">Suriname</option>
    <option value="Jamaica">Jamaica</option>
    <option value="Saba">Saba</option>
  </select>
  </label>
  <input type="submit" name="zoekland" id="zoekland" value="Submit" />
</form>
 
Laatst bewerkt:
Ik ben nog niet helemaal goed in PHP met MySql maar wat opvalt is dat de ACTION in de FORM leeg is.

Dat zou geen bezwaar moeten zijn maar bij het doorgeven van de querystring kan dat misschien toch een probleem zijn, ook al ga je naar de "current page".
 
Hmmm ik kan me zo niet bedenken wat anders in te moeten vullen...
volgens mij hoort ie gewoon "leeg" te zijn...

Wat er gebeurt is heel inconsistent, de ene keer krijg ik een echo terug van de query de nadere keer niet.
Als ik er een terug krijg, pakt hij daarna niets meer als ik een andere waarde uit de slect box selecteer.
 
Even een update, De code die ik gemaakt heb, werkt vanaf het begin al.
Het probleem zit hem in iets van Modx, waarin ik hem in mij Template aanroep.

Op de een of andere manier zet hij een waarde dan vast....
Met Stomheid geslagen zoek ik verder naar het probleem.
 
Hmmm ik kan me zo niet bedenken wat anders in te moeten vullen...
volgens mij hoort ie gewoon "leeg" te zijn...

je zou dan de naam van het script waarin de FORM staat invullen.

mijn voorkeur zou zijn om in ieder geval de method="POST" te gebruiken en de $_POST-variabele.

Wat je nog kan doen is de POST-variabele voordat het de SQL-string ingaat eerst in een gewone variabele te stoppen en die variabele dan in de SQL te gebruiken. Wat dan wel belangrijk is daarbij om voor de zekerheid die nieuwe variabele eerst initieel leeg te maken.
 
Dank je voor het meedenken, echter zoals ik al aangaf, moet het probleem ergens in modX zitten(algemeen in MODX, heb hem op 3 versie getest.

Wanneer ik mijn script buiten ModX aanroep doet hij het als een trein en exact dat wat ik van hem vraag...

Het is net of er iets wordt gecached na het eerste keer oproepen van een land, daarna blijft hij mij query echo uitspugen...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan