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.

<select name="value">
<option value="waarden-van-database1">waarden-van-database2</option>
</select>

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.
Je klikt in de select op het bedrijf en je krijgt het id in de name van de select.
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!
Dit is het resultaat van Johan K, ik kan nog altijd niet de ID opslaan.

Array ( [download] => [categorie] => Water [bedrijf] => WMD [onderwerp] => Jaarnota [ontvangen] => 20150831 [briefnr] => 080 [editor1] =>

TEST
[afgehandeld] => nee [submit] => Opslaan )

Toevoeging op 31/08/2015 19:45:41:

Frank Nietbelangrijk op 31/08/2015 19:42:24

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:


<?php
require ("system/login/auth.php");

$sql = "SELECT i.*, c.* FROM inkomend i, contactenzakelijk c WHERE i.zakelijk_id = c.zakelijk_id AND i.inkomend_id = " . (int)$_GET['inkomend_id'];

if(!$result = $db->query($sql)){
    die('Er was een fout opgetreden tijden het ophalen van gegevens: [' . $db->error . ']');
}

while($row = $result->fetch_assoc()){

echo '<div id="printReady">';

echo '
<ul>
<li><a href="javascript:history.back(-1);" class="button"><img src="img/icons/house.png" class="img16"> Overzicht</a></li>
<li><a href="javascript:void(printSpecial())" class="button"><img src="img/icons/printer.png" class="img16"> Printen</a></li>
<li><a href="?inkomend=allin&groepen=inkomend&action=edit&inkomend_id='.$row['inkomend_id'].'" class="button"><img src="img/icons/pencil.png" class="img16"> Bewerken</a></li>
<li><a href="?inkomend=allin&groepen=inkomend&action=delete&inkomend_id='.$row['inkomend_id'].'" class="button"><img src="img/icons/delete.png" class="img16"> Verwijderen</a></li>
<li><a href="http://10.0.0.5/inkomend/'.$row['download'].'" target="_blank" class="button"><img src="img/icons/drive_web.png" class="img16"> Downloaden</a></li>
</ul>
<br><br>
<b>Contact info</b><br><br>
<div style="float: left; padding: 5px; margin: 5px;">
';
if (empty($row['logo'])) {
echo '<img src="img/icons/nologo.jpeg" width="200px" height="200px">';
}
else
{
echo '<img src="img/logos/'.$row['logo'].'" width="200px" height="200px" style="border-radius: 10px;">';
}
echo '</div>
<div style="float: left; background: lightgreen; padding: 5px; margin: 5px;">
';

echo '

		<b>Bedrijf:</b><br>
		'.$row['bedrijf'].'<br>
		<b>Adres:</b><br>
';
		if (empty($row['adres'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['adres'];
		}
echo '<br><b>Huisnummer:</b><br>';

		if (empty($row['huisnr'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['huisnr'];
		}
echo '<br><b>Postcode:</b><br>';

		if (empty($row['postcode'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['postcode'];
		}

echo '<br><b>Plaats:</b><br>';

		if (empty($row['plaats'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['plaats'];
		}

echo '<br><b>Telefoonnummer:</b><br>';

		if (empty($row['telnr'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['telnr'];
		}

echo '<br><b>Mobiel:</b><br>';

		if (empty($row['mobiel'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['mobiel'];
		}

echo '
</div>

<div style="float: left; background: lightgreen; padding: 5px; margin: 5px;">
<b>Internet</b><br><br>

		Website:<br>
	';

		if (empty($row['web'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['web'];
		}
echo '
</div>';

echo '
<div style="float: left; background: lightgreen; padding: 5px; margin: 5px;">
<b>Overige data:</b><br><br>
		Datum ontvangen:<br>
';
		if (empty($row['ontvangen'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			$time = $row['ontvangen'];
			$day = explode("-", $time);
			$date = $day[2]."-".$day[1]."-".$day[0];
			echo $date;
		}

echo '<br>Briefnr<br>';

		if (empty($row['briefnr'])) {
			echo '<i>niet aanwezig</i>';
		}
		else
		{
			echo $row['briefnr'];
		}

echo '<br>Afgehandeld?:<br>';

		if (isset($row['afgehandeld']) && $row['afgehandeld'] == "ja") {
			echo $row['afgehandeld'].'<br>';

		} else {

			echo 'Nee';
		}

echo '
</div>

<div style="float: left; background: lightgreen; padding: 5px; margin: 5px;">
<b>Aantekeningen:</b><br><br>';

		if (empty($row['editor1'])) {
			echo 'Er zijn geen opmerkingen over deze afzender.';
		}
		else
		{
			echo $row['editor1'];
		}

 echo '</div><object data="http://10.0.0.5/inkomend/'.$row['download'].'" type="application/pdf" width="750" height="600">alt : <a href="http://10.0.0.5/inkomend/'.$row['download'].'">Download</a></object>
';
}
$result->free();
$db->close();
?>

<option value="5">Timmerman BV</option>
[/code]

Timmerman BV is wat de gebruiker in de browser ziet en selecteert maar wat jij teruggestuurd krijgt is 5!


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..




Als je het value attribuut weglaat dan krijg je inderdaad de naam terug.


<option>Timmerman BV</option>


Heb je misschien een spelfoutje gemaakt?
Johan K op 31/08/2015 19:47:14

[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.

1 inkomend_id AUTO_INCREMENT
2 categorie
3 bedrijf
4 onderwerp
5 ontvangen
6 briefnr
7 editor1
8 afgehandeld
9 download
10 zakelijk_id

Toevoeging op 31/08/2015 19:59:05:

Frank Nietbelangrijk op 31/08/2015 19:47:26

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:

http://stackoverflow.com/questions/3245967/can-an-option-in-a-select-tag-carry-multiple-values

Ik wil jullie heel graag bedanken voor het meedenken naar een oplossen.

Reageren