foreache loop werkt niet naar behoren, wat gaat er fout?
munnik - 31/10/2006 20:35 (laatste wijziging 31/10/2006 21:07)
Nieuw lid
hallo ik heb een code waarmee ik checkboxen wil verzenden naar mijn database, de checkboxen worden geladen met gegevens uit mijn db.
Ik had het probleem dat ik maar 1 waarde van van alle aangevinkte checkboxen kon versturen. hierom heb ik geprobeerd een foreach loop aan toe te voegen. Maar ik blijf met het zelfde prbleem zitten.
heb ik de foreach loop goed genoteerd? wat gaat er dan fout?
<title>pagina toevoegen</title>
<?php
require '../includes/header_cms.php';
error_reporting(E_ALL);
?>
<?php
//nieuwe interne pagina aanmaken in de database
if($_SERVER['REQUEST_METHOD'] == "POST") // kijken of de vraag verstuurd is
{
$werknemer = $_POST['msg_werknemer'];
$arr=array($werknemer);
foreach ($arr as $value)
{
echo "Value: " . $value . "<br />";
}
$query ="INSERT INTO int_site
(
msg_int_id,
msg_date,
msg_time,
msg_title,
msg_werknemer,
msg_int_link_id,
msg_linken
)
values
(
'',
CURDATE(),
CURDATE(),
'". $_POST['msg_title']. "',
'". $value . "',
'". $_POST['msg_int_link_id']. "',
'". $_POST['msg_linken']. "'
)";
$result_int_site = mysql_query($query) or die(mysql_error());
}
?>
<form name="form1" method="post" action="<?php echo($_SERVER["PHP_SELF"]) ?>">
<p>Pagina title
<input type="msg_title" name="msg_title">
<input type="msg_int_link_id" name="msg_int_link_id">
<input type="msg_linken" name="msg_linken">
<br>
<?php
//gegevens uit tabel weergeven in drop down menu
$select = "*";
$from = "werknemers";
$order1 = "msg_v_naam";
$order2 = "msg_a_naam";
$input_name = "msg_werknemer";
$query_werknemer= "SELECT ".$select." FROM ".$from." ORDER BY ".$order1.", ".$order2." ";
$result_werknemer = mysql_query($query_werknemer)or die(mysql_error());
while( $data = mysql_fetch_array($result_werknemer))
{
echo '<input name="msg_werknemer" type="checkbox" value="'.$data['msg_id'].'">';
echo stripslashes ($data['msg_v_naam']);
echo stripslashes ($data['msg_v_naam']);
}
?>
<input name="Plaatsen" type="submit" >
</form>
<title>pagina toevoegen</title>
<?php
require '../includes/header_cms.php' ;
?>
<?php
//nieuwe interne pagina aanmaken in de database
if ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" ) // kijken of de vraag verstuurd is
{
$werknemer = $_POST [ 'msg_werknemer' ] ;
foreach ( $arr as $value )
{
echo "Value: " . $value . "<br />" ; }
$query = "INSERT INTO int_site
(
msg_int_id,
msg_date,
msg_time,
msg_title,
msg_werknemer,
msg_int_link_id,
msg_linken
)
values
(
'',
CURDATE(),
CURDATE(),
'" . $_POST [ 'msg_title' ] . "',
'" . $value . "',
'" . $_POST [ 'msg_int_link_id' ] . "',
'" . $_POST [ 'msg_linken' ] . "'
)" ;
}
?>
<form name="form1" method="post" action="
<?php echo ( $_SERVER [ "PHP_SELF" ] ) ?> ">
<p>Pagina title
<input type="msg_title" name="msg_title">
<input type="msg_int_link_id" name="msg_int_link_id">
<input type="msg_linken" name="msg_linken">
<br>
<?php
//gegevens uit tabel weergeven in drop down menu
$select = "*" ;
$from = "werknemers" ;
$order1 = "msg_v_naam" ;
$order2 = "msg_a_naam" ;
$input_name = "msg_werknemer" ;
$query_werknemer = "SELECT " . $select . " FROM " . $from . " ORDER BY " . $order1 . ", " . $order2 . " " ;
{
echo '<input name="msg_werknemer" type="checkbox" value="' . $data [ 'msg_id' ] . '">' ;
}
?>
<input name="Plaatsen" type="submit" >
</form>
4 antwoorden
Gesponsorde links
Voldemort - 31/10/2006 21:45
PHP ver gevorderde
Hij overschrijft steeds msg_werknemer in je while. Dit kan je oplossen door er een array van te maken:
echo '<input name="msg_werknemer[]" type="checkbox" value="'.$data['msg_id'].'">';
echo '<input name="msg_werknemer[]" type="checkbox" value="' . $data [ 'msg_id' ] . '">' ;
Alleen moet je bij een checkbox zo checken:
if(isset($_POST['checkbox'])) //Checkbox aangevinkt
else //Checkbox niet aangevinkt
if ( isset ( $_POST [ 'checkbox' ] ) ) //Checkbox aangevinkt else //Checkbox niet aangevinkt
Wat zou jij soms als value van een checkbox willen zien?
munnik - 31/10/2006 21:52
Nieuw lid
oke dat heb ik veranderd, maar nu krijg ik de melding
Notice: Undefined variable: iFieldId in /usr/home/n1087/domains/ubee-ht.nl/public_html/fysio/cms/pagina_toevoegen.php on line 34
<title>pagina toevoegen</title>
<?php
require '../includes/header_cms.php';
error_reporting(E_ALL);
?>
<?php
//nieuwe interne pagina aanmaken in de database
if($_SERVER['REQUEST_METHOD'] == "POST") // kijken of de vraag verstuurd is
{
$query ="INSERT INTO int_site
(
msg_int_id,
msg_date,
msg_time,
msg_title,
msg_werknemer,
msg_int_link_id,
msg_linken
)
values
(
'',
CURDATE(),
CURDATE(),
'". $_POST['msg_title']. "',
'". $iFieldId . "',
'". $_POST['msg_int_link_id']. "',
'". $_POST['msg_linken']. "'
)";
$result_int_site = mysql_query($query) or die(mysql_error());
}
?>
<form name="form1" method="post" action="<?php echo($_SERVER["PHP_SELF"]) ?>">
<p>Pagina title
<input type="msg_title" name="msg_title">
<input type="msg_int_link_id" name="msg_int_link_id">
<input type="msg_linken" name="msg_linken">
<br>
<?php
//gegevens uit tabel weergeven in drop down menu
$select = "*";
$from = "werknemers";
$order1 = "msg_v_naam";
$order2 = "msg_a_naam";
$input_name = "msg_werknemer";
$query_werknemer= "SELECT ".$select." FROM ".$from." ORDER BY ".$order1.", ".$order2." ";
$result_werknemer = mysql_query($query_werknemer)or die(mysql_error());
while( $data = mysql_fetch_array($result_werknemer))
{
echo '<input name="msg_werknemer[]" type="checkbox" value="'.$data['msg_id'].'">';
echo stripslashes ($data['msg_v_naam']);
echo stripslashes ($data['msg_v_naam']);
}
if(isset($_POST['checkbox'])) //Checkbox aangevinkt
foreach( $_POST['msg_werknemer'] as $iFieldId => $iMessageId )
{
echo "Value: " . $iFieldId . "<br />";
}
else
?>
<input name="Plaatsen" type="submit" >
</form>
<title>pagina toevoegen</title>
<?php
require '../includes/header_cms.php' ;
?>
<?php
//nieuwe interne pagina aanmaken in de database
if ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" ) // kijken of de vraag verstuurd is
{
$query = "INSERT INTO int_site
(
msg_int_id,
msg_date,
msg_time,
msg_title,
msg_werknemer,
msg_int_link_id,
msg_linken
)
values
(
'',
CURDATE(),
CURDATE(),
'" . $_POST [ 'msg_title' ] . "',
'" . $iFieldId . "',
'" . $_POST [ 'msg_int_link_id' ] . "',
'" . $_POST [ 'msg_linken' ] . "'
)" ;
}
?>
<form name="form1" method="post" action="
<?php echo ( $_SERVER [ "PHP_SELF" ] ) ?> ">
<p>Pagina title
<input type="msg_title" name="msg_title">
<input type="msg_int_link_id" name="msg_int_link_id">
<input type="msg_linken" name="msg_linken">
<br>
<?php
//gegevens uit tabel weergeven in drop down menu
$select = "*" ;
$from = "werknemers" ;
$order1 = "msg_v_naam" ;
$order2 = "msg_a_naam" ;
$input_name = "msg_werknemer" ;
$query_werknemer = "SELECT " . $select . " FROM " . $from . " ORDER BY " . $order1 . ", " . $order2 . " " ;
{
echo '<input name="msg_werknemer[]" type="checkbox" value="' . $data [ 'msg_id' ] . '">' ;
}
if ( isset ( $_POST [ 'checkbox' ] ) ) //Checkbox aangevinkt foreach ( $_POST [ 'msg_werknemer' ] as $iFieldId => $iMessageId )
{
echo "Value: " . $iFieldId . "<br />" ; }
else
?>
<input name="Plaatsen" type="submit" >
</form>
Voldemort - 31/10/2006 22:09
PHP ver gevorderde
Ik zei niet dat je die if/else erbij moest lappen en die foreach moest verplaatsten. Ik gaf het voorbeeld van hoe je een Checkbox controleert of ie aan of uit is. Jij hebt het blijkbaar niet door hoe je checkt of de checkbox aan of uit gevinkt is. je wil een value van je checkbox, wat verwacht je soms te zien?
Gesponsorde links
Dit onderwerp is gesloten .