Avatar billede TimoMeM Nybegynder
15. marts 2010 - 23:03 Der er 4 kommentarer

PHP opskrift, Søg på bestemte ingredienser

Jeg står og skal bruge lidt hjælp med og lave et bestemt søge script

Et script der virker ligesom nedenstående link´s

http://www.drinksdatabasen.dk/toem_barskab/
http://www.dk-kogebogen.dk/opskrift2/soeg.php

Jeg har selv prøvet og side og lege med det, men jeg er helt fortabt

er der nogen der kan guide mig lidt, evt. smide et lille hjælpe script
Avatar billede public2 Nybegynder
15. marts 2010 - 23:25 #1
Jeg er ikke helt sikker på hvordan de to sider har skruet deres queries sammen, men jeg forestiller mig f.eks. at bruge LIKE statementet eller en Wildcard søgning i databasen.

F.eks. i en opskrift beskrivelse:

SELECT recipe_name FROM recipies WHERE description LIKE '%chili%'

så vil den returnere alle de opskrifter hvor ordet "chili" indgå i.

I hvert fald et bud på hvordan det kan laves.

En anden mulighed kunne evt. være, i f.eks. drinks-databasen, at alle spiritus, non-alcohol og andet har en række og så kan hver opskrift lave en "false" eller "true" alt efter om de har ingrediensen og så kan man så køre en query om at returnere alle de opskrifter hvor "vodka" er "true".

Rent performancemæssigt ved jeg ikke om det er den mest optimale metode, men en anden tanke om hvordan det i hvert fald kan gøres.
Avatar billede repox Seniormester
16. marts 2010 - 08:37 #2
Generelt er ikke literære søgninger i databasen performancemæssigt et rigtig skidt valg.

Det handler om at have et godt tabelsetup med god normalisering.
Eksempelvis vil det kunne betale sig at dele en opskrift op minimum tre tabeller. En tabel med ingredienser og en tabel med navn, beskrivelse og hvad der ellers hører sig til.

Selve opskrifterne:
+------------+---------------------------------+----------------------+
| opskriftId | oNavn                          | oBeskrivelse        |
+------------+---------------------------------+----------------------+
|        12 | Kylling i Cola                  | Forsteg kyllinger... |
|        458 | Flæskesteg                      | Skær sværene ned ... |
|        365 | Hvidløgsroast                  | Hak hvidløget i s... |
|        79 | Vandbakkelse                    | En kagemand der i... |
+------------+---------------------------------+----------------------+


En generel ingrediensliste der sikrer dig ensartethed i ingrediensnavnene og derfor optimerer dine brugeres søgning:
+--------------+--------------+
| ingrediensId | iNavn        |
+--------------+--------------+
|          12 | Salt        |
|          13 | Peber        |
|          14 | Kyllingef... |
|          15 | Løgpulver    |
|          16 | Coca Cola    |
|          17 | Hvidløg      |
+--------------+--------------+


Og slutteligt, tabellen som holder ingredienserne op mod selve opskrifterne:
+------------+--------------+--------------+
| opskriftId | ingrediensId | iMaengde    |
+------------+--------------+--------------+
|        12 |          12 | knivspids    |
|        12 |          13 | knivspids    |
|        12 |          14 | 2            |
|        12 |          15 | 15g          |
|        12 |          16 | 3 dl.        |
|        12 |          36 | 2,5 dl.      |
+------------+--------------+--------------+


Ved at søge på ingredienserne, kan du nu få en liste ud over  de opskrifter der indeholder de ingredienser der er angivet som kriterier.

Eksempel:
$words = "hvidløg,koteletter";
$list = explode("," $words);
$sql = "SELECT a.opskriftId FROM ingrediens_liste a, ingredienser b WHERE b.iNavn IN ('".implode("', '", $list)."') AND a.ingrediensId=b.ingrediensId";


Men der er mange måder at gøre det på; det her var bare en tanke...
Avatar billede TimoMeM Nybegynder
16. marts 2010 - 16:59 #3
Jeg kan simpelthen ikke får det til og virke.

Nu har jeg siden hele dagen og forsøgt, med alle muligheder som jeg har til rådighed.

Er der nogen der kan skære det ud i pap for mig?
Avatar billede repox Seniormester
19. marts 2010 - 10:00 #4
Jeg er ikke sikker på hvordan jeg skal kunne skære det mere ud i pap end jeg har gjort i forvejen medmindre jeg rent faktisk laver det for dig?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester