Select multiple
Ik heb onderstaande code, maar dan krijg ik de volgende foutmelding:
Warning: Invalid argument supplied for foreach() in
Dit is mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if (isset($_POST['verzondenmaat'])){
foreach ($_POST['maat'] as $maat) {
$query = "INSERT INTO maatprijs (id, product, maat)
VALUES ('', $product, $maat)";
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
continue;
} else {
$foutbericht .= '<p>Dat ging niet goed</p>';
break;
}
}
}
?>
if (isset($_POST['verzondenmaat'])){
foreach ($_POST['maat'] as $maat) {
$query = "INSERT INTO maatprijs (id, product, maat)
VALUES ('', $product, $maat)";
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
continue;
} else {
$foutbericht .= '<p>Dat ging niet goed</p>';
break;
}
}
}
?>
En het formulier:
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=CENTER WIDTH=621>
<TR>
<TD> <form action="" method="POST">
<p>Maten<br/>
</p>
<!-- -->
<input type="hidden" name="verzondenmaat" value="1" />
<p>
<input type="submit" name="Submit" value="Registreren">
</p>
</form></td>
</tr>
</table>
Je krijgt hem terug als een array.. Dus die kan je gewoon zo behandelen in php..
Let er dus wel op dat je die haken plaatst => []
Deze zorgen er namelijk voor dat je hem daadwerkelijk als array terug krijgt.
Probeer daarna die $_POST['maat'] eens met de print_r() functie weer te geven om te kijken of het wel een goede array is en of de waardes goed over komen..
Edit:
Typo
Typo
Gewijzigd op 01/01/1970 01:00:00 door Danny K
Het is me gelukt, bedankt!
graag gedaan :)
Johan:
Het is me gelukt, bedankt!
Wat is het nu geworden? Hebben wij er mischien ook wat aan
Ik was inderdaad die [] vergeten.
@ Johan : zet dus effies hier neer wat je uiteindelijke script is geworden zodat een minder ervaren scripter kan zien wat je uiteinelijke wens was/is.
Als je multiple select er zo uit ziet:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<select name="hobbies[]" multiple>
<option value="1">koken</option>
<option value="2">tuinieren</option>
<option value="3">breien</option>
<option value="4">PHP</option>
</select>
<option value="1">koken</option>
<option value="2">tuinieren</option>
<option value="3">breien</option>
<option value="4">PHP</option>
</select>
dan kun je hem na het verzenden van het formulier zo uitlezen:
Code (php)
Belangrijk bij een multiple select:
1) vergeet het keyword 'multiple' niet!
2) geef hem een array-naam, dus met []
3) je krijgt hem terug als array, in 1 van de elementen van de POST array, dus in mijn voorbeeld in de array $_POST['hobbies']
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
De verwerking in de db:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (isset($_POST['verzondenmaat'])){
foreach ($_POST['maat'] as $maat) {
$product = $_GET['artikel'];
$query = "INSERT INTO maatprijs (id, product, maat)
VALUES ('', '$product', '$maat')";
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
continue;
} else {
$foutbericht = '<p>Dat ging niet goed</p>';
break;
}
}
}
?>
if (isset($_POST['verzondenmaat'])){
foreach ($_POST['maat'] as $maat) {
$product = $_GET['artikel'];
$query = "INSERT INTO maatprijs (id, product, maat)
VALUES ('', '$product', '$maat')";
$result = mysql_query($query);
if (mysql_affected_rows() == 1) {
continue;
} else {
$foutbericht = '<p>Dat ging niet goed</p>';
break;
}
}
}
?>
Het formulier:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(isset($_GET['artikel']) && (!isset($_POST['verzondenmaat']))){
?>
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=CENTER WIDTH=621>
<TR>
<TD> <form action="<?php $php_self?>" method="POST">
<p>Maten<br/>
<?php fill_select_multiple('maat', 'maat'); ?>
</p>
<input type="hidden" name="verzondenmaat" value="1" />
<p>
<input type="submit" name="Submit" value="Invoeren">
</p>
</form></td>
</tr>
</table>
<?php
}
?>
if(isset($_GET['artikel']) && (!isset($_POST['verzondenmaat']))){
?>
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=CENTER WIDTH=621>
<TR>
<TD> <form action="<?php $php_self?>" method="POST">
<p>Maten<br/>
<?php fill_select_multiple('maat', 'maat'); ?>
</p>
<input type="hidden" name="verzondenmaat" value="1" />
<p>
<input type="submit" name="Submit" value="Invoeren">
</p>
</form></td>
</tr>
</table>
<?php
}
?>
De functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// Functie om een keuzelijst te vullen
function fill_select_multiple($obj_naam, $tablename)
{
echo "<SELECT NAME='".$obj_naam."[]' SIZE='10' MULTIPLE>";
$result_id = mysql_query("SELECT $obj_naam FROM $tablename") or die (mysql_error());
while ($row = mysql_fetch_array($result_id))
{
echo "<option value='".$row[$obj_naam]."'>".$row[$obj_naam]."</option>\n";
}
echo "</SELECT>\n";
}
?>
// Functie om een keuzelijst te vullen
function fill_select_multiple($obj_naam, $tablename)
{
echo "<SELECT NAME='".$obj_naam."[]' SIZE='10' MULTIPLE>";
$result_id = mysql_query("SELECT $obj_naam FROM $tablename") or die (mysql_error());
while ($row = mysql_fetch_array($result_id))
{
echo "<option value='".$row[$obj_naam]."'>".$row[$obj_naam]."</option>\n";
}
echo "</SELECT>\n";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Johan Boerema
ok haha, dat was iets bondiger idd