Ik ben bezig met een database in MySQL om daar in mijn dvd collectie in op te slaan.
Nu heb ik een tabel movies met daarin onder meer de veldnamen title en year.
Nu kan ik met een simpele select query heel makkelijk gaan zoeken op titel:
zoals je ziet heb ik het zo aangepast dat er ook op delen van de titel wordt gezocht. Dit vind ik makkelijk omdat ik zo alles kan opzoeken met bijvoorbeeld 'jack' (welke mij bijvoorbeeld zowel 'jackass the movie' als 'kangaroo jack' zouden opleveren.)
Zover nog geen problemen. Met behulp van een form kan ik op de website ingeven waarop er gezocht moet worden.
de hidden input type met de naam dosearch gebruik ik om in het PHP scriptje wat onder deze form hangt te beslissen of ik moet zoeken ja of nee. (met behulp van een IF statement)
Dit loopt allemaal als een trein, de output wordt netjes in een tabel weggeschreven op het scherm.
Alleen dan nu het probleem:
Ik zou graag ook willen zoeken op jaar. In mijn oneindige onnozelheid heb ik vervolgens het form aangepast tot:
maar toen begonnen de problemen. Want ik heb nu geen idee hoe ik mijn select query hierop moet aanpassen. Ik zou graag met 1 query willen werken, maar ik weet niet of dat haalbaar is.
Er zijn nu nog maar drie mogelijkheden
• Alleen de titel of een gedeelte daarvan is ingevuld
• Alleen een jaar is ingevuld
• Beide velden worden in zijn geheel of gedeeltelijk ingevuld
En hier loopt het even stuk.
Ik ga liever niet uitzoeken welke variabelen wel en welke niet gevuld zijn om zo verschillende SQL's aan te bieden.
Nu hebben we er nog maar 3, maar wanneer ik ook op genre wil zoeken worden dit wel heel veel SQL statements.
Naar mijn idee moet dit makkelijker kunnen, probleem is dat ik niet weet hoe.
Net bedacht: wanneer een variabele leeg is vul daar een % voor in. Dit is een wildcard, dus alle records moeten hier in voorkomen. Geen idee of het werkt, maar even testen.
Nu heb ik een tabel movies met daarin onder meer de veldnamen title en year.
Nu kan ik met een simpele select query heel makkelijk gaan zoeken op titel:
PHP:
1
2
| $query = "select * from movies where title like '%$title%'"; $result = mysql_query($query) or die(mysql_error()); |
zoals je ziet heb ik het zo aangepast dat er ook op delen van de titel wordt gezocht. Dit vind ik makkelijk omdat ik zo alles kan opzoeken met bijvoorbeeld 'jack' (welke mij bijvoorbeeld zowel 'jackass the movie' als 'kangaroo jack' zouden opleveren.)
Zover nog geen problemen. Met behulp van een form kan ik op de website ingeven waarop er gezocht moet worden.
HTML:
1
2
3
4
5
6
7
| <div> <form method="post" action=""> Title of movie: <input type="text" name="title" size="14" /><br /> <input type="hidden" name="dosearch" value="yes" /> </form> </div> |
de hidden input type met de naam dosearch gebruik ik om in het PHP scriptje wat onder deze form hangt te beslissen of ik moet zoeken ja of nee. (met behulp van een IF statement)
Dit loopt allemaal als een trein, de output wordt netjes in een tabel weggeschreven op het scherm.
Alleen dan nu het probleem:
Ik zou graag ook willen zoeken op jaar. In mijn oneindige onnozelheid heb ik vervolgens het form aangepast tot:
HTML:
1
2
3
4
5
6
7
8
9
| <div> <form method="post" action=""> Title of movie: <input type="text" name="title" size="14" /><br /> Year of movie: <input type="text" name="year" size="14" /><br /> <input type="hidden" name="dosearch" value="yes" /> </form> </div> |
maar toen begonnen de problemen. Want ik heb nu geen idee hoe ik mijn select query hierop moet aanpassen. Ik zou graag met 1 query willen werken, maar ik weet niet of dat haalbaar is.
Er zijn nu nog maar drie mogelijkheden
• Alleen de titel of een gedeelte daarvan is ingevuld
PHP:
1
2
| $query = "select * from movies where title like '%$title%'"; $result = mysql_query($query) or die(mysql_error()); |
• Alleen een jaar is ingevuld
PHP:
1
2
| $query = "select * from movies where year = 'year'"; $result = mysql_query($query) or die(mysql_error()); |
• Beide velden worden in zijn geheel of gedeeltelijk ingevuld
PHP:
1
2
| $query = "select * from movies where title like '%$title%' and year = 'year'"; $result = mysql_query($query) or die(mysql_error()); |
En hier loopt het even stuk.
Ik ga liever niet uitzoeken welke variabelen wel en welke niet gevuld zijn om zo verschillende SQL's aan te bieden.
Nu hebben we er nog maar 3, maar wanneer ik ook op genre wil zoeken worden dit wel heel veel SQL statements.
Naar mijn idee moet dit makkelijker kunnen, probleem is dat ik niet weet hoe.
Net bedacht: wanneer een variabele leeg is vul daar een % voor in. Dit is een wildcard, dus alle records moeten hier in voorkomen. Geen idee of het werkt, maar even testen.
offtopic:
pff, wat een lap tekst
pff, wat een lap tekst
[ Voor 10% gewijzigd door Schonhose op 22-04-2004 13:56 ]
"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005