Récupération de valeurs checkbox dynamiquement

Récupération de valeurs checkbox dynamiquement - PHP - Programmation

Marsh Posté le 08-06-2005 à 17:24:23    

Bonjour j'ai un petit soucis pour récupérer des valeurs de mes checkbox, j'ai vu cette astuce sur le net, mais ça ne semble pas marcher avec EasyPHP 1.8.
 
voici le code:
 
 
 
 
/* Pour chaque enregistrement dans la base de données
Je crée une case à cocher, le nom étant stocké dans un tableau, et la valeur = à l'ID de mon enregistrement */
 
$sql_select = "SELECT * FROM rechercher";
$req_select = mysql_query($sql_select) or die(mysql_error());
 
while($data = mysql_fetch_assoc($req_select))  
  {
  $question = $data['question'];
  $id  = $data['id'];  
  echo '<br><input type="checkbox" name="checkbox[]" value="'.$id.'"> ';
  echo $id.' . '.$question.'<br>';
  }

 
Dans la page suivante, qui récupère les valeurs:
/*Pour chaque case qui a été cochée
Je récupère la valeur $id
Je cherche l'enregistrement correspondant dans la BDD
Je récupère la question et réponse que j'affiche dans une TEXTAREA */
 
 
for ($i = 0; $i < count($checkbox); $i++)
    {
$id  = $checkbox[$i];
$sql_req  = "SELECT * FROM rechercher WHERE id ='$id'";
$req_req  = mysql_query($sql_req) or die(mysql_error());  
$question = mysql_result($req_req , 0 , "question" );
echo "Question $id<br>";  
echo '<textarea name="upd_question" cols="80" rows="3">'.$question.'</textarea>';  
   
$sql_req2  = "SELECT * FROM rechercher WHERE id ='$id'";
$req_req2  = mysql_query($sql_req2) or die(mysql_error());  
$reponse = mysql_result($req_req2 , 0 , "reponse" );  
echo "Réponse $id<br>";
echo '<textarea name="upd_reponse" cols="80" rows="8">'.$reponse.'</textarea>';
}

 
Mais voila, il me dit:

Notice: Undefined variable: checkbox in ...
Notice: Undefined index: in...
Sur la même ligne, l'erreur n'apparaissait pas avec la version 1.6 il me semble.
 
Donc si vous avez une idée ou carrement une solution plus simple permettant de récupérer les valeurs de ces cases à cocher le but est que l'utilisateur choisisse une question/réponse à modifier, que les questions/réponse séléctionnées soit affichés dans une TEXTAREA par rapport à la BDD, qu'il modifie ce qu'il souhaite et qu'il mette à jour l'enregistrement.  
 
Voila merci d'avance

Reply

Marsh Posté le 08-06-2005 à 17:24:23   

Reply

Marsh Posté le 08-06-2005 à 17:51:18    

Ton $checkbox il sort d'où dans le 2eme morceau de code?
Si c'est du POST alors tu dois récup la valeur avant de la traiter, au lieu de $checkbox mets $_POST['checkbox'].....enfin regarde les tutos sur le net.


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 09-06-2005 à 07:19:46    

et puis entre balise code, c'est plus sympa a lire du code ^^'


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 09-06-2005 à 10:10:51    

for c moyen
 
fait plutot :
 
foreach($_POST['checkbox'] as $key => $value)
{
echo $key.' => '.$value.'<br/>';
}
 
Si ca marche pas , c peut etre que le mot checkbox est réservé

Reply

Marsh Posté le 12-06-2005 à 14:42:39    

Salut,
dans les versions de EasyPHP supérieures à 1.6.0.0 on ne peut plus faire ce genre de manipulations :

Code :
  1. <? if($var=="valeur" ) echo $var; ?>

il faut avant vérifier que la variable en question existe :

Code :
  1. <? if(isset($var)) if($var=="valeur" ) echo $var; ?>

Enfin c'est ce que j'ai cru avoir compris. Toujours est-il que c'est bien chiant.
Ton problème Jeetiz est à mon avis ici :

Code :
  1. for ($i = 0; $i <count($checkbox); $i++)

$checkbox n'a pas été définie. Tu devrais faire comme cela :

Code :
  1. <? $checkbox=$_POST['checkbox'];
  2. for ($i = 0; $i < count($checkbox); $i++) ?>


et au passage, renomme ton input :

Code :
  1. <? echo '<br><input type="checkbox" name="checkbox" value="'.$id.'">'; ?>


Pour le reste j'ai pas trop regardé.
 
Bonne chance
 
 :hello:

Reply

Marsh Posté le 12-06-2005 à 16:20:16    

Jeetiz a écrit :


Code :
  1. for ($i = 0; $i < count($checkbox); $i++)
  2.     {
  3. $id  = $checkbox[$i];
  4. $sql_req  = "SELECT * FROM rechercher WHERE id ='$id'";
  5. $req_req  = mysql_query($sql_req) or die(mysql_error());
  6. $question = mysql_result($req_req , 0 , "question" );
  7. echo "Question $id<br>";
  8. echo '<textarea name="upd_question" cols="80" rows="3">'.$question.'</textarea>';
  9.  
  10. $sql_req2  = "SELECT * FROM rechercher WHERE id ='$id'";
  11. $req_req2  = mysql_query($sql_req2) or die(mysql_error());
  12. $reponse = mysql_result($req_req2 , 0 , "reponse" );
  13. echo "Réponse $id<br>";
  14. echo '<textarea name="upd_reponse" cols="80" rows="8">'.$reponse.'</textarea>';
  15. }



beaucoup trop laid et lent ton code !
- tu effectues deux requete dans ton for alors que t'en a besoin d'une seule
-"select *" est à eviter
-tu effectue autant de requete qu'il y a de case à cocher alors que tu peux afficher la meme chose avec UNE SEULE requete

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed