Gestion Membre
RésoluGigatrappeur Messages postés 230 Statut Membre -
Pour gérer les membres j'ai des chekboxs et une liste déroulante en autre.
Je n'arrive pas à saisir pourquoi cela ne fonctionne pas, je suis curieux de comprendre mais pour ça j'ai besoin de vos compétence en PHP.
Si vous avez un moment pour me dire ce que vous en pensez.
Mes checkboxs s'insert bien dans ma BDD mais pas ma liste déroulante.
Si par contre je remplace ma liste déroulante par des checkboxs cela fonctionne.
Merci de votre aide éventuel.
<!--#######################################################################################################################################-->
<?php
$sql = "SELECT * FROM tb_gestion";
$requete1 = $bdd->prepare($sql);
$requete1->execute();
while ($donnees = $requete1->fetch(PDO::FETCH_ASSOC))
{
echo"<tr>";
echo"<td width='20%'>".$donnees['nom_gestion']."</td>";
echo"<td width='20%'><input type='checkbox' name='nom_gestion[]' value='".$donnees['id_gestion']."'></td>";
}
$requete1->closeCursor();
?>
<!--#######################################################################################################################################-->
<?php
echo"<td width='20%'>";
echo'<select style="width: auto" name="nom_statut" class="content_input" disabled="">';
echo"<option value=''>- - - Membre - - -</option>";
$sql = "SELECT * FROM tb_statut";
$resultat2 = $bdd->prepare($sql);
$resultat2->execute();
while ($donnees = $resultat2->fetch(PDO::FETCH_ASSOC))
{
echo"<option value=".$donnees["nom_statut"].">".$donnees["nom_statut"]."</option>\n";
}
echo"</select>";
echo"</td>";
$resultat2->closeCursor();
?>
<!--#######################################################################################################################################-->
- Gestion Membre
- Membre indisponible vinted - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion photo gratuit - Guide
- Gestion planning equipe - Télécharger - Outils professionnels
- Logiciel gestion facture - Télécharger - Comptabilité & Facturation
61 réponses
- 1
- 2
- 3
- 4
Le fil porte sur la gestion des membres via des checkbox et une liste déroulante, car les cases à cocher s’enregistrent dans la base mais la liste déroulante ne se remplit pas comme attendu. Des réponses recommandent d'utiliser une jointure SQL pour pré-cocher les cases liées à tb_adherent_gestion et d'adapter la requête afin de retourner un indicateur checked selon la présence du lien. La meilleure solution proposée consiste ensuite à tester la requête dans MySQL, puis à intégrer le paramètre d’identifiant adhérent et à afficher dynamiquement les cases cochées via une condition. Des vérifications recommandent aussi de tester séparément le type de colonne rid_statut et de clarifier les mécanismes d’INSERT ou d’UPDATE pour éviter les échecs d’enregistrement.
Sur ta ligne 25 :
echo"<option value=".$donnees["nom_statut"].">".$donnees["nom_statut"]."</option>\n";
il faut mettre des quotes ou des doubles-quotes autour de la valeur de l'attribut value.
Tu devrais avoir un truc comme ça, une fois corrigé :
echo"<option value=\"".$donnees["nom_statut"]."\">".$donnees["nom_statut"]."</option>\n";
Merci pour cette piste mais malheureusement ça ne fonctionne toujours.
Si tu as d'autres pistes que je puisse explorer, mais j'ai tellement essayé beaucoup de solution que je commence à désespérer.
Merci
pourrais-tu poster ta page en entier ? Cela me permettra d'avoir une d'ensemble. Il arrive souvent que les problèmes que l'on rencontre en PHP soit liés à une erreur plus haut dans le code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionLe problème vient du fait que tu traite de la manière tes checkbox et ton select.
ALors que les checkbox te remonte à tableau grâce au crochets dans le nom :
name='nom_gestion[]'alors que le select te remonte directement la valeur dans
$_POST['nom_statut']. tu n'a pas besoin de faire en foreach.
A la place de :
if (isset($_POST['nom_statut'])) {
foreach($PARAM['NOM_STATUT'] as $nom_statut)
{
$sql = 'INSERT INTO tb_adherent_statut (rid_adherent, rid_statut)
VALUES ("'.$adherent_insert.'", "'.$nom_statut.'")';
$requete = $bdd->prepare($sql);
$requete->bindParam(':rid_adherent', $adherent_insert);
$requete->bindParam(':rid_statut', $nom_statut);
$requete->execute();
}
}
Il faut supprimer ton foreach :
if (isset($_POST['nom_statut'])) {
$nom_statut = $PARAM['NOM_STATUT'];
$sql = 'INSERT INTO tb_adherent_statut (rid_adherent, rid_statut)
VALUES ("'.$adherent_insert.'", "'.$nom_statut.'")';
$requete = $bdd->prepare($sql);
$requete->bindParam(':rid_adherent', $adherent_insert);
$requete->bindParam(':rid_statut', $nom_statut);
$requete->execute();
}
--
Cordialement,
Gigatrappeur
Au niveau des adherent, gestion tout ok sauf table tb_statut.
Donc au niveau du select, il faut remplacer
value=".$donnees["nom_statut"]."par
value=".$donnees["id_statut"].".
Tout ce que je peux te dire c'est un grand merci 3 semaines que je suis dessus sans exagérer.
C'est nickel j'étais pas loin de la solution, mais je n'y serai pas arrivé sans ton aide c'est certain.
Supprimer le foreach et modifier le value, merci car j'ai encore appris quelque chose.
Zut encore une toute petite question.
J'ai commencé à présent les INSERT et je m'aperçois que dans mes checkboxs et dans ma liste déroulante les valeurs ne sont pas conservé pour pouvoir les modifier si cela est necessaire.
Pourtant dans ma case edit la requète est bonne enfin je crois.
Peux tu s'il te plait encore une fois m'aider à résoudre ce problème.
Merci
J'ai déjà essayé de faire quelque chose pour garder les valeurs de mes checkboxs mais bien sur ça ne fonctionne pas.
Tu peux s'il te plait me dire ton avis sur ça.
Merci
<input name="nom_gestion[]" value="<?php echo $donnees['id_gestion'];?>" type="checkbox" id="nom_gestion" <?php if (isset($_POST['nom_gestion']) && $_POST['nom_gestion']==".$donnees['id_gestion].") echo 'checked="checked"';?> />
J'ai essayé ça mais bien sur ça ne fonctionne pas.
Pouvez-vous m'aider encore un peu s'il vous plait.
Je vous remercie.
$sql = "SELECT * FROM tb_gestion";
$requete1 = $bdd->prepare($sql);
$requete1->execute();
while ($donnees = $requete1->fetch(PDO::FETCH_ASSOC))
{
echo"<tr>";
echo"<td width='20%'>".$donnees['nom_gestion']."</td>";
echo"<td width='10%'><input type='checkbox' name='nom_gestion[]' value='".$donnees['id_gestion']."'></td>";
if(isset($_POST['nom_gestion'][]) echo 'checked="checked"';
}
$requete1->closeCursor();
Le problème vient que le tableau
$_POSTest vide à cette endroit du code. Il te faut stocker les valeurs des checkbox en session.
De plus, les valeurs des checkbox sont stockées sous formes de tableau. Pour savoir si l'une des checkbox est cochée, il faut vérifié si la valeur est présente dans le tableau.
exemple :
echo in_array($donnees['id_gestion'], $_POST['nom_gestion'])?' checked="checked"': ''
J'ai bien mes valeurs de chekboxs en SESSION dans ma page de connexion
J'ai essayé également ça et ton exemple mais aucun résultat.
<input name="nom_gestion[]" type="checkbox" value="true" <?php echo $donnees['id_gestion'] ? " checked":"";?>/>
Merci de ton aide pour enfin me sortir de ce guêpier.
Je te joint mon fichier complet le problème c'est la partie 2 du formulaire.
Mon tableau commence à la ligne 173
A la ligne 458 mes checkboxs et ma liste déroulante.
Merci
https://www.cjoint.com/?DEft4Halg5M
J'ai modifié mon tableau à la ligne 195 mais toujours rien...
'ID_GESTION' => isset($_REQUEST['id_gestion']) ? $_REQUEST['id_gestion'] : '', 'NOM_GESTION' => isset($_POST['nom_gestion']) ? $_POST['nom_gestion']=='true' ? true : false ,
J'ai fait ça et vraiment je ne comprend pas ça devrais fonctionner pourtant, mais non???
if(isset($_POST['id_gestion']) AND in_array($_POST['id_gestion'])) {echo 'checked="checked"';}
- 1
- 2
- 3
- 4