Page 1 sur 1

Plusieurs "IF" et valeurs dans un Foreach.

Posté : 07 mars 2015, 03:03
par dayou05
Bonjours / Bonsoir à tous !
Actuellement entrain d'écrire une page afin de faire des sessions au préalablement bien préparer sur papier comme me l'a conseiller Jreaux62, je suis entrain de perdre espoir à ce que mon code fonctionne et ce n'est pas histoire d'avoir "essayais" :

J'ai donc une formulaire avec à l'intérieur un tableau, jusque l'a rien de compliquer :

Code : Tout sélectionner

<form method="POST" id="formadd" action="Createtabadd.php" name="form"> <div id="sForm" class="sForm sFormPadding"> <table class="flatTable" table border="0" CELLSPACING="0" > <tr class="titleTr"> <td class="titleTd">Ajouter des groupes ainsi que leurs possibilitées</td> <td colspan="4"></td> <td class="plusTd2 button"></td> <td class="plusTd4 button"></td> <td class="plusTd1 button"></td> </tr> <tr class="headingTr"> <td><center>Nom du groupe</center></td> <td><center>Ajouter un capteur</center></td> <td><center>Modifier un capteur</center></td> <td><center>Supprimer un capteur</center></td> <td><center>Ajouter un groupe</center></td> <td><center>Modifier un groupe</center></td> <td><center>Supprimer un groupe</center></td> <td><center>Ajouter un utilisateur</center></td> <td><center>Modifier un utilisateur</center></td> <td><center>Supprimer un utilisateur</center></td> </tr> <tr id="sformadd"> <td><input type="text" name="nom[]" size="15" id="text0" value="" class="remplit" maxlength="20"><br></td> <td><select name="ajouter_capt[]" id="ajouter_capt"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="modifier_capt[]" id="modifier_capt"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="supprimer_capt[]" id="supprimer_capt"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="ajouter_group[]" id="ajouter_group"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="modifier_group[]" id="modifier_group"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="supprimer_group[]" id="supprimer_group"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="ajouter_user[]" id="ajouter_user"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="modifier_user[]" id="modifier_user"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> <td><select name="supprimer_user[]" id="supprimer_user"> <option value="Oui">Oui</option> <option value="Non">Non</option> </select></td> </tr> </table> </div> </form>
Sur on autre page à la validation du formulaire, je récupère ces valeurs ( J'ai bien penser à mettre les nom en tableau avec deux crochets après ) grâce au foreach :

Ce code fonctionne très bien :

Code : Tout sélectionner

if(!empty($_POST['nom']) ){ // pour CHAQUE LIGNE : // on va ICI boucler sur l'array() "nom" : foreach( $_POST['nom'] as $ii => $val ) { // $ii est l'index de CETTE ligne de l'array $_POST['nom'] // comme CHAQUE array() contient le même nombre de valeurs, $ii est AUSSI l'index des autres array() pour CETTE ligne : // pour CHAQUE champs : récupération des valeurs de la ligne + protection contre injection SQL ! if(isset($_POST['nom'])) $val_nom = mysql_real_escape_string($_POST['nom'][$ii]); // ou, ICI : mysql_real_escape_string($val); else $val_nom="nom"; if(isset($_POST['ajouter_capt'])) $val_id = mysql_real_escape_string($_POST['ajouter_capt'][$ii]); else $val_id="ajouter_capt"; if(isset($_POST['modif_capt'])) $val_type = mysql_real_escape_string($_POST['modif_capt'][$ii]); else $val_type="modif_capt"; if(isset($_POST['supp_capt'])) $val_gr = mysql_real_escape_string($_POST['supp_capt'][$ii]); else $val_gr="supp_capt"; if(isset($_POST['ajouter_group'])) $val_addgr = mysql_real_escape_string($_POST['ajouter_group'][$ii]); else $val_gr="ajouter_group"; if(isset($_POST['modifier_group'])) $val_user = mysql_real_escape_string($_POST['modifier_group'][$ii]); else $val_gr="modifier_group"; if(isset($_POST['supprimer_group'])) $val_user = mysql_real_escape_string($_POST['supprimer_group'][$ii]); else $val_gr="supprimer_group"; if(isset($_POST['ajouter_user'])) $val_user = mysql_real_escape_string($_POST['ajouter_user'][$ii]); else $val_gr="ajouter_user"; if(isset($_POST['modifier_user'])) $val_user = mysql_real_escape_string($_POST['modifier_user'][$ii]); else $val_gr="modifier_user"; if(isset($_POST['supprimer_user'])) $val_user = mysql_real_escape_string($_POST['supprimer_user'][$ii]); else $val_gr="supprimer_user"; // pour CETTE ligne, tous les champs sont obligatoires (doivent être remplis) if(!empty($val_nom) ){ // pour CETTE ligne, on écrit la requête sql $sql_insert = "INSERT INTO `permissions` ( `nom`, `ajouter_capt`, `modifier_capt`, `supp_capt`, `ajouter_gr`, `ajouter_user` ) VALUES ( '$val_nom', '$val_id', '$val_type', '$val_gr', '$val_addgr', '$val_user' )"; // pour CETTE ligne, on INSERE les informations du formulaire dans la table mysql_query($sql_insert) or die('Erreur SQL !'.$sql_insert.'<br>'.mysql_error()); } } }
Seulement pour l'ajout de mes sessions je suis obligé de rajouter cela et j'aimerais ne pas avoir à le changer :

Code : Tout sélectionner

if(isset($_POST['Nom'])) // Si le formulaire a été validé, on peut effectuer les actions PHP { $nom = $_POST['Nom']; // Le nom du groupe if( $_POST['ajouter_capt'] == 'ajouter_capt_oui') // Si dans le formulaire, on a indiqué que ce groupe pouvait ajouter un article... { $droits |= ajouter_capteur; // On ajoute la permission dans la variable $droits } ## Mêmes actions ci-dessous avec Modifier un article et Supprimer un article ## if( $_POST['modifier_capt'] == 'modifier_capt') { $droits |= modifier_capteur; } if( $_POST['supprimer_capt'] == 'supprimer_capt_oui') { $droits |= supprimer_capteur; } if( $_POST['ajouter_group'] == 'ajouter_group_oui') { $droits |= ajouter_groupe; } if( $_POST['modifier_group'] == 'modifier_group_oui') { $droits |= modifier_groupe; } if( $_POST['surpprimer_group'] == 'supprimer_group_oui') { $droits |= supprimer_groupe; } if( $_POST['ajouter_user'] == 'ajouter_user_oui') { $droits |= ajouter_user; } if( $_POST['modifier_user'] == 'modifier_user_oui') { $droits |= modifier_user; } if( $_POST['surpprimer_user'] == 'supprimer_user_oui') { $droits |= supprimer_user; } $requete = 'INSERT INTO permissions(nom, permissions) VALUES ("'.$nom.'", "'.@$droits.'")'; // On prépare la requête, ça va ajouter les permissions stockées dans $droits, ainsi que le nom $ex_requete = mysql_query($requete)or die(mysql_error()); // On exécute la requête ou on affiche une erreur if($ex_requete) echo 'Le groupe a bien été ajouté !<br />'; // Si c'est OK, on affiche un message disant que c'est bon else echo 'Le groupe n\'a pu être ajouté !<br />'; // Sinon, on en affiche un disant que ce n'est pas bon... }
J'ai alors réécrit le code afin de faire fonctionner cela mais après des essais, des Var_dump infinissables, des recherches infructueuses , je ne trouve pas la solution
Voici le code PHP en entier :

Code : Tout sélectionner

if(isset($_POST['nom'])) // Si le formulaire a été validé, on peut effectuer les actions PHP { foreach( $_POST['nom'] as $ii => $val ) { $nom = $_POST['nom']; // Le nom du groupe if( $_POST['ajouter_capt'] == 'ajouter_capt_oui') // Si dans le formulaire, on a indiqué que ce groupe pouvait ajouter un article... { $droits |= ajouter_capteur; // On ajoute la permission dans la variable $droits } ## Mêmes actions ci-dessous avec Modifier un article et Supprimer un article ## if( $_POST['modifier_capt'] == 'modifier_capt') { $droits |= modifier_capteur; } if( $_POST['supprimer_capt'] == 'supprimer_capt_oui') { $droits |= supprimer_capteur; } if( $_POST['ajouter_group'] == 'ajouter_group_oui') { $droits |= ajouter_groupe; } if( $_POST['modifier_group'] == 'modifier_group_oui') { $droits |= modifier_groupe; } if( $_POST['surpprimer_group'] == 'supprimer_group_oui') { $droits |= supprimer_groupe; } if( $_POST['ajouter_user'] == 'ajouter_user_oui') { $droits |= ajouter_user; } if( $_POST['modifier_user'] == 'modifier_user_oui') { $droits |= modifier_user; } if( $_POST['surpprimer_user'] == 'supprimer_user_oui') { $droits |= supprimer_user; } $requete = 'INSERT INTO permissions(nom, permissions) VALUES ("'.$nom.'", "'.@$droits.'")'; // On prépare la requête, ça va ajouter les permissions stockées dans $droits, ainsi que le nom $ex_requete = mysql_query($requete)or die(mysql_error()); // On exécute la requête ou on affiche une erreur if($ex_requete) echo 'Le groupe a bien été ajouté !<br />'; // Si c'est OK, on affiche un message disant que c'est bon else echo 'Le groupe n\'a pu être ajouté !<br />'; // Sinon, on en affiche un disant que ce n'est pas bon... } // pour TOUTES LES lignes : // on vérifie que les array() ne sont pas vides (qu'au moins UNE ligne du tableau soit remplie) if(!empty($_POST['nom']) ){ // pour CHAQUE LIGNE : // on va ICI boucler sur l'array() "nom" : // $ii est l'index de CETTE ligne de l'array $_POST['nom'] // comme CHAQUE array() contient le même nombre de valeurs, $ii est AUSSI l'index des autres array() pour CETTE ligne : // pour CHAQUE champs : récupération des valeurs de la ligne + protection contre injection SQL ! if(isset($_POST['nom'])) $val_nom = mysql_real_escape_string($_POST['nom'][$ii]); // ou, ICI : mysql_real_escape_string($val); else $val_nom="nom"; if(isset($_POST['ajouter_capt'])) $val_id = mysql_real_escape_string($_POST['ajouter_capt'][$ii]); else $val_id="ajouter_capt"; if(isset($_POST['modif_capt'])) $val_type = mysql_real_escape_string($_POST['modif_capt'][$ii]); else $val_type="modif_capt"; if(isset($_POST['supp_capt'])) $val_gr = mysql_real_escape_string($_POST['supp_capt'][$ii]); else $val_gr="supp_capt"; if(isset($_POST['ajouter_group'])) $val_addgr = mysql_real_escape_string($_POST['ajouter_group'][$ii]); else $val_gr="ajouter_group"; if(isset($_POST['modifier_group'])) $val_user = mysql_real_escape_string($_POST['modifier_group'][$ii]); else $val_gr="modifier_group"; if(isset($_POST['supprimer_group'])) $val_user = mysql_real_escape_string($_POST['supprimer_group'][$ii]); else $val_gr="supprimer_group"; if(isset($_POST['ajouter_user'])) $val_user = mysql_real_escape_string($_POST['ajouter_user'][$ii]); else $val_gr="ajouter_user"; if(isset($_POST['modifier_user'])) $val_user = mysql_real_escape_string($_POST['modifier_user'][$ii]); else $val_gr="modifier_user"; if(isset($_POST['supprimer_user'])) $val_user = mysql_real_escape_string($_POST['supprimer_user'][$ii]); else $val_gr="supprimer_user"; // pour CETTE ligne, tous les champs sont obligatoires (doivent être remplis) if(!empty($val_nom) ){ // pour CETTE ligne, on écrit la requête sql $sql_insert = "INSERT INTO `permissions` ( `nom`, `ajouter_capt`, `modifier_capt`, `supp_capt`, `ajouter_gr`, `ajouter_user` ) VALUES ( '$val_nom', '$val_id', '$val_type', '$val_gr', '$val_addgr', '$val_user' )"; // pour CETTE ligne, on INSERE les informations du formulaire dans la table mysql_query($sql_insert) or die('Erreur SQL !'.$sql_insert.'<br>'.mysql_error()); } } } ?>
Ais-je le "droit" de faire :

Code : Tout sélectionner

if(isset($_POST['ajouter_group'] == 'ajouter_capt_oui')) $val_addgr = mysql_real_escape_string($_POST['ajouter_group'][$ii]); else $val_gr="ajouter_group";
Par éxemple ?

Merci pour votre aide !

Re: Plusieurs "IF" et valeurs dans un Foreach.

Posté : 07 mars 2015, 11:58
par Nestecha
<?php

if(isset($_POST['nom'])) // Si le formulaire a été validé, on peut effectuer les actions PHP
{
 foreach( $_POST['nom'] as $ii => $val ) 
   {
 
        $nom = $_POST['nom']; // Le nom du groupe
 
        if( $_POST['ajouter_capt'] == 'ajouter_capt_oui')  // Si dans le formulaire, on a indiqué que ce groupe pouvait ajouter un article...
        {
                $droits |= 'ajouter_capteur'; // On ajoute la permission dans la variable $droits
        }                                     ## Mêmes actions ci-dessous avec Modifier un article et Supprimer un article ##
        if( $_POST['modifier_capt'] == 'modifier_capt') 
        {
                $droits |= 'modifier_capteur';
        }
        if( $_POST['supprimer_capt'] == 'supprimer_capt_oui')  
        {
                $droits |= 'supprimer_capteur';
        }
 if( $_POST['ajouter_group'] == 'ajouter_group_oui')  
        {
                $droits |= 'ajouter_groupe';
        }
        if( $_POST['modifier_group'] == 'modifier_group_oui')
        {
                $droits |= 'modifier_groupe';
        }
        if( $_POST['surpprimer_group'] == 'supprimer_group_oui')
        {
                $droits |= 'supprimer_groupe';
        }
      if( $_POST['ajouter_user'] == 'ajouter_user_oui')  
        {
                $droits |= 'ajouter_user';
        }
        if( $_POST['modifier_user'] == 'modifier_user_oui')
        {
                $droits |= 'modifier_user';
        }
        if( $_POST['surpprimer_user'] == 'supprimer_user_oui')
        {
                $droits |= 'supprimer_user';
        }
 
        $requete = 'INSERT INTO permissions(nom, permissions) 
        VALUES ("'.$nom.'", "'.@$droits.'")'; // On prépare la requête, ça va ajouter les permissions stockées dans $droits, ainsi que le nom
 
        $ex_requete = mysql_query($requete)or die(mysql_error()); // On exécute la requête ou on affiche une erreur
        if($ex_requete) echo 'Le groupe a bien été ajouté !<br />'; // Si c'est OK, on affiche un message disant que c'est bon
        else echo 'Le groupe n\'a pu être ajouté !<br />'; // Sinon, on en affiche un disant que ce n'est pas bon...
}
// pour TOUTES LES lignes :
// on vérifie que les array() ne sont pas vides (qu'au moins UNE ligne du tableau soit remplie)
if(!empty($_POST['nom'])  ){
   // pour CHAQUE LIGNE : 
   // on va ICI boucler sur l'array() "nom" :
   // $ii est l'index de CETTE ligne de l'array $_POST['nom']
      // comme CHAQUE array() contient le même nombre de valeurs, $ii est AUSSI l'index des autres array() pour CETTE ligne : 
 
      // pour CHAQUE champs : récupération des valeurs de la ligne + protection contre injection SQL !
 
 
if(isset($_POST['nom']))      $val_nom = mysql_real_escape_string($_POST['nom'][$ii]); // ou, ICI :  mysql_real_escape_string($val);
else       $val_nom="nom";
 
if(isset($_POST['ajouter_capt']))      $val_id = mysql_real_escape_string($_POST['ajouter_capt'][$ii]);
else     $val_id="ajouter_capt";
 
if(isset($_POST['modif_capt']))     $val_type = mysql_real_escape_string($_POST['modif_capt'][$ii]);
else   $val_type="modif_capt";
 
if(isset($_POST['supp_capt']))     $val_gr = mysql_real_escape_string($_POST['supp_capt'][$ii]);
else   $val_gr="supp_capt";
 
if(isset($_POST['ajouter_group']))     $val_addgr = mysql_real_escape_string($_POST['ajouter_group'][$ii]);
else   $val_gr="ajouter_group";
 
if(isset($_POST['modifier_group']))     $val_user = mysql_real_escape_string($_POST['modifier_group'][$ii]);
else   $val_gr="modifier_group";
 
if(isset($_POST['supprimer_group']))     $val_user = mysql_real_escape_string($_POST['supprimer_group'][$ii]);
else   $val_gr="supprimer_group";
 
if(isset($_POST['ajouter_user']))     $val_user = mysql_real_escape_string($_POST['ajouter_user'][$ii]);
else   $val_gr="ajouter_user";
 
if(isset($_POST['modifier_user']))     $val_user = mysql_real_escape_string($_POST['modifier_user'][$ii]);
else   $val_gr="modifier_user";
 
if(isset($_POST['supprimer_user']))     $val_user = mysql_real_escape_string($_POST['supprimer_user'][$ii]);
else   $val_gr="supprimer_user";
 
 
      // pour CETTE ligne, tous les champs sont obligatoires (doivent être remplis)
      if(!empty($val_nom)  ){
 
         // pour CETTE ligne, on écrit la requête sql 
         $sql_insert = "INSERT INTO `permissions` 
            ( `nom`, `ajouter_capt`, `modifier_capt`, `supp_capt`, `ajouter_gr`, `ajouter_user` )
            VALUES
            ( '$val_nom', '$val_id', '$val_type', '$val_gr', '$val_addgr', '$val_user' )";
 
         // pour CETTE ligne, on INSERE les informations du formulaire dans la table 
         mysql_query($sql_insert) or die('Erreur SQL !'.$sql_insert.'<br>'.mysql_error()); 
 
 
 
 
 
      }
   }
}
Tu n'as pas mis de guillemets autour de "ajouter_capteur", "modifier_capteur" etc..

Re: Plusieurs "IF" et valeurs dans un Foreach.

Posté : 07 mars 2015, 12:12
par dayou05
Je viens de corriger celà et tout relire merci ! Seulement ma structure n'est toujours pas bonne ?