query gebaseerd op een invoer formulier

Status
Niet open voor verdere reacties.

stubbe

Nieuwe gebruiker
Lid geworden
18 jan 2008
Berichten
4
Is het mogelijk om een query te maken welke gebaseerd is op een formulier.

Het gaat hierom, ik heb een database met allerlei soorten thee.
Ieder record is voorzien van een naam, prijs, en voor ieder ingredient een apart ja/nee veld.
Er zijn zo 40 a 50 ingredienten.
Nu heb ik een invoer form om de database te voeden met al deze ingredienten.
Is het mogelijk om een formulier te ontwikkelen waar ik een paar ingredienten kan aanklikken om een thee soort te vinden waar deze ingredienten inzitten.
Deze vraag krijgen we nl veel op de markt en nu is het steeds een lange lijst handmatig doorzoeken.
Ik heb geen idee hoe ik dit moet beginnen.

Jan
 
Om te beginnen denk ik dat je een vekeerde opzet hebt gemaakt: logischer zou het zijn om een aparte tabel te maken voor de ingrediënten en per theesoort een record in die tabel te maken met het betreffende ingrediënt. Een thee me 12 ingrediënten heeft dus één record in de hoofdtabel, en 12 records in de THee_Ingrediënten tabel. Uiteraard heb je ook een tabel met die 50 ingrediënten, zodat je ook relaties hebt tussen de tabellen [tblTheesoort] - [tblThee_Ingrediënt], en [tblIngrediënt] - [tblThee_Ingrediënt]. Als je het zo opzet, is het een klusje van niks, want dan maak je een formulier op basis van je ingrediënten, met een subformulier op basis [tblThee_Ingrediënt]. In het hoofdformulier kun je dan met een keuzelijst (waarin je meerdere ingrediënten kunt selecteren) filteren op theesoorten die voldoen aan de selectie. Op basis van je huidige opzet is het een bijna onmogelijke klus. Ik zou daar in ieder geval niet aan beginnen...
 
Hoewel de opzet inderdaad beter zou kunnen, is het via SQL nog wel te doen hoor. Nadeel is dan wel (zie boven) dat, mocht je ooit ingrediënten toevoegen, je handmatig je formulieren aan moet passen.

Een andere mogelijkheid is om je ingrediënten informatie op te slaan als "binary" informatie. Je kunt dan met een simpele "AND" statement alle argumenten filteren. De AND statement bouw je aan de hand van geselecteerde opties op je formulier. Ook hier geldt: andere ingrediënten betekend handmatig aanpassen.

Ik wil OctaFish's statement van "onmogelijk" dus wel wat afzwakken, maar dat doet absoluut niets af aan zijn argumenten voor een betere en makkelijkere opzet van de database!
 
Ik zei ook niet voor niks: 'bijna onmogelijk' :)
Het geheel is, met zoveel ingrediënten, nauwelijks soepel te onderhouden. En dat is waar je naar moet streven, lijkt mij. Ik zou het prima kunnen maken, maar zelf begin ik daar dus niet aan; eerst een genormaliseerde database! Overigens snap ik niet helemaal wat je met Binary bedoelt, want volgens mij had TS het over Ja/Nee veldjes, en die zijn zo'n beetje het ultieme binary gegeven....
 
Laatst bewerkt:
Thee databasa

Is het mogelijk om een query te maken welke gebaseerd is op een formulier.

Het gaat hierom, ik heb een database met allerlei soorten thee.
Ieder record is voorzien van een naam, prijs, en voor ieder ingredient een apart ja/nee veld.
Er zijn zo 40 a 50 ingredienten.
Nu heb ik een invoer form om de database te voeden met al deze ingredienten.
Is het mogelijk om een formulier te ontwikkelen waar ik een paar ingredienten kan aanklikken om een thee soort te vinden waar deze ingredienten inzitten.
Deze vraag krijgen we nl veel op de markt en nu is het steeds een lange lijst handmatig doorzoeken.
Ik heb geen idee hoe ik dit moet beginnen.

Jan
 
Jan

