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

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

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

Message le Dim Avr 13, 2008 15:39

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: Tout sélectionner
<?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


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Message le Dim Avr 13, 2008 16:09

Tu peux nous mettre le code html du formulaire incriminé ?

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

Message le Dim Avr 13, 2008 17:17

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 ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Message le Dim Avr 13, 2008 17:54

Un truc simple : les nommer en fonction de leur id.

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

Code: Tout sélectionner
<?
$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: Tout sélectionner
<?
$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);
}
?>

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

Message le Dim Avr 13, 2008 18:52

Merci de ta réponse. Mais je ne comprends pas bien le principe ?

Pourrais-tu développer stp ?

John


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Message le Dim Avr 13, 2008 19:07

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à


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités