Hallo allen,
Ik heb een site gemaakt waarop men gerechten kan bestellen. Hierbij heb ik ook een heel inkoopscript gemaakt, zodat de bestelling bij te weinig voorraad naar de leverancier wordt gestuurd.

Het werkt zo: in mijn database heb ik een tabel `gerechten` met daarin oa de kolommen `naam`, `ingredienten` en `hoeveelheden`; voorbeeld:

Tabel gerechten
Gerechtnaam Ingredienten Hoeveelheden
Mosterdvink Rundervink, mosterd 1,5

Tabel ingredienten
Ingredientnaam Eenheid Bestelde voorraad Min. voorraad
Rundervink Stuks 1 5
Mosterd ml 5 10

Er zijn nog meer tabellen zoals tech. voorraad, waar bij het plaatsen van de bestelling de bestelde voorraad vanaf gehaald moet worden, dus tech_voorraad=tech_voorraad-bestelde_voorraad.


Nu krijg ik het niet voor elkaar om op een juiste manier de ingredientnaam en bijbehorende hoeveelheid uit gerechtentabel te halen om zo de bestelde voorraad in ingrediententabel aan te kunnen passen.
Bij gerechten is het een string, ik heb hier al een array van gemaakt dmv explode() maar ik kom werkelijk niet verder.

wat wil je eigenlijk?
Database normalisatie!!

Zonder dat uitgangspunt kun je onmogelijk werken met data welke opgeslagen is in een database.
Wat is hier een handige manier dan?
Je hebt een database met gerechten:
id,
naam

Database ingredienten
id,
gerechtID,
naam,
hoeveelheid


Op deze manier heb je je ingredienten en je gerechten los. Dan kan je vervolgens alle ingredienten selecteren o.b.v. de ID van het gerecht.


SELECT 
	gerecht.id, 
	gerecht.naam, 
	ingredienten.id, 
	ingredienten.gerechtID, 
	ingredienten.naam, 
	ingredienten.hoeveelheid 
FROM 
	gerecht 
INNER JOIN 
	ingredienten 
ON 
	gerecht.id = ingredienten.gerechtID
Bedankt,
Ik zal er morgen eens naar kijken, maar ik had nu ook al een oplossing met een if-loopje. Eerst met een count() functie tellen hoeveel ingredienten erin zitten en daarna binnen de if loop de querys uitvoeren.
Ik zou toch als ik jouw was je db-structuur aanpassen.
B Klaas op 14/11/2010 18:31:07

Bedankt,
Ik zal er morgen eens naar kijken, maar ik had nu ook al een oplossing met een if-loopje. Eerst met een count() functie tellen hoeveel ingredienten erin zitten en daarna binnen de if loop de querys uitvoeren.


Dat is niet slim. Dan ga je PHP laten rekenen voor je en misbruik je je database. Aanpassen van de databasestructuur scheelt je tijd, code en een hoop gezeur.

Reageren