Récupération checkbox PHP message erreur !!! Notice....

WRInaute discret
Bonjour à tous, :D

Cela fait un bout de temps que je ne suis plus venu ici. Mais c'est avec plaisir que je reviens pour que vous me filiez un petit coup de pouce.

Voici le problème.

Je récupère les valeurs de mes checkbox sur une page en php. Le traitement fait ce que je veux mais j'ai le message d'erreur suivant :

Notice: Uninitialized string offset: 1 in D:\SEERYX\Try\admin\update_reportage.php on line 24

Voici mon code :
-------------------

Code:
<?php
include_once '../fonctions.php';

connexion_DB('abscence');

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		  <link rel="stylesheet" type="text/css" href="secure.css" />
          
          </head>
          <body>
<?php
		  
if(isset($_POST['choix']))// SI une case au moins  a été cochée alors ...

{
		foreach($_POST['choix'] AS $cle=>$value)
        echo $cle, ' -> ', $value, '<br />', "\n";
		for($i=0; $i<$_POST['cpt'];$i++){
		$sql = "UPDATE images SET Statut_Image_Report_01 ='coché' WHERE ID_Image = '".$value[$i]."'"; 
		mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
		echo "<br/>".$sql;
		}
?>	
<a href="admin.php?page=11">Retour à la gestion des images</a>

<?php	
}
else
{


header("Location:admin.php?page=11");
}?>

Merci de votre aide.

John












?> :D
 
WRInaute discret
Salut,

Ne tiens pas compte du script que j'ai mis en haut.

Voici ce que je veux faire:

J'aurais un formulaire html dans lequel je ferai une boucle pour afficher mes enregistrements et créer pour chaque enregistrement une checkbox que je pourrais cocher et décocher afin d'enregistrer le statut coché ou décoché dans ma base de données. Et ce afin de pouvoir récupérer le statut de mes checkbox.

J'aurais une autre page qui me servirais d'UPDATE sql de ma table.

Mais je ne sais pas comment procéder pour que chaque checkbox soit liée à un enregistrement de ma table.

Aurais-tu une idée stp ?
 
WRInaute accro
Un truc simple : les nommer en fonction de leur id.

Ta boucle sql qui afficherait les checkbox ferait un truc du genre :

Code:
<?
$sql = "SELECT id,valeur FROM matable";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
?>
<input type="checkbox" name="chk_<?=$row['id']?>" id="chk_<?=$row['id']?>" value="1" />
<?
}
?>

Et dans le code de traitement tu fais quelque chose du genre :

Code:
<?
$sql = "SELECT id,valeur FROM matable";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
     $value = 'pascoché';
     if (isset($_POST['chk_'.$row['id']]) && ($_POST['chk_'.$row['id']] =='1'))
     {
           $value = 'coché';
     }
      
     $sql = "UPDATE matable SET statut='".$value."' WHERE id=".$row['id'];
     mysql_query($sql);
}
?>
 
WRInaute accro
Bein ca m'a l'air pourtant pas compliqué :

1) tu génères la liste de tes input à partir de tes enregistrements, en les préfixant (ou suffixant) avec les id.

Ce qui fait par exemple que l'input lié à ton enregistrement d'id 3 aura comme name et id chk_3 (chk étant une chaine arbitraire, qui permet de s'assurer que les champs générés dynamiquement ne génèreront pas de conflits avec des champs existants).

2) Lors de la validation du formulaire, tu exécutés à nouveau la requête qui t'as servis à créer les champs.

Si un champ posté correspond à la chaîne chk_id, alors la case est cochée, sinon elle ne l'est pas (les champ input de type checkbox ne sont pas postés si la case n'est pas cochée).

Voilà
 
Discussions similaires
Haut