login  Naam:   Wachtwoord: 
Registreer je!
 Forum

ajax auto suggestie (Opgelost)

Offline Luc18 - 16/11/2010 16:51
Avatar van Luc18Onbekend Beste leden,

Ik heb een leuke auto suggestie script gedownload die er mooi uitziet. Maar nu loop ik tegen het volgende aan.

Hij is gebaseerd op arrays maar ik wil het via de database laten werken.

mijn database bestaat uit 4 velden: id,Name, village, country

Nu wil ik dus dat de auto suggest zodra je een naam invult, hij ook meteen de village, en county laat zien.

Hij moet verder precies hetzelfde werken als dat hij nu werkt, alleen dan enkel dus via een database met deze eisen.

dit is het script dat de suggestie afhandeld:

  1. <?php
  2.  
  3. // Alle users
  4. $aUsers = array("Naam1", "Naam2");
  5.  
  6. // Informatie
  7. $aInfo = array("Gevonden");
  8.  
  9. // de input
  10. $input = strtolower( $_GET['input'] );
  11.  
  12. // lengte van de input
  13. $len = strlen($input);
  14.  
  15. // de limiet (altijd 0)
  16. $limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 0;
  17.  
  18. // Alle resultaten in array
  19. $aResults = array();
  20.  
  21. // Beginnen met tellen
  22. $count = 0;
  23.  
  24. // Als $len gevuld is
  25. if ($len)
  26. {
  27. // voor alles vanaf $i=0 en zolang $i kleiner is dan alle users die gevonden zijn, i ophogen
  28. for ($i=0;$i<count($aUsers);$i++)
  29. {
  30. if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
  31. {
  32. $count++;
  33. $aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
  34. }
  35.  
  36. if ($limit && $count==$limit)
  37. break;
  38. }
  39. }
  40.  
  41.  
  42.  
  43.  
  44.  
  45. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
  46. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
  47. header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  48. header ("Pragma: no-cache"); // HTTP/1.0
  49.  
  50.  
  51.  
  52. if (isset($_REQUEST['json']))
  53. {
  54. header("Content-Type: application/json");
  55.  
  56. echo "{\"results\": [";
  57. $arr = array();
  58. for ($i=0;$i<count($aResults);$i++)
  59. {
  60. $arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"\"}";
  61. }
  62. echo implode(", ", $arr);
  63. echo "]}";
  64. }
  65. else
  66. {
  67. echo '';
  68. }
  69. ?>


Hopelijk kan iemand mij helpen.

8 antwoorden

Gesponsorde links
Offline Kevin - 16/11/2010 19:18
Avatar van Kevin Crew Ajax/REST Graag je code op http://www.plaatscode.be zetten.

Ik heb ooit eentje in native javascript uitgewerkt maar dit was ongeveer een 400 regels code.
Tegenwoordig als je met gebruik maakt van een JS lib zoals bv jQuery dan kan je dit vrij snel als plugin integreren.

Een voorbeeldje: http://jquery.bassistance.de/autocomplete/demo

Of google gerust eens naar: jQuery autocomplete plugin of jQuery autosuggest plugin
Offline Sam - 16/11/2010 19:31
Avatar van Sam PHP expert
ddReborn schreef:
Ik heb ooit eentje in native javascript uitgewerkt maar dit was ongeveer een 400 regels code.

Huh? Is dat niet wat veel voor zo iets relatief eenvoudig?

Je kan door middel van Ajax (met XMLHttpRequest [Sitemasters Tutorial]) een php pagina opvragen die de juiste gegevens uit de database haalt en in de inputveldjes zet, dat kan toch perfect in een lijn of 50 (JavaScript + PHP)?


Maar Luc18, ik snap niet goed wat je precies bedoelt. Je hebt en autocomplete script gedownload, dus dat is niet het probleem. Weet je niet hoe je een database aanmaakt of hoe je er gegevens uithaalt en ze in je script zet? Wees eens wat specifieker.
Offline Koen - 16/11/2010 19:34
Avatar van Koen PHP expert
Sam schreef:
[..quote..]
Huh? Is dat niet wat veel voor zo iets relatief eenvoudig?

Je kan door middel van Ajax (met XMLHttpRequest [Sitemasters Tutorial]) een php pagina opvragen die de juiste gegevens uit de database haalt en in de inputveldjes zet, dat kan toch perfect in een lijn of 50 (JavaScript + PHP)?


Maar Luc18, ik snap niet goed wat je precies bedoelt. Je hebt en autocomplete script gedownload, dus dat is niet het probleem. Weet je niet hoe je een database aanmaakt of hoe je er gegevens uithaalt en ze in je script zet? Wees eens wat specifieker.


Het hangt er natuurlijk net vanaf wat voor functionaliteit je allemaal in die autocomplete steekt. Die van google zal wel iets meer regels beslaan denk ik. 
Offline Sam - 16/11/2010 19:50
Avatar van Sam PHP expert
Koen schreef:
[..quote..]

Het hangt er natuurlijk net vanaf wat voor functionaliteit je allemaal in die autocomplete steekt. Die van google zal wel iets meer regels beslaan denk ik. 

Aan de server kant zal daar wat meer code achter steken, maar bij de client blijft het even simpel: resultaten opvragen aan de hand van input en deze weergeven op de pagina.
Offline valles10 - 16/11/2010 20:01
Avatar van valles10 HTML interesse Naja, we kunnen je allemaal wel suggereren jQuery plugins enz te gebruiken, maar om verder te gaan op JOUW script:

Je kan toch je resultaten uit je db als een array fetchen...?
prob opgelost.
Offline Luc18 - 17/11/2010 12:14
Avatar van Luc18 Onbekend Ik heb al de auto suggestie script. Enkel werkt deze via arrays, en ik wil hem laten werken via een database. Maar wanneer ik mijn database:

  1. $data = connectie()->query("SELECT * FROM leden");
  2. $aUsers = $data->fetch_array();


Werkt het zoeken niet meer. Dus mijn vraag was, of iemand dit script voor mij kan aanpassen zodat het werkt via een database.

Met vriendelijke groet,

Luc
Offline Sam - 17/11/2010 12:38
Avatar van Sam PHP expert
  1. $data -> fetch_array();

Geeft 1 array per lid. Op jouw manier krijg je dus alle gegevens van het eerste lid en dat zal waarschijnlijk niet werken.

Op deze manier (of gelijkaardig) zou het wel moeten werken (als de rest van je code klopt natuurlijk):
  1. while($user = $data -> fetch_array())
  2. {
  3. $aUsers[] = $user['login'] //Verander login door het juiste veld in je database
  4. }
Bedankt door: Luc18
Offline Luc18 - 17/11/2010 13:01
Avatar van Luc18 Onbekend Hartstikke bedankt.

Ik deed net dit:

  1. while($user = $data->fetch_assoc())
  2. {
  3. $aUsers = [$user['login']];
  4. }


Maar dat werkte niet, en de jouwe wel

Bedankt
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.236s