Soort van zoekfunctie

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Is er binnen php ook de mogelijkheid om bij het invoerveld, telkens als je een letter toevoegd, middels de database door te lopen zodat je in het tekstveld alle woorden ziet die overeenkomen met wat je intikt.
Voorbeeld: je tikt een a dan zie je alle woorden beginnend met ‘a’ . Tik je daarnaast de k, dan alle woorden met ‘ak’.
Zo ja, Is er iemand die mij op weg kan helpen, codematig
 
Dat heet een autocomplete..
Bij elke toetsaanslag (of vaak na een bepaald aantal tekens) doet het een request naar een PHP-script die de resultaten doorgeeft.

Ik denk dat je hier wel verder mee kan. het zit ook in jQueryUI, de extentie van de jQuery library met visuele leuke user interface dingetjes. :)

Zoiets als dit, bedoel je?
https://jqueryui.com/autocomplete/
 
Laatst bewerkt:
Een directe controle of iets in een database staat, is net wat anders dan een autocomplete. ;-)

Klopt:cool:

Maar het was ook een beetje een voorbeeld om bepaalde inhoud uit een database te controleren, misschien dat TS dit kan ombouwen naar wat hij precies wilt :thumb:
 
Misschien kan je hier iets mee. Voor autocomplete is best veel code nodig, zowel Javascript als php. Ik weet niet of je jQuery gebruikt daarom heb ik Vanilla Javascript (jQuery niet nodig) in de bijlage gedaan. Omdat Javascript niet direct in de database kan kijken moet er gebruik worden gemaakt van ajax (zit al in bestand autocomplete.js). Je kan de bestanden in de bijlage als een aparte pagina testen, alleen wat dingen bovenaan bestand autocomplete_query.php invullen (config database). Suc6.
 

Bijlagen

  • autocomplete.zip
    4,7 KB · Weergaven: 29
Laatst bewerkt:
Misschien kan je hier iets mee. Voor autocomplete is best veel code nodig, zowel Javascript als php. Ik weet niet of je jQuery gebruikt daarom heb ik Vanilla Javascript (jQuery niet nodig) in de bijlage gedaan. Omdat Javascript niet direct in de database kan kijken moet er gebruik worden gemaakt van ajax (zit al in bestand autocomplete.js). Je kan de bestanden in de bijlage als een aparte pagina testen, alleen wat dingen bovenaan bestand autocomplete_query.php invullen (config database). Suc6.



geeft helaas een foutmelding in phpcode:
$a = [];


$a = [];
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
array_push($a, $row[$field]);
}
}
 
Laatst bewerkt:
En vanwaar de geheimzinnigheid over de foutmelding? :)
Nu weten we nog niet op welke lijn van de zes dit is, en wat er gebeurt.
 
Laatst bewerkt:
Sorry PHP4U
Ik maak gebruik van PHP Designer voor de code.
Maar in de autocomplete_query.php op regel 26 geeft deze een error.
Op deze regel staat de code $a = [];
In PHP Designer wordt dit aangegeven met een rode streep, daar waar een error is.
Ik kan het programma wel draaien maar er gebeurt niets.
 
Update PHP Designer eens zodat hij de PHP7 syntax kent.
Welke PHP draai jij volgens phpinfo()?
 
Heel apart. Vanaf php 5.4 is $a = []; valide php code :confused:
Weet je zeker dat het php 7.x is want bij mij werkt het zonder foutmelding.

Bij php 5.3 en ouder kan je dit gebruiken
Code:
$a = array();

Net even gecontroleerd, het werkt met dit resultaat

ac-screenshot.jpg

Heb je de DB gegevens ingevuld in autocomplete_query.php ?
Gebruik je misschien een andere tabel dan de voorbeeld tabel?
 
Laatst bewerkt:
PHP Designer 8.1.2
PHP versie 7.1.9

Via Localhost (wampserver) 7.1.9
En nu run ik hem met PHPDesigner is het PHP 5.3.3
Misschien dat jij het weet hoe ik PHPDesigner de nieuwste versie van PHP kan laten lezen.
Bij 5.3.3 geen error met gebruik van $a = array();. Maar er gebeurt dan niets.
 
Laatst bewerkt:
Ik ken PHP Designer niet, maar kan je die niet ergens instellen op PHP 7.1 ?

Zet anders je error reporting aan. Misschien staat die uit waardoor je geen errors ziet.
 
Net mijn post #13 aangevuld met wat vragen.

Raar dat deze php editor (klik) voorzien is van php 5
Bekijk de uitgebreide gratis VS-Code (klik) eens, misschien een beter alternatief.
 
Laatst bewerkt:
@Bron
Ik krijg de indruk dat wanneer ik iets in het tekstveld invoer, niet wordt door gestuurd naar autocomplete.query.php.
Nu even een tijd mee bezig geweest. Run ik de autocomplete.query.php dan zie ik wel de namen te voorschijn komen.
heb hem even online gezet http://sassiesstyle.nl/test/
 
Laatst bewerkt:
Als ik het php bestand rechtstreeks benader dan krijg ik een db connectie fout
Undefined variable: db_host in /test/autocomplete_query.php on line 19

Omdat regel 19 niet overeen komt met de db connectie in mijn voorbeeld heb je autocomplete denk ik in een ander php bestand verwerkt. Controleer je db connectie vanuit het php bestand: host, user, pass en db name.

Edit:

Doe het volgende om de php te testen
Code:
$q = trim(strtolower($q));
[B]$q = 'ja';[/B]  // tijdelijke regel voor test

[B]//[/B]   echo json_encode($a);
[B]print_r($a);[/B] // tijdelijke regel voor test

en browse dan naar /test/autocomplete_query.php
Als het goed is krijg je een paar resultaten te zien die beginnen met "ja"
 
Laatst bewerkt:
Ik krijg met runnen van de autocomplete_query.php alles te zien
de query alsmede de key en namen.
Met de index.php gebeurt er niets.
PHP:
PHP versie: 5.5.38   SELECT name FROM users WHERE LOWER(users.name) LIKE '%'   Array ( [0] => Apple Doe [1] => Charles Doe [2] => Charlie Doe [3] => Coby Kelleigh [4] => Drake Adelaide [5] => Frank Doe [6] => Imogene Thad [7] => Jan Doe [8] => Jane Doe [9] => Jaslyn Keely [10] => Jazz Doe [11] => Joanne Doe [12] => Joe Doe [13] => Johan Doe [14] => John Doe [15] => Orange Doe [16] => Peers Sera [17] => Richard Breann [18] => Rusty Terry [19] => Tillie Sharalyn )
 
Dat is een flinke stap. De db connectie is goed en de query geeft een resultaat.
Nu de comment wegaheln bij
Code:
echo json_encode($a);

De id van de input moet goed worden ingevuld
Code:
suggest.attach({
  target : 'username',            // id van <input>
  url : 'autocomplete_query.php', // controleer in dit bestand
  delay : 300,                    // uitklap vertraging in msec
  min : 2                         // minimaal 2 letters typen
});
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan