Door
Klaas Vaag
op 31-08-2015 12:57
gewijzigd op 31-08-2015 13:09
4.736 views
Hallo iedereen,
Ik heb een vraag omtrent een form waarden. Wanneer ik een waarde wil doorsturen naar het verwerkingsscript dan lijkt het er op als of ik dit maar met een tegelijk kan doen. Wat ik graag wil bereiken is om meerdere waarden tegelijk te versturen zodat deze correct in de database terecht komen. Het gaat hier bij om de "name" waarden die het formulier mee stuurt. Ik zal een voorbeeld geven.
Ik probeer beide waarden van option in de database te krijgen maar het ziet er naar uit dat alleen de "name" waarde word opgeslagen terwijl ik beide waarden zou willen opslaan. Is dit uberhaupt wel mogelijk?
Enige input om het leerproces te vergemakkelijken is zeer welkom en wil ik graag voor bedanken.
Oke Klaas je gedachten-gang is wel goed volgens mij.
alleen dit wat je schrijft klopt niet
Maar omdat ik alleen een bedrijfsnaam kan selecteren (en dus niet het ID) word de bedrijfsnaam weergegeven maar kan ik later de gegevens die aan die ID gekoppeld zijn niet weergeven omdat de ID mist. Dus nu zou ik een keuze moeten maken of ik alleen de bedrijfsnaam weergeef of de ID.
<option value="5">Timmerman BV</option>
Timmerman BV is wat de gebruiker in de browser ziet en selecteert maar wat jij teruggestuurd krijgt is 5!
Oke Klaas je gedachten-gang is wel goed volgens mij.
alleen dit wat je schrijft klopt niet
Maar omdat ik alleen een bedrijfsnaam kan selecteren (en dus niet het ID) word de bedrijfsnaam weergegeven maar kan ik later de gegevens die aan die ID gekoppeld zijn niet weergeven omdat de ID mist. Dus nu zou ik een keuze moeten maken of ik alleen de bedrijfsnaam weergeef of de ID.
Dat klopt wel maar ik kan ze niet beide opslaan. Tenzij ik dit in het overzicht anders moet doen. En dat ziet er zo uit:
Mag ik vragen waar ik dan nu het ID vandaan haal? Deze moet ik opslaan om een overzicht te creëren.
Je zou een tabel in je database moeten hebben staan dat minstens een kolom genaamd "id" in jouw voorbeeld "zakelijk_id" en een kolom met een naam, in jouw voorbeeld "bedrijf". De "zakelijk_id" zou een auto increment waarde moeten bevatten en eigenlijk de "bedrijf" een unique value zou moeten hebben zodat telkens wanneer er een bedrijf zich "insert" in deze tabel deze id telkens +1 heeft. Als er dan een bedrijf toegevoegd word met dezelfde bedrijfs naam dan word er een error uit gestuurd omdat deze dan niet uniek is. Dit heeft allemaal te maken met de database structuur.
Als jouw gebruiker dan een bedrijf selecteerd zou deze overeen moeten komen met de bedrijfsnaam in jouw database, en in dezelfde row staat een unique ID. Alle gegevens die worden opgeslagen in een andere tabel voor dit bedrijf, zou deze ID als een "non-autoincrement" waarde er in moeten zetten.
Zodat:
$sql = "select zakelijk_id from tabel_a where bedrijf=:naam"; // eerste query, bind params, verifieer of deze bestaat, zo ja sla $row['zakelijk_id'] op in een variable ofzoiets.
$sql = "select * from tabel_b where id = {$row['zakelijk_id']}"
Je kan ook joins uitvoeren zodat alles in 1 query gaat, maar dit is een stuctuur voorbeeld..
[quote="Klaas Vaag op 31/08/2015 19:34:56"]
Mag ik vragen waar ik dan nu het ID vandaan haal? Deze moet ik opslaan om een overzicht te creëren.
Je zou een tabel in je database moeten hebben staan dat minstens een kolom genaamd "id" in jouw voorbeeld "zakelijk_id" en een kolom met een naam, in jouw voorbeeld "bedrijf". De "zakelijk_id" zou een auto increment waarde moeten bevatten en eigenlijk de "bedrijf" een unique value zou moeten hebben zodat telkens wanneer er een bedrijf zich "insert" in deze tabel deze id telkens +1 heeft. Als er dan een bedrijf toegevoegd word met dezelfde bedrijfs naam dan word er een error uit gestuurd omdat deze dan niet uniek is. Dit heeft allemaal te maken met de database structuur.
Als jouw gebruiker dan een bedrijf selecteerd zou deze overeen moeten komen met de bedrijfsnaam in jouw database, en in dezelfde row staat een unique ID. Alle gegevens die worden opgeslagen in een andere tabel voor dit bedrijf, zou deze ID als een "non-autoincrement" waarde er in moeten zetten.
Zodat:
$sql = "select zakelijk_id from tabel_a where bedrijf=:naam"; // eerste query, bind params, verifieer of deze bestaat, zo ja sla $row['zakelijk_id'] op in een variable ofzoiets.
$sql = "select * from tabel_b where id = {$row['zakelijk_id']}"
Je kan ook joins uitvoeren zodat alles in 1 query gaat, maar dit is een stuctuur voorbeeld..
[/quote]
Onderstaande is de database waar het in moet en waar ik deze gegevens kan opvragen. Inkomend_id is tevens PRIMARY.
Als je het value attribuut weglaat dan krijg je inderdaad de naam terug.
<option>Timmerman BV</option>
Heb je misschien een spelfoutje gemaakt?
Nee, ik heb het value gewoon ingevuld staan. Ik gebruik option nooit op die manier.
Toevoeging op 31/08/2015 23:09:41:
Of dit de meest geweldige oplossing is weet ik niet, tenslotte ben ik geen expert maar het is me gelukt om de juiste waarden er door te krijgen. Dit heb ik gedaan na dit artikel: