Gestion Membre
Résolu
labourette
Messages postés
657
Date d'inscription
Statut
Membre
Dernière intervention
-
Gigatrappeur Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
Gigatrappeur Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
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.
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(); ?> <!--#######################################################################################################################################-->
A voir également:
- Gestion Membre
- Membre indisponible vinted - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Gestion autorisation application android - Guide
61 réponses
Bonjour
En fait c'est pour pouvoir modifier si besoin comme les types texte où ça me réaffiche les coordonnés des membres donc après les INSERT.
donc c'est bien cela...
Est-ce de ré-afficher les précédentes cases cochées ?
Merci beaucoup
En fait c'est pour pouvoir modifier si besoin comme les types texte où ça me réaffiche les coordonnés des membres donc après les INSERT.
donc c'est bien cela...
Est-ce de ré-afficher les précédentes cases cochées ?
Merci beaucoup
OK.
Donc, le vrai besoin, c'est de cocher les case pour lesquelles on a une ligne qui est présente dans tb_adherent_gestion.
Je pense que tu peux résoudre le problème à l'aide d'une requête sql jointe :
Cordialement,
Gigatrappeur
Donc, le vrai besoin, c'est de cocher les case pour lesquelles on a une ligne qui est présente dans tb_adherent_gestion.
Je pense que tu peux résoudre le problème à l'aide d'une requête sql jointe :
$sql = "SELECT tbg.nom_gestion nom_gestion, tbg.id_gestion id_gestion, (NOT(tbag.rid_adherent IS NULL) AND tbag.rid_adherent = '" . $donnees['id_adherent'] . "') checked FROM tb_gestion tgb LEFT JOIN tb_adherent_gestion tbag ON tbag.rid_gestion = tbg.id_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']."'". ($donnees['checked'] ? ' checked="checked"':'') . "></td>"; echo "</tr>"; } $requete1->closeCursor();
Cordialement,
Gigatrappeur
Bonjour
J'ai juste une chose à te dire un grand MERCI.
Cela fonctionne comme je le souhaitais jamais je n'aurai pensé à faire une telle requète.
Merci encore
Bonne soirée.
J'ai juste une chose à te dire un grand MERCI.
Cela fonctionne comme je le souhaitais jamais je n'aurai pensé à faire une telle requète.
Merci encore
Bonne soirée.
Excuse mpoi tu peux m'expliquer cette partie s'il te plait
Merci
(NOT(tbag.rid_adherent IS NULL)
Merci
(NOT(tbag.rid_adherent IS NULL)
La requête SQL fait un left join. Cela veut dire que MySQL construit une table temporaire à l'aide de tb_gestion et tb_adherent_gestion. le ON indique la condition de jointure. Sauf que dans le cas ou il n'y a pas de correspondance dans tb_adherent_gestion, la colonne est égale à null.
Pour que PHP puisse interpréter facilement, j'ai ajouté une modification de la valeur de cette colonne pour te permettre de voir un booléen plutôt qu'une donnée inconsistante.
Pour que PHP puisse interpréter facilement, j'ai ajouté une modification de la valeur de cette colonne pour te permettre de voir un booléen plutôt qu'une donnée inconsistante.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Je viens de m'apercevoir qu'il y a juste un tout petit soucis.
En fait lorsque j'insére un nouveau membre ça me garde les valeurs des checkboxs stocké du dernier membre enregistré et du coup ça m'insére une nouvelle checkbox alors il y a doublon, même si je décoche la checkbox et si un membre existe déjà avec une même valeur ça me fait un doublon.
J'espère que tu pourras me comprendre dans mon explication.
Je te remercie beaucoup de ton aide si précieuse.
Je viens de m'apercevoir qu'il y a juste un tout petit soucis.
En fait lorsque j'insére un nouveau membre ça me garde les valeurs des checkboxs stocké du dernier membre enregistré et du coup ça m'insére une nouvelle checkbox alors il y a doublon, même si je décoche la checkbox et si un membre existe déjà avec une même valeur ça me fait un doublon.
J'espère que tu pourras me comprendre dans mon explication.
Je te remercie beaucoup de ton aide si précieuse.
ok.
j'ai modifié la requête, elle comportait des erreurs :
Essaye de remplacer
j'ai modifié la requête, elle comportait des erreurs :
SELECT tbg.nom_gestion nom_gestion, tbg.id_gestion id_gestion, NOT(tbag.rid_adherent IS NULL) checked FROM tb_gestion tbg LEFT JOIN tb_adherent_gestion tbag ON tbag.rid_gestion = tbg.id_gestion AND tbag.rid_adherent = 'mettre_ici_l_id_adherent' ORDER BY tbg.id_gestion
Essaye de remplacer
'mettre_ici_l_id_adherent'par
$PARAM['ID_ADHERENT'].
Bonjour
Merci tout à l'air de bien fonctionner, je fait encore quelques essais pour être sur mais à priori c'est super cool.
J'ai juste supprimé dans le SELECT nom_gestion et id_gestion car je suppose que c'est en trop.
Juste me définir le NOT je voudrais comprendre le fonctionnement il y a pas trop longtemps que je me suis lancé dans le SQL et PHP.
Merci
Merci tout à l'air de bien fonctionner, je fait encore quelques essais pour être sur mais à priori c'est super cool.
J'ai juste supprimé dans le SELECT nom_gestion et id_gestion car je suppose que c'est en trop.
Juste me définir le NOT je voudrais comprendre le fonctionnement il y a pas trop longtemps que je me suis lancé dans le SQL et PHP.
Merci
Non, le nom_gestion et le id_gestion ne sont pas en trop, c'est juste pour renommer les colonnes que tu reçoit en PHP.
NOT = PAS
SI NOT NULL = SI PAS NULL (en fr)
En gros, ça donne la valeur inverse.
Exemple:
SI PAS NULL retourne VRAI sinon retourne FAUX
Je sais pas si c'est clair.
C'est pas spécifique au SQL.
C'est de la logique.
NOT = PAS
SI NOT NULL = SI PAS NULL (en fr)
En gros, ça donne la valeur inverse.
Exemple:
SI PAS NULL retourne VRAI sinon retourne FAUX
Je sais pas si c'est clair.
C'est pas spécifique au SQL.
C'est de la logique.
Merci
En fait j'ai la table suivi du nom du champ et encore 1 fois le nom du champ
Ca me semblais pas normal.
Merci encore
En fait j'ai la table suivi du nom du champ et encore 1 fois le nom du champ
Ca me semblais pas normal.
Merci encore
Bonjour
Pour terminer j'aurai aimé une dernière fois te demander encore une chose s'il te plait.
Pour ma liste déroulante afin que les valeurs rester afficher je peux me baser sur ton exemple a propos de mes checkboxs? mis à part que je met selected à la place de checked
Merci encore de ton aide
Pour terminer j'aurai aimé une dernière fois te demander encore une chose s'il te plait.
Pour ma liste déroulante afin que les valeurs rester afficher je peux me baser sur ton exemple a propos de mes checkboxs? mis à part que je met selected à la place de checked
Merci encore de ton aide
Bonjour
Un petit coup de main s'il te plait juste pour me corriger mon echo je pense que l'erreur vient de là pour que ça fonctionne pas.
J'ai beau essayer de comprendre mais je ne vois pas.
Encore une fois de plus un très grand merci.
Cordialement
Un petit coup de main s'il te plait juste pour me corriger mon echo je pense que l'erreur vient de là pour que ça fonctionne pas.
J'ai beau essayer de comprendre mais je ne vois pas.
Encore une fois de plus un très grand merci.
Cordialement
echo"<td width='15%'>"; echo"<select name='nom_statut' class='content_input' disabled=''>"; echo"<option value=''>- - - Statut - - -</option>"; $sql = "SELECT tb_statut.nom_statut, tb_statut.id_statut, NOT(tb_adherent_statut.rid_adherent IS NULL) selected FROM tb_statut LEFT JOIN tb_adherent_statut ON tb_adherent_statut.rid_statut = tb_statut.id_statut AND tb_adherent_statut.rid_adherent ='".$PARAM['ID_ADHERENT']."' ORDER BY tb_statut.id_statut"; $requete2 = $bdd->prepare($sql); $requete2->execute(); while ($donnees = $requete2->fetch(PDO::FETCH_ASSOC)) { echo"<option value='".$donnees["id_statut"]."'>".$donnees["nom_statut"]." ". ($donnees['selected'] ? ' selected="selected"':'') . "</option>\n"; } echo"</select>"; echo"</td>"; $requete2->closeCursor();
Salut,
désolés de ne pas avoir répondu plutôt. Je suis pas mal occupé et donc je n'ai pas eu le temps.
A première vu, ton attribut selected est écrit dans le texte qui est affiché et non dans la balise option.
Tu devrais normalement avoir un truc comme ça :
Sinon, ta requête à l'air correcte. Par contre, il faut que tes adhérents n'est qu'un seul status.
désolés de ne pas avoir répondu plutôt. Je suis pas mal occupé et donc je n'ai pas eu le temps.
A première vu, ton attribut selected est écrit dans le texte qui est affiché et non dans la balise option.
Tu devrais normalement avoir un truc comme ça :
echo"<option value='".$donnees["id_statut"]."'". ($donnees['selected'] ? ' selected="selected"':'') . ">".$donnees["nom_statut"]."</option>\n";
Sinon, ta requête à l'air correcte. Par contre, il faut que tes adhérents n'est qu'un seul status.
Bonjour
Non y a pas de soucis j'ai voulu déjà regarder par moi-même si je pouvais trouver la solution.
Je te dis encore une fois un grand merci, je sais tu dois en avoir plein les poches mais je suis admiratif des personnes comme toi qui aide des personnes à résoudre leurs problème c'est vraiment génial de ta part ça fonctionne vraiment impec. Oui effectivement 1 adherent n'a qu'un et un seul statut.
Pour terminer ma gestion des membres j'ai une dernière fois besoin de ton savoir.
Pour modifier les données du formulaire j'ai la case 'edit' qui édite les données. Etant donnée que j'affiche les données des checkboxs et de la liste déroulante avec une requète, je pense qu'il faudrait faire une requète imbriquée?
Qu'en pense tu j'espère que tu pourras comprendre mon explication.
Merci
Avec cette requète j'affiche les données des adherents à l'exception des checkboxs et liste déroulante.
Bien sur j'ai aussi essayé de faire une requète avec jointure mais aucun résultat.
Non y a pas de soucis j'ai voulu déjà regarder par moi-même si je pouvais trouver la solution.
Je te dis encore une fois un grand merci, je sais tu dois en avoir plein les poches mais je suis admiratif des personnes comme toi qui aide des personnes à résoudre leurs problème c'est vraiment génial de ta part ça fonctionne vraiment impec. Oui effectivement 1 adherent n'a qu'un et un seul statut.
Pour terminer ma gestion des membres j'ai une dernière fois besoin de ton savoir.
Pour modifier les données du formulaire j'ai la case 'edit' qui édite les données. Etant donnée que j'affiche les données des checkboxs et de la liste déroulante avec une requète, je pense qu'il faudrait faire une requète imbriquée?
Qu'en pense tu j'espère que tu pourras comprendre mon explication.
Merci
Avec cette requète j'affiche les données des adherents à l'exception des checkboxs et liste déroulante.
Bien sur j'ai aussi essayé de faire une requète avec jointure mais aucun résultat.
case 'edit': $sql = ("SELECT * FROM tb_adherent WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "' ORDER BY nom ASC"); $requete = $bdd->prepare($sql); $requete->execute(); $reponse = $requete->setFetchMode(PDO::FETCH_ASSOC); $donnees = $requete->fetch();
Bonjour
Oui c'est ça donc pour la table tb_adherent ça fonctionne je récupére tous les coordonnées d'un membre.
Voici le lien qui m'affiche les données du formulaire
Oui c'est ça donc pour la table tb_adherent ça fonctionne je récupére tous les coordonnées d'un membre.
Voici le lien qui m'affiche les données du formulaire
<a href="./index.php?body=gestion_membre&type=compte&action=edit&id_adherent=<?php echo $donnees['id_adherent'];?>" onclick="ad_user()">
Bonjour,
je pense que ta requête doit ressembler à ça :
L'
Par contre, comme tu peux avoir plusieurs lignes "nom_gestion", tu ne peux pas faire une requête imbriqué simplement.
Ou alors, il faut intégrer tous les "nom_gestion" pour l'adhérent dans une seule colonne.
En faisant un truc du genre :
je pense que ta requête doit ressembler à ça :
SELECT * FROM tb_adherent tba -- partie pour récupérer le status de l'adhérent INNER JOIN tb_adherent_statut tbas ON tbas.rid_adherent = tba.id_adherent INNER JOIN tb_statut tbs ON tbas.rid_statut = tbs.id_statut WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "' ORDER BY nom ASC
L'
ORDER BYn'est peut-être pas utile ici, si ?
Par contre, comme tu peux avoir plusieurs lignes "nom_gestion", tu ne peux pas faire une requête imbriqué simplement.
Ou alors, il faut intégrer tous les "nom_gestion" pour l'adhérent dans une seule colonne.
En faisant un truc du genre :
SELECT tba.*, tbs.nom_statut, GROUP_CONCAT(tbg.nom_gestion SEPARATOR ', ') nom_gestions FROM tb_adherent tba LEFT OUTER JOIN tb_adherent_statut tbas ON tbas.rid_adherent = tba.id_adherent LEFT OUTER JOIN tb_statut tbs ON tbs.id_statut = tbas.rid_statut LEFT OUTER JOIN tb_adherent_gestion tbag ON tbag.rid_adherent = tba.id_adherent LEFT OUTER JOIN tb_gestion tbg ON tbg.id_gestion = tbag.rid_gestion WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "'
Bonjour
Malheureusement ça ne fonctionne pas, peut-être faut-il modifier la case modifier?
comme tu l'avais fait pour la case ajouter.
Merci
INSERT
UPDATE
Malheureusement ça ne fonctionne pas, peut-être faut-il modifier la case modifier?
comme tu l'avais fait pour la case ajouter.
Merci
INSERT
if (isset($_POST['nom_gestion'])) { foreach($PARAM['NOM_GESTION'] as $nom_gestion) { $sql = 'INSERT INTO tb_adherent_gestion (rid_adherent, rid_gestion) VALUES ("'.$adherent_insert.'", "'.$nom_gestion.'")'; $requete = $bdd->prepare($sql); $requete->bindParam(':rid_adherent', $adherent_insert); $requete->bindParam(':rid_gestion', $nom_gestion); $requete->execute(); } } 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(); } break;
UPDATE
$sql = "UPDATE tb_adherent_gestion SET rid_adherent=:rid_adherent, rid_gestion=:rid_gestion"; $requete = $bdd->prepare($sql); $requete->bindParam(':rid_adherent', $PARAM['RID_ADHERENT']); $requete->bindParam(':rid_gestion', $PARAM['RID_GESTION']); $requete->execute(); $sql = "UPDATE tb_adherent_statut SET rid_adherent=:rid_adherent, rid_statut=:rid_statut"; $requete = $bdd->prepare($sql); $requete->bindParam(':rid_adherent', $PARAM['RID_ADHERENT']); $requete->bindParam(':rid_statut', $PARAM['RID_STATUT']); $requete->execute();
J'ai également enlevé le s au nom de colonne "nom_gestion" j'ai dit on sait jamais, mais toujours pas.
Bonjour
Il y a quelque chose qui me chagrine en fait.
si je test cette requète dans phpmyadmin ça retourne bien uniquement les données de l'adherent OK
si je test cette requète dans phpmyadmin ça retourne bien les données de l'adhérent avec toutes les jointures OK
Maintenant si dans ma page php si je met uniquement la première requète ça devrais pas m'afficher les données de l'adhérent avec les checkbox et la liste déroulante.
Ca devrais m'afficher que ce qui concerne la table "tb_adherent"
Merci
Il y a quelque chose qui me chagrine en fait.
si je test cette requète dans phpmyadmin ça retourne bien uniquement les données de l'adherent OK
SELECT * FROM tb_adherent WHERE id_adherent='1';
si je test cette requète dans phpmyadmin ça retourne bien les données de l'adhérent avec toutes les jointures OK
SELECT tba.*, tbs.nom_statut, GROUP_CONCAT(tbg.nom_gestion SEPARATOR ', ') nom_gestion FROM tb_adherent tba LEFT OUTER JOIN tb_adherent_statut tbas ON tbas.rid_adherent = tba.id_adherent LEFT OUTER JOIN tb_statut tbs ON tbs.id_statut = tbas.rid_statut LEFT OUTER JOIN tb_adherent_gestion tbag ON tbag.rid_adherent = tba.id_adherent LEFT OUTER JOIN tb_gestion tbg ON tbg.id_gestion = tbag.rid_gestion WHERE id_adherent='1';
Maintenant si dans ma page php si je met uniquement la première requète ça devrais pas m'afficher les données de l'adhérent avec les checkbox et la liste déroulante.
Ca devrais m'afficher que ce qui concerne la table "tb_adherent"
Merci