IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Plusieurs "IF" et valeurs dans un Foreach.


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 58
    Points : 23
    Points
    23
    Par défaut Plusieurs "IF" et valeurs dans un Foreach.
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    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 !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    mon pauvre dayou05, tu vas finir par EXPLOSER en plein vol !!

    Je sais que la notion d'array(), et surtout array() multi-dimensions n'est pas facile à appréhender, car assez abstraite.
    Idem pour le foreach...
    Je le sais, car j'ai moi-même eu du mal au début...

    Mais ce n'est pas une raison pour écrire du code n'importe comment, en espérant que : "ça finira bien par marcher !"

    Le MEILLEUR CONSEIL qu'on puisse te donner ici :
    => COMMENCE avec un EXEMPLE SIMPLE !!!

    Avant de vouloir le faire fonctionner à tout prix sur TON projet, fait un EXEMPLE SIMPLE d'utilisation :
    • une table avec 3 lignes, 1 input + 1 checkbox par ligne, écrite "en dur" (sans PHP)
    • Des noms de variables explicites.


    Tu NE PEUX PAS continuer à bidouiller SANS MAITRISER ce que tu fais.

    DE PLUS, dans le cas présent, je suis persuadé que tu t'es engagé sur une mauvaise voie.
    Ce n'est pas comme ça qu'il faut traiter ton problème.

    TANT QUE TU NE SAURAS PAS ANALYSER, COMPRENDRE, EXPLIQUER, EXPRIMER CLAIREMENT :
    • la PROBLEMATIQUE (ce que tu as, ce que tu souhaites obtenir)
    • et la METHODOLOGIE (comment tu comptes t'y prendre)

    INUTILE DE CODER !!!
    Tu perds ton temps.
    Dernière modification par Invité ; 07/03/2015 à 01h58.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je rejoinds le museau.
    Si tu maîtrises certains éléments, écris un code simple les utilisant en observe précisément comment ils se comportent.

    Dans ton cas pourquoi tu mets des [] a tout tes noms de champs ?
    Et pour $droits |= modifier_user; tu es sur de ta syntaxe ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/07/2009, 15h51
  2. Plusieurs valeurs dans un value
    Par nebule dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2004, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo