Index non défini sur tableau de checkbox ???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Index non défini sur tableau de checkbox ???

Re: Index non défini sur tableau de checkbox ???

par Saian » 24 févr. 2020, 15:14

Je veux pas être relou mais je t'assure qu'un undefined index sur un isset ça n'est pas possible.

Une erreur sur le foreach non, si la condition isset($_POST['suppcheck']) est true alors tu ne peux pas avoir une erreur undefined index sur le foreach($_POST['suppcheck'] as $Num) juste en dessous (sauf erreur de syntax, genre tu oublies un p à supcheck...).
Et si la condition est false alors le script ne passera pas sur le foreach, donc pas d'erreur non plus.

Par contre une erreur undefined index suppcheck sur cette ligne //$donnees=$_POST['suppcheck']; si en fait elle n'est pas commentée, ça c'est tout à fait possible.

Et le numéro de ligne pas bon, non ce n'est pas possible, le numéro de ligne correspond toujours à la ligne en erreur. Mais des fois oui le numéro de ligne peut être trompeur (par exemple sur un oubli de fermeture de chaine)

Aucun problème avec un petit code comme ça, pas de notice undefined index quel que soit le cas (checkbox cochées ou non) :
<?php
if (isset($_POST['suppcheck'])) {
  foreach ($_POST['suppcheck'] as $supp)
    echo "$supp<br/>";
}
?>
<form method="post">
  <label><input type="checkbox" name="suppcheck[]" value="1"/> 1</label>
  <label><input type="checkbox" name="suppcheck[]" value="2"/> 2</label>
  <input type="submit" value="send"/>
</form>

Re: Index non défini sur tableau de checkbox ???

par Jpx1 » 24 févr. 2020, 14:52

Comme je confirme, il me met bien cette erreur se référant à cette ligne (if isset...) , mais ne serait-ce pas une erreur sur la ligne suivante (for each...), (parfois j'ai remarqué malgré qu'il indique le N° de ligne, l'erreur peut être sur les lignes suivantes..???.)
J'avais fait un var_dump de Suppcheck tout au début (Rf. supp.php) (il m'affichait: Null).
Actuellement, je n ai pas la config nécessaire pour continuer à tester, mais je pense continuer demain, mais je ne sais plus trop quoi faire....
Merci de m'avoir répondu qd même.

Re: Index non défini sur tableau de checkbox ???

par Saian » 24 févr. 2020, 14:30

PS : j'avais noté une erreur ici aussi mais j'attendais la suite pour la relever car à priori même si value n'est pas bon, ça ne devrait pas empêcher la transmission de l'input :
<!-- pas bon -->
<input type="checkbox" name="suppcheck[]" value=".$donnees['Num']." />
<!-- bon -->
<input type="checkbox" name="suppcheck[]" value="<?php echo $donnees['Num']; ?>" />
Tu as bien un form, il est bien en post, le name de l'input semble ok donc à priori tout va bien, sauf erreur de syntaxe que j'aurai raté.

Le bouton submit peut être mais j'en doute ?
<button type="submit" style="padding : 15px"> VALIDER </button>
<input type="submit" value="VALIDER" style="padding : 15px"/>
Pour ça qu'après reste que ce message d'erreur php qui colle pas avec le if isset...

Re: Index non défini sur tableau de checkbox ???

par Jpx1 » 24 févr. 2020, 14:20

Laisse tomber.

Re: Index non défini sur tableau de checkbox ???

par Saian » 24 févr. 2020, 14:15

Ok pour le côté message en français traduit d'un "Notice: undefined index: suppcheck". D'accord. Mais toujours est-il que c'est impossible d'obtenir cette erreur sur un isset.

Avec ce code seul la dernière ligne lève une erreur Notice: Undefined index: fakeindex in [...] on line 3
<?php
isset($_POST['fakeindex']);
$_POST['fakeindex'];
Avec le isset, pas d'erreur. Donc c'est pour ça que je dis que le message d'erreur ne colle pas pour le if (isset($_POST['suppcheck'])).

Re: Index non défini sur tableau de checkbox ???

par Jpx1 » 24 févr. 2020, 14:08

Pourtant, c'est bien le msg que j'ai sur l'écran, je ne l'invente pas...

Re: Index non défini sur tableau de checkbox ???

par Saian » 24 févr. 2020, 13:37

Salut,
il m'affiche l'erreur "Avis: index non défini: suppcheck" sur la ligne (If isset ($_POST['suppcheck']))....
Ça n'a pas de sens, déjà le message d'erreur ne ressemble pas à un message d'erreur standard php. Et tu ne peux pas avoir une erreur undefined index alors même que tu utilises isset qui sert justement à vérifier si l'index existe.

Index non défini sur tableau de checkbox ???

par Jpx1 » 24 févr. 2020, 13:27

Bonjour,