Octafisch heeft waarschijnlijk gelijk.
Kan je me de database even opsturen, dan kan ik eens naar kijken en je misschien advies geven over hoe het anders kan.

Hugo
 
Overigens snap ik niet helemaal wat je met Binary bedoelt, want volgens mij had TS het over Ja/Nee veldjes, en die zijn zo'n beetje het ultieme binary gegeven....

De TS heeft dus 50 ja/nee veldjes. Dit past prima in een enkel binary field met 7 bytes (7x8 = 56 bits)

Je kunt dan je "AND" halen over een enkele binary field, wat een zeer hoge performance heeft tov 40 columns.
 
Kan je me de database even opsturen, dan kan ik eens naar kijken en je misschien advies geven over hoe het anders kan.
Ik stel voor dat TS de db eerst maar eens gewoon upload mocht hij dat willen, dan kan iedereen er naar kijken :D
 
Maar, als je dus gewoon zoekt welke recepten te maken zijn met de ingrediënten door te kijken of een recept minstens alle ingrediënten benodigd heeft als die de gebruiker invoert. dus gebruik veel OR statements.
werkt je gewoon me een MySQL server?
 
Goede dag u allen, hartelijk dank voor het meedenken.

Inmiddels heb ik de database opgedeeld in 2 tabellen, 1 met de basis gegevens van de theesoort, naam,prijs,bestelnummer,verkoop prijs ect. daarnaast heb ik nu ook een tabel gemaakt met het bestelnummer en alle ingredienten en deze via een query waar aan elkaar gekoppeld zodat ik de rapporten weer kan draaien. Zit ik al op de goede weg ???
 
ik begrijp dat mijn probleem nog niet helemaal bij iedereen duidelijk is .
Er wordt niet gewerkt met recepten. Het gaat over de verkoop van thee.
Op dit moment heb ik ca 450 soorten/smaken thee waarvan ik niet van elke smaak alle ingredienten ken.
Als ik op de markt sta of ergens anders de vraag krijg in welke thee , bv venkel en anijs als ingredienten heeft, wil ik alleen die velden ( venkel en anijs ) aan kunnen vinken en dat ik dan een aantal ( of geen als er geen match is ) een lijst krijg van de thee soorten/smaken die de gevraagde ingredienten hebben.
Ik hoop nu dat mijn vraag op deze wijze wat duidelijker heb gesteld

gr Jan
 
ik snap je bedoeling ook...
iets als, "SELECT theesoort WHERE " . if(iiset($_POST['venkel'])){"venkel='" . $_POST['venkel'] . " ' AND " . if(iiset($_POST['anijs'])){"anijs='" . $_POST['anijs'] . " ' "} " .
ik heb her idee dat dit helemaal niet gaat werken. maar het is gewoon een voobeeld om je een idee te geven van een opbouw.
 
Die code is zo zeker niet in Access te gebruiken, dus dat heb je goed gezien :)
We begrijpen vermoedelijk allemaal wel dat je geen recepten maakt, maar je hebt het zelf over één record met ingrediënten. En in die constellatie maakt het niet uit of je een recept voor een taart hebt, met bloem, eieren, suiker etc. of een record met thee met als ingrediënten venkel en anijs. Dus staar je niet blind op hoe we iets benoemen, maar kijk naar de structuur van het geheel. En die zou ik toch maken op de manier die ik heb uitgelegd: een tabel met de hoofdgegevens van de theesoort (naam, ID, prijs, bestelnummer etc), een tabel met ingrediënten en een tabel Thee_Ingrediënten. Afstappen van de 40 selectievakjes, dus. Tenzij iemand anders daar een briljante simpele oplossing voor heeft, al waag ik dat te betwijfelen :) De fraaiste en makkelijkste oplossing is namelijk een genormaliseerde database...
 
het is de query, geen functie of methode ... bovendien heb ik in niets opgemerkt met wat voor database de TS werkt.
 
Maar dit is een Access forum... Dat zou een clou kunnen zijn ;)
 
ochja, nu heb ik dat ook door, was via hoofdpage ingestroomd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan