[PHP] Problème d'indice

Résolu
nasbe Messages postés 30 Date d'inscription   Statut Membre -  
 nasbe -
Bonjour,

J'ai créer une liste déroulante dynamique qui récupère les données d'une table, je n'ai pas mis le code car je sais quelle fonctionne, je l'affiche dans mon formulaire de cette manière : <td><?php print $ListeGroupe;?></td>. Maintenant ce que j'ai fait, c'est le petit bout de code ci-dessous, qui devrait récupérer la valeur sélectionnée de la liste déroulante et détruire les données de la table ou l'identificateur aurait le même indice.

Simplement voici mon erreur quand j'appuye sur le bouton supprimer j'obtiens le message suivant: delete from groupe where IdGroupe='0' . Que je choisisse n'importe quelle valeur de ma liste déroulante, il me mettra ce message. Merci de pouvoir me débloquer ca fait un bail que je suis sur le problème.

<?php
if (isset ($_REQUEST['Supprimer'])){
$bd ='gestionacces';
$lien = mysql_pconnect ('localhost', 'root', '');
mysql_select_db($bd);
$table = 'groupe';
if ($lien == FALSE){
echo "connexion impossible à la base $bd";
} else {
if($_POST['op']=="suppr"){
$requete="delete from $table where IdGroupe='".$_POST['listeGroupe']."'";
echo $requete;
mysql_query($requete);
}
}
}
?>


Voici ici mon formulaire

<form Method="POST" Action="<?echo $_SERVER["PHP_SELF"]?>">

<table>
<tr></tr>
<tr>
<td>Nom du groupe: </td>
<td><?php print $ListeGroupe;?></td>
</tr>
<tr>
<td></td>
<input type="hidden" name="op" value="suppr">
<td><input type ="submit" name = "Supprimer" value="Supprimer"></td>
</tr>
</table>
</form>
Configuration: Windows Vista
Internet Explorer 7.0

12 réponses

  1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Le problème vient de ta liste déroulante. Or on ne la voit pas. J'imagine qu'elle est dans $ListeGroupe ...
    0
  2. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Exactement elle est dans $ListeGroupe. Voici le code au cas ou.

    <?php
    // Création de la liste déroulante des groupes
    $bd ='gestionacces';

    $lien = mysql_pconnect ('localhost', 'root', '');
    mysql_select_db($bd);
    $table = 'groupe';
    if ($lien == FALSE){
    echo "connexion impossible à la base $bd";
    } else

    $sql = mysql_query ("SELECT IdGroupe, Groupe FROM $table ORDER BY Groupe");
    if ($sql == FALSE){
    echo "erreur de resultat";
    echo mysql_error();
    } else {
    //Exécution de la requête
    $ListeGroupe = "<SELECT NAME='listeGroupe'>";
    $ListeGroupe.= "<OPTION VALUE=0>Choisissez</OPTION>";
    // On boucle sur la table
    while ($tableauGroupes = mysql_fetch_array($sql)) {
    $IdGroupe = $tableauGroupes["IdGroupe"];
    $Groupe = $tableauGroupes["Groupe"];
    $ListeGroupe .= "<OPTION VALUE='$IdGroupe'>$Groupe</OPTION>";
    }
    }
    $ListeGroupe .= "</SELECT>";
    mysql_close($lien);
    ?>
    0
    1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
       
      Essaye de modifier ton code comme ceci :

      <?php
      // Création de la liste déroulante des groupes
      $bd ='gestionacces';
      
      $lien = mysql_pconnect ('localhost', 'root', '');
      mysql_select_db($bd);
      $table = 'groupe';
      if ($lien == FALSE){
      echo "connexion impossible à la base $bd";
      } else
      
      $sql = mysql_query ("SELECT IdGroupe, Groupe FROM $table ORDER BY Groupe");
      if (!mysql_num_rows($sql)){
      echo "erreur de resultat";
      echo mysql_error();
      } else {
      //Exécution de la requête
      $ListeGroupe = "<SELECT NAME='listeGroupe'>";
      $ListeGroupe.= "<OPTION VALUE=0>Choisissez</OPTION>";
      // On boucle sur la table
      while ($tableauGroupes = mysql_fetch_array($sql)) {
      $IdGroupe = $tableauGroupes["IdGroupe"];
      $Groupe = $tableauGroupes["Groupe"];
      $ListeGroupe .= "<OPTION VALUE='$IdGroupe'>$Groupe</OPTION>";
      }
      }
      $ListeGroupe .= "</SELECT>";
      mysql_close($lien);
      ?>
      0
  3. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Fais voir une capture du source HTML de la liste dans la page générée.
    0
  4. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Ben tout est là en fait.

    Tout est dans la même page.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Non, je parle de la page HTML une fois interprétée, le résultat en sortie quoi !
    0
  7. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Ben en fait j'ai une page avec quatre tables qui correspondent au table de ma base de données. Elles sont chargées dynamiquement.
    et j'ai une page de gestion ou je fais les traitements. Quand j'appuie sur le bouton ajouter un groupe par exemple. Ma base de donnée se complète et ma page html ou j'ai mes tables égalements. Maintenant j'aimerai supprimer un groupe, hors la j'ai besoin de récupérer la valeur de la liste déroulante correspondante.
    0
  8. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    OK, mais je veux voir si dans la page générée les valeurs de <option value=""> sont bien remplies !
    0
  9. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Je crois que j'ai de la peine a te comprendre, je suis en peu novice sur les bords. Alors oui dans ma page générée, c'est-à-dire la page de gestion, j'ai effectivement dans ma liste déroulante les noms des groupes présent dans la base de donnée, si j'ajoute un groupe, ma liste déroulante se met à jour, si je supprime un groupe(depuis la BD), ma liste déroulante se met à jour également, donc elle fonctionne bien à ce niveau.

    // On boucle sur la table
    while ($tableauGroupes = mysql_fetch_array($sql)) {
    $IdGroupe = $tableauGroupes["IdGroupe"];
    $Groupe = $tableauGroupes["Groupe"];
    $ListeGroupe .= "<OPTION VALUE='$IdGroupe'>$Groupe</OPTION>";
    }
    0
  10. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Voilà, je viens enfin de comprendre ce que tu demandais après m'etre renseigne, désolé. Alors voilà ma page html générée.

    <html>
    <head>
    <title>Gestion des groupes</title>
    </head>
    <body bgcolor="eeeeeeff">
    <h3>Gestion des groupes</h3>

    <form Method="POST" Action="/zre/Travail Diplome/groupe.php">

    <fieldset>
    <legend>Ajouter un groupe</legend>

    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><input type="texte" name="NomGroupe" size="40"</td>
    </tr>
    <tr>
    <td>Description du groupe </td>
    <td><input type="texte" name="Description" size="40"</td>
    </tr>
    <tr>
    <td></td>
    <td><input type ="submit" name = "Creer" value="Créer"></td>
    </tr>
    </table>
    </fieldset>
    <p></p>
    <fieldset>
    <legend>Supprimer un groupe</legend>

    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><SELECT NAME='listeGroupe'><OPTION VALUE=0>Choisissez</OPTION><OPTION VALUE='4'>Invité</OPTION><OPTION VALUE='3'>Workflows</OPTION></SELECT></td>
    </tr>
    <tr>
    <td></td>
    <input type="hidden" name="op" value="suppr">
    <td><input type ="submit" name = "Supprimer" value="Supprimer"></td>
    </tr>
    </table>
    </fieldset>
    <p></p>
    <fieldset>
    <legend>Ajouter ou enlever un utilisateur d'un groupe</legend>
    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><SELECT NAME='listeGroupe'><OPTION VALUE=0>Choisissez</OPTION><OPTION VALUE='4'>Invité</OPTION><OPTION VALUE='3'>Workflows</OPTION></SELECT></td>
    </tr>
    <tr>
    <td>Nom d'utilisateur: </td>
    <td><SELECT NAME='listeUtilisateur'><OPTION VALUE=0>Choisissez</OPTION><OPTION VALUE='224'>Babush</OPTION><OPTION VALUE='225'>Dadou</OPTION><OPTION VALUE='226'>Ivan</OPTION><OPTION VALUE='227'>Marc</OPTION><OPTION VALUE='223'>Nasbe</OPTION><OPTION VALUE='228'>Nicolas</OPTION><OPTION VALUE='229'>Paul</OPTION><OPTION VALUE='230'>Sam</OPTION><OPTION VALUE='231'>Seb</OPTION><OPTION VALUE='232'>Xacsous</OPTION></SELECT></td>
    </tr>
    <tr>
    <td></td>
    <td><input type ="submit" name = "action" value="Ajouter">
    <input type ="submit" name = "action" value="Enlever"></td>
    </tr>
    </table>
    </fieldset>

    </form>
    <p><a href="gestion.php">Afficher la gestion des accès</a></p>
    <p><a href="TableBaseDonnees.php">Afficher les tables de la base de données</a></p>

    </body>
    </html>
    0
  11. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Essaye ceci :

    <?php
    // Création de la liste déroulante des groupes
    $bd ='gestionacces';
    
    $lien = mysql_pconnect ('localhost', 'root', '');
    mysql_select_db($bd);
    $table = 'groupe';
    if ($lien == FALSE){
    echo "connexion impossible à la base $bd";
    } else
    
    $sql = mysql_query ("SELECT IdGroupe, Groupe FROM $table ORDER BY Groupe");
    if (!mysql_num_rows($sql)){
    echo "erreur de resultat";
    echo mysql_error();
    } else {
    //Exécution de la requête
    $ListeGroupe = '<SELECT NAME="listegroupes">';
    $ListeGroupe.= '<OPTION VALUE="0">Choisissez</OPTION>';
    // On boucle sur la table
    while ($tableauGroupes = mysql_fetch_array($sql)) {
    $IdGroupe = $tableauGroupes["IdGroupe"];
    $Groupe = $tableauGroupes["Groupe"];
    $ListeGroupe .= '<OPTION VALUE="'.$IdGroupe.'">'.$Groupe.'</OPTION>';
    }
    }
    $ListeGroupe .= '</SELECT>';
    mysql_close($lien);
    ?>


    Et ça dans l'autre code :

    <?php
    if (isset ($_REQUEST['Supprimer'])){
    $bd ='gestionacces';
    $lien = mysql_pconnect ('localhost', 'root', '');
    mysql_select_db($bd);
    $table = 'groupe';
    if ($lien == FALSE){
    echo "connexion impossible à la base $bd";
    } else {
    if($_POST['op']=="suppr"){
    $requete="delete from $table where IdGroupe=".intval($_POST['listegroupes']);
    echo $requete;
    mysql_query($requete);
    }
    }
    }
    ?> 


    Je ne pense pas que ça change grand chose, mais les attributs HTML doivent de préférence être entre guillemets doubles.
    Par ailleurs j'ai changé la variable listeGroupe en listegroupes pour bien la différencier. Enfin j'ai enlevé les guillemets autour de la valeur de IdGroupe dans la requête SQL car il s'agit d'un entier !
    0
  12. nasbe Messages postés 30 Date d'inscription   Statut Membre
     
    Voilà j'ai fais les modifications et quand je fais un echo requete, j'ai toujours
    le message delete from groupe where IdGroupe=0

    A mon avis, il y a un problème lors de la récupération de Option Value dans le traitement. Je comprends pas, je m'arrache les cheveux depuis un bout de temps.

    <?php
    // Création de la liste déroulante des groupes
    $bd ='gestionacces';

    $lien = mysql_pconnect ('localhost', 'root', '');
    mysql_select_db($bd);
    $table = 'groupe';
    if ($lien == FALSE){
    echo "connexion impossible à la base $bd";
    } else

    $sql = mysql_query ("SELECT IdGroupe, Groupe FROM $table ORDER BY Groupe");
    if (!mysql_num_rows($sql)){
    echo "erreur de resultat";
    echo mysql_error();
    } else {
    //Exécution de la requête
    $ListeGroupe = '<SELECT NAME="listegroupes">';
    $ListeGroupe.= '<OPTION VALUE="0">Choisissez</OPTION>';
    // On boucle sur la table
    while ($tableauGroupes = mysql_fetch_array($sql)) {
    $IdGroupe = $tableauGroupes["IdGroupe"];
    $Groupe = $tableauGroupes["Groupe"];
    $ListeGroupe .= '<OPTION VALUE="'.$IdGroupe.'">'.$Groupe.'</OPTION>';
    }
    }
    $ListeGroupe .= '</SELECT>';
    mysql_close($lien);
    ?>

    <?php
    if (isset ($_REQUEST['Supprimer'])){
    $bd ='gestionacces';
    $lien = mysql_pconnect ('localhost', 'root', '');
    mysql_select_db($bd);
    $table = 'groupe';
    if ($lien == FALSE){
    echo "connexion impossible à la base $bd";
    } else {
    if($_POST['op']=="suppr"){
    $requete="delete from $table where IdGroupe=".intval($_POST['listegroupes']);
    echo $requete;
    mysql_query($requete);
    }
    }
    }
    ?>

    <html>
    <head>
    <title>Gestion des groupes</title>
    </head>
    <body bgcolor="eeeeeeff">
    <h3>Gestion des groupes</h3>

    <form Method="POST" Action="<?echo $_SERVER["PHP_SELF"]?>">

    <fieldset>
    <legend>Ajouter un groupe</legend>

    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><input type="texte" name="NomGroupe" size="40"</td>
    </tr>
    <tr>
    <td>Description du groupe </td>
    <td><input type="texte" name="Description" size="40"</td>
    </tr>
    <tr>
    <td></td>
    <td><input type ="submit" name = "Creer" value="Créer"></td>
    </tr>
    </table>
    </fieldset>
    <p></p>
    <fieldset>
    <legend>Supprimer un groupe</legend>

    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><?php print $ListeGroupe;?></td>
    </tr>
    <tr>
    <td></td>
    <input type="hidden" name="op" value="suppr">
    <td><input type ="submit" name = "Supprimer" value="Supprimer"></td>
    </tr>
    </table>
    </fieldset>
    <p></p>
    <fieldset>
    <legend>Ajouter ou enlever un utilisateur d'un groupe</legend>
    <table>
    <tr></tr>
    <tr>
    <td>Nom du groupe: </td>
    <td><?php print $ListeGroupe;?></td>
    </tr>
    <tr>
    <td>Nom d'utilisateur: </td>
    <td><?php print $ListeUtilisateur;?></td>
    </tr>
    <tr>
    <td></td>
    <td><input type ="submit" name = "action" value="Ajouter">
    <input type ="submit" name = "action" value="Enlever"></td>
    </tr>
    </table>
    </fieldset>

    </form>
    <p><a href="gestion.php">Afficher la gestion des accès</a></p>
    <p><a href="TableBaseDonnees.php">Afficher les tables de la base de données</a></p>

    </body>
    </html>
    0
  13. nasbe
     
    Salut,

    Je sens que tu vas me tuer mais j'ai pu régler mon problème.

    Tout d'abord je te remercie du temps que tu m'as accordé, j'ai enfin pu régler mon problème, en fait le problème fut que j'utilisais dans la même page une autre liste déroulante qui récupérait aussi les noms, et dans mon formulaire je l'appelai de la même manière.

    <td><?php print $ListeGroupe;?></td>

    Simplement du moment que deux listes avait le même nom, ca coincait. Donc désolé de tout ce temps que je t'ai fais perdre et encore mille fois merci de ton aide.
    0