ALs beginnent programmeur ben ik op een klein probleempje gesteut omdat mijn zoekfunctie niet goed werkt.
Mijn zoekfunctie bestaat uit twee pagina's één is de zoekpage en twee is de resultpage.
Na testen maakt het niets uit wat ik intype in mijn zoekveld. Krijg de volgende resultaten.
name="q" Geeft alle resutaten uit de database
Sleutelend aan de '%%' kom ik er ook niet uit.
Begin met lezen over "prepared statements" want je huidige script is bijzonder gevoelig voor SQL injectie en dat is echt gevaarlijk. Als je toch nog aan het leren bent dan zou ik ook meteen overstappen op PDO, dat is een wat meer gestandaardizeerde manier van werken met databases.
Verder doe je nog niets aan foutcontrole, dus zelfs als de query hopeloos faalt, dan kom jij dat nooit te weten. De handleiding van mysqli legt uit hoe je kunt controleren of de query gelukt is, maar, wederom, PDO doet dat net even wat netter.
Had je de query al handmatig uitgeprobeerd via iets als phpmyadmin?
Bedankt voor je reactie. Wellicht dat ik nu de verkeerde manier hanteer, daar moet ik nog een gevoel bij creeren. de SQL infectie wil ik op later moment gaan toevoegen. Hier heb ik nog wat oefening voor nodig.
Bedankt voor deze feedback.
De query $search daarentegen doet het in de MySQL database gewoon.
Aangezien ik voor mijn gevoel de juiste linken aanmaak snap ik niet wat er verkeerd gaat.
Als ik '%$q%' gebruik krijg ik een 'unknown varibale q in ....' warning.
In de searchpage schrijf ik de 'q' weg. Deze pak ik op op de resultpage. Maar gaat het dan daar fout?
Correct!
Wat je in je formulier in <input name="q"> in vult, komt niet standaard in $q naar in $_POST['q'] of $_GET['q'], afhankelijk van of je method post of get is.
Oke! die begrijp ik niet helemaal Ramon. nu gebruik ik de GET method met de input name='q'
Ik ga er vanuit dat als ik iets invul deze waarde de 'q' vertegenwoordigd en wordt doorgegeven naar mijn tweede page resultpage.
Ik ben nu even bezig geweest met de tips van boven.
Toegevoegd heb ik de code $sth van Pg Vincent. hieruit kom ik voor de volgende uitdaging, namelijk:
Het eerste punt is eenvoudig: eerder op de pagina controleer je netjes $_GET['q'], die moet je ook in je query gebruiken. $q bestaat niet.
Het tweede punt: wat Vincent gaf was een voorbeeld, welke je zelf moet uitwerken dmv het maken van een databaseverbinding met PDO etc. Een vraag die ik wel heb, is dat je aangeeft dat "Notice: undefined variable: dbh" in zou houden dat je $this->dbh moet gebruiken. Waarom zou dat zo zijn/wie heeft je dat wijsgemaakt?
Wat ik postte was inderdaad alleen een voorbeeldje van hoe het er uit zou zien met PDO, geen copy/paste oplossing.
Voor meer informatie over hoe je met PDO werkt kun je beter een tutorial doornemen. zie b.v. http://www.phptuts.nl/view/27/5/
maar ook de PHP handleiding, waar mijn stukje uit komt, bevat alle informatie die je nodig hebt (zij het in een wat minder hapklare-brokken formaat).