login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Postcodes zoeken op eerste 2 karakters

Offline Petrolleken - 04/02/2006 19:13
Avatar van PetrollekenNieuw lid Hallo iedereen,

Volgend probleem stelt zich:
Ik heb een tabel "vestigingen" die adressen en postcodes bevat.
Op de site vult iemand een gemeente in en vervolgens worden de vestigingen uit de tabel weergeveven.

Nu zou ik echter de dichtsbijzijnde vestigingen (uit tabel) willen weergeven zien. Ik zou daarom de eerste 2 cijfers van de postcode willen vergelijken met de postcodes in de tabel. Bijvoorbeeld: iemand vult "Gent" (postcode 9000) in. Elke vestiging waarvan de postcode begint met 90.. ligt dan in de buurt.

Hoe werk ik dat concreet uit?

Tx

Jan 

7 antwoorden

Gesponsorde links
Offline Tuinstoel - 04/02/2006 19:26
Avatar van Tuinstoel PHP expert Met een MySQL query? Dan zou je LIKE kunnen gebruiken.
  1. SELECT * FROM vestigingen WHERE postcode LIKE '90%'

De % is een soort van wildcard, alles wat dus na die 90 komt maakt niet uit.
Offline Petrolleken - 04/02/2006 20:00 (laatste wijziging 06/02/2006 22:37)
Avatar van Petrolleken Nieuw lid OK alvast bedankt. Heb deze uitgebrobeerd en lukt uitstekend maar hoe verwerk ik dat in onderstaand script? De mensen kiezen de gemeente op naam en niet op postcode.
Het is de bedoeling dat het onderstaand blijft maar dat ze, na de uitvoering ervan, kunnen kiezen op "de twee eerste karakters van de postcode"...
  1. <?
  2. include('inc.php');
  3. //functies
  4. include ("login/functies.php");
  5. //session includen
  6. include ("login/session.php");
  7. ?>
  8.  
  9. <html>
  10. <head>
  11. <title></title>
  12. <link rel="stylesheet" href="style.css">
  13. </head>
  14.  
  15. <body topmargin="0" leftmargin="20">
  16. <table cellSpacing="0" cellPadding="0" border="0" width="100%">
  17. <tr>
  18. <td class="topshell">&nbsp;</td>
  19. </tr>
  20. <tr>
  21. <td width="100%" class="titel">Vergelijk de prijzen</td>
  22. </tr>
  23. <tr>
  24. <td class="bottomshell">&nbsp;</td>
  25. </tr>
  26. <tr>
  27. <td width="100%">
  28. <table cellSpacing="0" cellPadding="0" border="0" width="100%">
  29. <tr>
  30. <td class="inhoud" width="100%">
  31. Vul de nodige gegevens in en kom te weten welke vestiging het goedkoopst is.<br><br><br>
  32.  
  33. <a href="wijzigingen/verdeler.php">Om een nieuwe vestiging toe te voegen, kan u hier terecht.</a><br>
  34.  
  35. <form action='vergelijk.php' method='get'>
  36. <table cellSpacing="0" cellPadding="0" border="0" width="100%">
  37. <tr>
  38. <td class="inhoud">
  39. Merk :
  40. </td>
  41. <td valign="bottom">
  42. <input type="text" size="20" name="merk"> <font face="Verdana" color="black" size="1"></font>
  43. </td>
  44. </tr>
  45. <tr>
  46. <td class="inhoud">
  47. Product :
  48. </td>
  49. <td valign="bottom">
  50. <select name="product" class="select" STYLE="width:142">
  51. <?
  52. if(mysql_select_db($db, $link)) {
  53. $product = mysql_query("SELECT prod_id,product FROM off_prijzen WHERE archief='new' limit 0,4", $link);
  54. while($query_data = mysql_fetch_row($product)) {
  55. echo "<option value='$query_data[0]'>".$query_data[1]."</option>";
  56. }
  57. ?>
  58. </select>
  59. </td>
  60. </tr>
  61. <tr>
  62. <td class="inhoud">
  63. Gemeente :
  64. </td>
  65. <td valign="bottom">
  66. <select name="regio" class="select" STYLE="width:142">
  67. <option value="">Overal...</option>
  68. <?
  69. $regio = mysql_query("SELECT gemeente FROM verdelers group by gemeente order by gemeente", $link);
  70. while($query_data = mysql_fetch_row($regio)) {
  71. echo "<option value='$query_data[0]'>".$query_data[0]."</option>";
  72. }
  73. }
  74. ?>
  75. </select>
  76. </td>
  77. </tr>
  78. <tr>
  79. <td valign="top">
  80. <hr>
  81. </td>
  82. <td valign="middle">
  83. <hr>
  84. <input type="submit" name="s1" value="Vergelijk">
  85. </td>
  86. </tr>
  87. </table>
  88. </form>
  89. </td>
  90. </tr>
  91. </table>
  92. </td>
  93. </tr>
  94. </table>
  95. </p>
  96. <hr>
  97. <table border="0" width="100%">
  98. <tr>
  99. <td width="100%">
  100.  
  101. </tr>
  102. </table>
  103. </body>
  104. </html>


Citaat:
Opmerking door Haytjes:
gebruik [code]-tags
Offline timo - 04/02/2006 20:05 (laatste wijziging 04/02/2006 20:06)
Avatar van timo PHP ver gevorderde code tags = what we love

maar k zal ff kijken ernaar.... zie me edit...

EDIT die niet egt telt : bij welke query moet er op postcode gezocht worden? dat is mij nogal onduidelijk...
Offline Petrolleken - 04/02/2006 20:26
Avatar van Petrolleken Nieuw lid Zal het probleem ff anders stellen....

Wanneer in voorgaand script bv als gemeente "Gent" wordt aangeklikt (uit tabel) en vervolgens op "vergelijk" dan krijgen we als resultaat alle vestigingen in "Gent". Nu is het de bedoeling om op die pagina de mensen de mogelijkheid te bieden om iets verder te zoeken. Daarmee bedoel ik, het resultaat "Gent" verder uitbreiden en ik wil de vestigingen weten in de buurt van Gent. Het beste zou zijn de eerste twee karakters van de postcode daarvoor gebruiken.

Wanneer dan verder gezocht wordt, krijg ik 9000 Gent maar ook 9030 Wondelgem, 9050 Zwijnaarde enz...

SELECT * FROM vestigingen WHERE postcode LIKE '90%'. Die '90%' moet dus vervangen worden door de eerste twee karakters van de postcode van de opgevraagde gemeente.

Maar hoe kan ik dat fiksen?

Jan
Offline timo - 04/02/2006 20:29
Avatar van timo PHP ver gevorderde dan moet je van elke gemeente opzoeken waar de postcode mee begint, en dan 2 WHERE's doen: (en een tabel aanmaken waar de 1e 2 met een % worden opgeslagen per gemeente)
SELECT * FROM vestigingen WHERE gemeente='".$gemeente(ergens vandaag gehaalt, andere nieuwe query)."' AND postcode LIKE '".$postcode(zelfde verhaal als gemeente)."'
Offline Petrolleken - 06/02/2006 20:18
Avatar van Petrolleken Nieuw lid @ timo:

Ik snap het niet echt zulle...
1. Wat bedoel je met "...ergens vandaag gehaalt, andere nieuwe query..."
2. Je spreekt van twee WHERE's ?????

Jantie
Offline haytjes - 06/02/2006 23:18 (laatste wijziging 06/02/2006 23:20)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
ik zou er voor kiezen, om de bovenstaande code aan te passen in:
  1. <select name="regio" class="select" STYLE="width:142">
  2. <option value="">Overal...</option>
  3. <?
  4. $regio = mysql_query("SELECT gemeente,postcode FROM verdelers group by gemeente order by gemeente", $link);
  5. while($query_data = mysql_fetch_row($regio)) {
  6. echo "<option value='$query_data[1]'>".$query_data[0]."</option>";
  7. }
  8. }
  9. ?>
  10. </select>

zodat je bij "vergelijk.php" de postcode krijgt, en dat je dus direct het volgende kan doen:

  1. <?
  2. $postcode = substr($_POST['regio'],0,2); // de eerste 2 cijfers van de postcode nemen
  3. $regio = mysql_query("SELECT * FROM vestigingen WHERE postcode LIKE '".$postcode."%'", $link);
  4. while($query_data = mysql_fetch_row($regio))
  5. {
  6. ... // hier krijg je dan alle nabije regios
  7. }
  8. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s