[PHP] Problème d'indice

Résolu/Fermé
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008 - 27 sept. 2007 à 10:39
 nasbe - 27 sept. 2007 à 16:57
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>

12 réponses

Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 10:43
Le problème vient de ta liste déroulante. Or on ne la voit pas. J'imagine qu'elle est dans $ListeGroupe ...
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 10:46
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
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 12:19
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
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 10:51
Fais voir une capture du source HTML de la liste dans la page générée.
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 10:54
Ben tout est là en fait.

Tout est dans la même page.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 11:50
Non, je parle de la page HTML une fois interprétée, le résultat en sortie quoi !
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 11:59
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
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 12:09
OK, mais je veux voir si dans la page générée les valeurs de <option value=""> sont bien remplies !
0
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 12:17
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
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 14:11
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
Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 273
27 sept. 2007 à 15:01
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
nasbe Messages postés 30 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 11 juin 2008
27 sept. 2007 à 15:20
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
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