Je débute et commence à me faire une gestion (très simple au départ) de mes DVD.

./ J'ai un 1er script (Tableau.php) qui charge les enregistrements de ma table en BDD et les affichent ds un tableau HTML de 5 colonnes (Num, Titre, Genre, Durée,Annee) (Tout ceci marche très bien) puis j'ai voulu rajouter une colonne (Checkbox) permettant de supprimer l'enr. si checkbox est coché.

(Du coup, mon tableau s'est transfromé en formulaire car j'ai rajoute la balise <form>)


2/J'ai un 2ene script (Trait.php) qui récupére la colonne des checkbox via POST (vérifie si renseigné) et supprime l'enr. en fonction de la valeur du checbox (en l'occurrence le Num du DVD)




Mon pb c'est que, bien que je coche qqs checkbox et valide, il m'affiche l'erreur "Avis: index non défini: suppcheck" sur la ligne (If isset ($_POST['suppcheck'])).... mais parfois, j'ai remarqué ,les erreurs se trouvent sur les lignes suivantes (J'ai pourtant
vérifié les noms des index et tout me semble correct...)

(J'ai viré toute la partie CSS(1er script) qui était en dur (provisoirement) pour la lisibilité du prog.

Merci bcp Pr vos conseils car je galère pas mal depuis un moment, j'ai regardé avant sur le net mais rien trouvé (peut-être un truc tout bête..)

NB: j'ai pourtant bien déclaré mes checkbox en tableau: suppcheck[]
Je ne sais pas trop comment insérer mes scripts...??? (j'espère que ca va marché)
[/<!DOCTYPE html>
<HTML>
 <head>
  <title> Gestion dvd </title>
      <meta charset="utf-8"/>
     
 
      

<!--  ***************  INSERTION des PARTIES (HEADER, MENU, FOOTER,...) ***** -->

       <?php include("menuDVD.php"); ?>

<!--  ******************************************************** -->

 
 
<!--  ***************  CNX a la BDD ***** -->

       <?php include("cnxBDD.php"); ?>

<!--  ******************************************************** -->


<?php   

      
 $reponse = $bdd->query('SELECT * FROM DVD');



         
?>
    
 <body> 
    <form  method="post" action="supp.php">
       <table class="scrolldown"> 
      
          
<!--  =======================================================   -->
<!--  =    Affichage  ENTETE  Tableau                           -->
<!--  =======================================================   -->
           <thead>
             <tr>
                 <th>Numero</th>
                 <th class="coltitre" >Titre</th>
                 <th class="colgenre" >Genre</th>
                 <th>Duree</th>
                 <th>Annee</th>
                 <th>Supp</th>
             </tr>
           </thead>


         <tbody>
<?php

          // BOUCLE SUR LECTURE DU CURSOR
          //   ------------------------

           while ($donnees = $reponse->fetch())
           {
           //  var_dump($donnees);
           
          
           // DONNEES A AFFICHER DS LIGNE DU TABLEAU 
          //    ----------------------
?>

      
          <tr>
              <td><?php echo $donnees['Num'];   ?></td>  
              <td  class="coltitre" ><div class="debord"><?php echo $donnees['Titre']; ?></div></td>
              <td> class="colgenre"><div class="debord"><?php echo $donnees['Genre']; ?></td>
              <td><?php echo $donnees['Duree']; ?></td>
              <td><?php echo $donnees['Annee']; ?></td>  
              <td><input type="checkbox" name="suppcheck[]" value=".$donnees['Num']." /></td>
              
          </tr>
<?php
           }
  
          //  var_dump($donnees);

$reponse->closeCursor();

?>
          </tbody>   

      
        
          </table> 
 
          <div id="Valid">
                <button type="submit" style="padding : 15px"> VALIDER </button>
          </div>
	
      </form>
 
 

</body>
</HTML>
PHP]

[PHP]<!DOCTYPE html>
<HTML>
 <head>
  <title> Gestion dvd </title>
      <meta charset="utf-8"/>
     
  

<?php

//---------------------------------------------------------------*/
//
//                  Titre : Supp des enr en BDD si checkbox cochés    
//                                                                                       
//---------------------------------------------------------------*/



<!--  ***************  CNX a la BDD ***** -->

       <?php include("cnxBDD.php"); ?>

<!--  ******************************************************** -->
  	

<?php 


//        TEST si TABLEAU des checkbox est RENSEIGNE 
//               ---------------------


//$donnees=$_POST['suppcheck'];
//var_dump($donnees);

           if (isset($_POST['suppcheck']))
              { 
 
          // BOUCLE sur les CHECKBOX COCHES
          //   ------------------------

              foreach($_POST['suppcheck'] as $Num )
            
                 {
            
          //     Trait de la suppression des enr.
                
                 }

              }
            else 
              {
                echo 'Veuillez cocher checkbox ';
              }
 

?>
</HTML>