login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zoeken

Offline gothmog - 24/09/2006 15:54
Avatar van gothmogLid Ik heb even jullie hulp nodig, want ik kom hier niet uit:
Ik wil mensen laten zoeken naar een huis, dit door gegevens in te vullen (bijv. land, oppervlakte, plaats, aantal kamers etc.)
Maar als ze een veld leeg laten, moet hier dus niet op gezocht worden.

Nu weet ik dus niet hoe ik dit moet doen, want ik heb nu dit:
  1. $selectzoek=mysql_query("SELECT * FROM huizen WHERE ".if($land) { ."land='".$land."'".}."") or die(mysql_error());


Maar nu moet ik een AND toevoegen, voor als er ook oppervlakte bij komt. Maar als er verder niks bijkomt, moet er geen AND bijkomen.
Heeft iemand een makkelijke oplossing?

THNX,
Sven

4 antwoorden

Gesponsorde links
Offline MechaVore - 24/09/2006 16:04
Avatar van MechaVore Gouden medaille

PHP gevorderde
ik heb weinig tijd, ff snel gelezen.. Maar je zou dit natuurlijk ook op kunnen lossen door een fake iets ervoor te kunnen zetten

vb:
WHERE 1=1 AND blalbalbla
Offline zamna - 24/09/2006 16:53
Avatar van zamna HTML beginner gothmog, heb zelf ook eens gelijkaardige zoekfunctiegemaakt en deed het ook op jouw manier. Ik zou niet weten of het sneller kan. Ik ben altijd benieuwd naar de oplossing voor mensen die het wel zouden weten. 
Offline marten - 25/09/2006 12:43
Avatar van marten Beheerder Je kan hier heel makkelijk dynamische query's voor gebruiken (Als je php 5 hebt).

Wanneer ik vanavond thuis kom zal ik hier wel even een voorbeeld plaatsen
Offline Thomas - 25/09/2006 13:03 (laatste wijziging 25/09/2006 13:03)
Avatar van Thomas Moderator Wat is het probleem met stap voor stap de query-string opbouwen?

Moet ik wel een aantal dingen weten:
- Waar komt de informatie vandaan? $_POST? Gebruik dan $_POST!
- Staan namen van landen letterlijk in je database? Het is misschien verstandiger om een lijst van landen in een aparte tabel op te slaan, zodat je hier via nummers (minder spellingsfouten-gevoelig) naar kunt verwijzen.

Er van uitgaande dat je informatie uit een formulier komt, en landen niet als nummers zjin opgeslagen:
  1. <select name="land">
  2. <option value="">maakt niet uit</option>
  3. <option value="Belgie">België</option>
  4. <option value="Nederland">Nederland</option>
  5. ... et cetera ...
  6. </select>


Query bouwen:
  1. <?php
  2. // als het formulier gesubmit is
  3. if(isset($_POST['submit']))
  4. {
  5. // zoekargument gebruikt? Dit voor WHERE en AND enzo
  6. $arg = false;
  7.  
  8. // querystring
  9. $qry = "SELECT * FROM huizen ";
  10. $qry .= "WHERE ";
  11.  
  12. // is er een land geselecteerd?
  13. if($_POST['land'] != "")
  14. {
  15. $arg = true;
  16. // let op de "." !
  17. $qry .= "land = '".addslashes($_POST['land'])."' "; // let op spatie aan het einde!
  18. }
  19.  
  20. /*
  21.   hier eventueel nog andere argumenten, controleer met $arg
  22.   of je er "AND" aan toe moet voegen
  23.   */
  24.  
  25. /*
  26.   zijn er nog geen argumenten? Voeg "1 = 1" toe om de query
  27.   kloppend te houden ivm WHERE
  28.   */
  29. if(!$arg) $qry .= "1 = 1";
  30.  
  31. // $qry bevat nu je query
  32. }
  33. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.486s