Vous n'êtes pas identifié(e).
Pages :: 1
bonjour,
j'ai créé un formulaire qui se connecte à une base mysql et ce formulaire me permet de receptionner des dossiers à l'aide de case à cocher or j'ai une erreur Warning: Invalid argument supplied for foreach() en ligne 13:
voici mon code de formulaire:
print"<BR>";
print "<DIV ID=\"listeetiquette\"><FORM NAME=\"forme1\" method=\"post\" action=\"traitement_reception.php\"><TABLE BORDER=\"0\" align=\"center\" CELLPADDING=\"0\" width=\"90%\" CELLSPACING=\"0\">";
print "<TR align=\"center\" bgcolor=\"#FFCC33\"><td>RECEPTIONNE</td><td> </td><td>PRENOM</td><td>NOM</td><td>VILLE</td><td>MAIL</td></TR>";
print "<TR><TD colspan=\"8\"> </TD></TR>";
while ($r = mysql_fetch_array($q))
{
print "<TR><TD><INPUT TYPE=\"checkbox\" name=\"liste\" value=\"".$r['id_person']."\"></TD>";
print "<TD>".$r['genre']."</TD><TD>".$r['prenom']."</TD><TD>".$r['nom']."</TD><TD>".$r['ville']."</TD><TD><A HREF=\"mailto:".$r['mail']."\">".$r['mail']."</A></TD></TR>";
}
print "</TABLE>";
print "</DIV>";
print "<BR><BR><BR><BR><BR><BR><BR><BR>";
//print "<DIV>";
print "<center>";
print"<input type=\"submit\" name=\"Submit\" value=\"Valider\">";
print"<input type=\"button\" value=\"tout cocher\" onClick=\"this.value=check(this.form.liste)\">";
print "</center>";
print"</FORM>";
voici ma page de gestion des case à cocher:
foreach ($valeurcoche as $value) //tu passes la valeur actuelle dans une clef (LIGNE 13)
{
$query="select nom,prenom,genre,adresse1,adresse2,codepostal,ville,impression_etiquette,date_reception,receptiondossier from infos WHERE id_person = $value";
$resultat=mysql_query($query);
// On imprime les étiquettes
//while($row=mysql_fetch_array($resultat))
while($row=mysql_fetch_assoc($resultat))
{
//for($i=1;$i<=40;$i++)
$nom = $row['nom'];
$prenom = $row['prenom'];
$civilite = $row['genre'];
$adresse1 = $row['adresse1'];
$adresse2 = $row['adresse2'];
$codepostal = $row['codepostal'];
$ville = $row['ville'];
//mise à jour du drapeau comme quoi le dossier a été réceptionné et date de réception
mysql_query ("UPDATE infos SET receptiondossier = $drapo_receptiondossier ,date_reception = $date WHERE id_person = $value");
merci pour votre aide
Hors ligne
Bonsoir,
l'erreur indique que l'argument donné à foreach n'est pas du bon type : il faut fournir un tableau et tu fournis une chaine de caractères :
il faut ajouter des crochets pour chaque checkbox afin de récuperer le tableau des cases selectionnées.
Dans ton cas :
[code php]echo "<INPUT TYPE=\"checkbox\" name=\"liste[]\" value=\"".$r['id_person']."\">[/code]
Un exemple, soit le fichier test.php :
[code php]<form action="test.php" method="post" enctype="multipart/form-data">
<input type="checkbox" name="liste[]" value="a" />
<input type="checkbox" name="liste[]" value="b" />
<input type="checkbox" name="liste[]" value="c" />
<input type="submit" />
</form>
<?php
if(isset($_POST['liste'])){
print_r($_POST['liste']);
}
else{
echo 'Pas de selection';
}
?>[/code]
Par ailleurs, je trouve ton code difficile à lire. Il y a d'abord un problème de logique d'écriture à savoir majuscules, minuscules et peut-être une façon plus simple de présenter les choses :
[code php]<?php
$q = mysql_query("
SELECT
id_person,
genre,
nom
FROM
infos
WHERE
impression_etiquette = 1 AND
receptiondossier = 0
ORDER BY
nom
");
$reponse = mysql_num_rows($q);
if($reponse != 0){
?>
<br>
<div id="listeetiquette">
<form name="forme1" method="post" action="traitement_reception.php">
<table border="0" align="center" cellpadding="0" width="90%" cellspacing="0">
<?php
/*
...
*/
?>
<?php
while ($r = mysql_fetch_array($q)){
?>
<tr>
<td><input type="checkbox" name="liste[]" value="<?php echo $r['id_person'];?>"></td>
</tr>
<?php
/*
...
*/
?>
<?php
}
?>
</table>
</form>
<?php
/*
...
*/
?>[/code]
Bon, il est vrai qu'après cela devient assez personnel
Dernière modification par moijhd (09-08-2009 22:56:56)
Hors ligne
bonjour,
Merci il prend en compte maintenant mes cases à cocher qd je met ceci:
mais par contre mon bouton tout cocher n'agit plus sur mes cases, comment je dois faire ??
ma fonction javascript pour tout cocher:
bouton tout cocher
Merci pour votre aide.
mais du coup mon bouton tout cocher n'agit plus sur mes cases à cocher, comment je dois faire ??
script bouton tout cocher:
Hors ligne
Je propose cela, en relation avec l'exemple que j'ai donné précédement. Reste à vérifier la compatibilité :
[code php]
<script language="javascript" type="text/javascript">
function ToutCocher(formulaire, nom, action){
// On recupere tous les inputs du form name="formulaire"
var inputs = document.formulaire.getElementsByTagName('input');
// On parcourt tous les inputs
// pour trouver ceux qui sont des type="checkbox" et qui ont pour attribut name="nom"
for(var i = 0; i < inputs.length; i++){
if((inputs[i].type == 'checkbox') && (inputs[i].name == nom)){
// On regarde l'action a effectué
if(action == 'cocher'){
inputs[i].checked = true;
}
if(action == 'decocher'){
inputs[i].checked = false;
}
}
}
}
</script>
<form name="formulaire" action="test.php" method="post" enctype="multipart/form-data">
<input id="liste[0]" type="checkbox" name="liste[]" value="a" />
<input id="liste[1]" type="checkbox" name="liste[]" value="b" />
<input id="liste[2]" type="checkbox" name="liste[]" value="c" />
<input type="submit" />
<input type="button" onclick="ToutCocher('formulaire', 'liste[]', 'cocher')" value="Tout cocher" />
<input type="button" onclick="ToutCocher('formulaire', 'liste[]', 'decocher')" value="Tout décocher" />
</form>
<?php
if(isset($_POST['liste'])){
print_r($_POST['liste']);
}
else{
echo 'Pas de selection';
}
?>
[/code]
Hors ligne
Merci je vais tester.
A+
Hors ligne
j'ai opté pour ca comme code de mon bouton TOUT COCHER:
Merci A+
Hors ligne
Oui il fallait modifier : d'abord le teste, puis la boucle
Hors ligne
Pages :: 1