Récupération, Affichage des checkboxs issus de ma BDD
LaChaux78
Messages postés
583
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé des checkbox grâce à une boucle, et j'aimerai pouvoir récupérer ensuite toutes les checkbox cochées afin de faire un UPDATE dans ma BDD. Mon formulaire se compose d'une checkbox, deux boutons radio, une liste déroulante et mes checkbox généré par une boucle issu de ma BDD d'où mon soucis. Actuellement quand je coche deux cases, j'ai bien deux entrée dans ma BDD. Voici à quoi ressemble mon affichage.
J'ai essayé de rasembler les éléments de mon tableau en une chaine avec "implode" mais sans succes. Pouvez-vous m'aider s'ils vous plait.
J'ai créé des checkbox grâce à une boucle, et j'aimerai pouvoir récupérer ensuite toutes les checkbox cochées afin de faire un UPDATE dans ma BDD. Mon formulaire se compose d'une checkbox, deux boutons radio, une liste déroulante et mes checkbox généré par une boucle issu de ma BDD d'où mon soucis. Actuellement quand je coche deux cases, j'ai bien deux entrée dans ma BDD. Voici à quoi ressemble mon affichage.
DUPOND Pierre => Trompette DURAND Paul => Trompette J'aimerai que mon lien de modification me retourne: DUPOND Pierre - DURAND Paul => Trompette
J'ai essayé de rasembler les éléments de mon tableau en une chaine avec "implode" mais sans succes. Pouvez-vous m'aider s'ils vous plait.
$action = 'new'; $a = !empty($_GET['a']) ? $_GET['a'] : NULL; $submit = !empty($_POST['submit']) ? $_POST['submit'] : NULL; $haction = !empty($_POST['haction']) ? $_POST['haction'] : NULL; $idpers = !empty($_POST['idpers']) ? $_POST['idpers'] : ''; $idpup = !empty($_POST['idpup']) ? $_POST['idpup'] : ''; $cl = !empty($_POST['cl']) ? $_POST['cl'] : ''; $grcommun = !empty($_POST['grcommun']) ? $_POST['grcommun'] : ''; $grindiv = !empty($_POST['grindiv']) ? $_POST['grindiv'] : ''; $ptcarnet = !empty($_POST['ptcarnet']) ? $_POST['ptcarnet'] : ''; $oldid = !empty($_POST['oldid']) ? $_POST['oldid'] : ''; $possession = !empty($_POST['possession']) ? $_POST['possession'] : NULL; // On initialise les variables à 0 $grcommun = 0; $grindiv = 0; // On test le choix if ($cl == 'grcommun') $grcommun = 1; if ($cl == 'grindiv') $grindiv = 1; switch($a) { case 'new': $action = 'new'; break; case 'ls' : $action = 'list'; break; case 'mod': $action = 'mod'; break; case 'sup': $action = 'sup'; break; default : $action = 'new'; break; } if($action == 'list') { echo '<h1>'.$title.'</h1>'; $sql = "SELECT * FROM cdc_classeurs LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers ORDER BY nom,prenom"; $result = executeQuery($sql,$datas); echo '<ul>'; while ($donnees = $result->fetch()) { $idpers = $donnees->idpers; $idpup = $donnees->idpup; $oldid = "$idpers,$idpup"; // Sauvegarder identifiant original (en cas de modif de l'ID) $lien = $_SERVER["PHP_SELF"].'?a=mod&idpers='.$idpers.'&idpup='.$idpup.'&oldid='.$oldid; echo '<li> <a href="'.$lien.'">'.$donnees->nom.' '.$donnees->prenom.' => '.$donnees->pupitre.'</a>'; } echo '</ul>'; // Ecrire bas de page et sortir : listage fini. echo dmaj("sais_classeur.php"); echo "</div></body></html>"; exit; } $checked = $grcommun ? " checked " : ""; $checked2 = $grindiv ? " checked " : ""; $checked3 = $ptcarnet ? " checked " : ""; $checked4 = $idpers ? " checked " : ""; echo '<form method="post" name="cla" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; echo '<table style="float:right">'; echo '<tr>'; echo '<p>'; //Le for du label doit-être identique à l'id de l'input echo '<input type="radio" id="grcommun" class="css-grcommun" name="cl" value="grcommun" '.$checked.' />'; echo '<label for="grcommun" class="css-grcommun">Classeur Commun</label>'; echo '</p>'; echo '</tr><tr>'; echo '<p>'; //Le for du label doit-être identique à l'id de l'input echo '<input type="radio" id="grindiv" class="css-grindiv" name="cl" value="grindiv" '.$checked2.' />'; echo '<label for="grindiv" class="css-grindiv">Classeur Individuel</label>'; echo '</p>'; echo '</tr><tr>'; echo '<p>'; //Le for du label doit-être identique à l'id de l'input echo '<input type="checkbox" id="ptcarnet" class="css-ptcarnet" name="ptcarnet" value="1" '.$checked3.' />'; echo '<label for="ptcarnet" class="css-ptcarnet">Carnet Défilé</label>'; echo '</p>'; echo '</tr><tr>'; echo '<td class="libel">Sélectionner un Pupire pour le classeur:</td>'; echo '<td class="data">'; echo $LDpup->write($idpup).'</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="oldid" value="'.$oldid.'" />'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '<p>NB: La saisie dans les zones à fond jaune pâle est obligatoire.</p>'; $sql = "SELECT cdc_adherer.idpers,nom,prenom FROM cdc_adherer LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers WHERE annee = :annee AND cdc_adherer.idclas IN (3,4) ORDER BY nom,prenom"; $datas = array('annee' => $aadh); $result = executeQuery($sql,$datas); foreach ($result as $donnees) { echo '<input type="checkbox" id="'.$donnees->idpers.'" class="css-possession" name="possession[]"'; if($donnees->idpers == "$idpers") echo $checked4; echo 'value="'.$donnees->idpers.'" />'; echo '<label for="'.$donnees->idpers.'" class="css-possession"> '.$donnees->nom.' '.$donnees->prenom.'</label><br/>'; } echo '<br/>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</form>';
A voir également:
- Récupération, Affichage des checkboxs issus de ma BDD
- Affichage double ecran - Guide
- Convertisseur récupération de texte - Guide
- Comment récupérer des messages supprimés sur whatsapp - Guide
- Windows 11 affichage classique - Guide
- Recuperation video youtube - Guide
3 réponses
Bonjour,
Une fois de plus.. ta question est des plus obscures.... :-(
Quel est ton souci exactement ?
La récupération des cases cochées ( visiblement tu y arrives... ) ?
l'UPDATE en BDD (code que tu ne sembles pas nous montrer... ) ?
Ou l'affichage d'un lien (on ne sait où... ) ?
Tu dis :
Deux cases... où ça ? Parmis celles générées par ta boucle ?
ici donc :
Quand comprendras tu que tes explications sont loin d'être limpides ???
Il serait bien que tu nous expliques, par rapport au code posté :
1 - Ce que tu obtiens actuellement
2 - Ce que tu souhaites avoir
3 - le BOUT DE CODE concerné (et pas tout le pavé )
4 - Si besoin, la structure de ta bdd
Une fois de plus.. ta question est des plus obscures.... :-(
Quel est ton souci exactement ?
La récupération des cases cochées ( visiblement tu y arrives... ) ?
l'UPDATE en BDD (code que tu ne sembles pas nous montrer... ) ?
Ou l'affichage d'un lien (on ne sait où... ) ?
Tu dis :
Actuellement quand je coche deux cases, j'ai bien deux entrée dans ma BDD
Deux cases... où ça ? Parmis celles générées par ta boucle ?
ici donc :
$sql = "SELECT cdc_adherer.idpers,nom,prenom FROM cdc_adherer LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_adherer.idpers WHERE annee = :annee AND cdc_adherer.idclas IN (3,4) ORDER BY nom,prenom"; $datas = array('annee' => $aadh); $result = executeQuery($sql,$datas); foreach ($result as $donnees) { echo '<input type="checkbox" id="'.$donnees->idpers.'" class="css-possession" name="possession[]"'; if($donnees->idpers == "$idpers") echo $checked4; echo 'value="'.$donnees->idpers.'" />'; echo '<label for="'.$donnees->idpers.'" class="css-possession"> '.$donnees->nom.' '.$donnees->prenom.'</label><br/>'; }
Quand comprendras tu que tes explications sont loin d'être limpides ???
Il serait bien que tu nous expliques, par rapport au code posté :
1 - Ce que tu obtiens actuellement
2 - Ce que tu souhaites avoir
3 - le BOUT DE CODE concerné (et pas tout le pavé )
4 - Si besoin, la structure de ta bdd
Bonjour,
Je suis conscient que mes explications ne sont peut-être pas clair et pourtant je fais beaucoup d'effort ce ce côté là.
Mon soucis réside dans mes checkbox généré par ma BDD (post que tu as retourné). Lorsque je sélectionne disons allez trois checkbox ( cela concerne name="possession[]" ) j'ai bien mes trois entrées dans ma BDD après INSERT bien sur.. Mais je veux pouvoir faire une modification de ses trois entrées en une seule fois, donc l'affichage que je souhaiterai c'est...
Lorsque je clique sur mon lien pour modification j'ai mes trois entrées avec trois lignes séparément donc je peux modifier chacune de ses trois entrée séparément, mais ce n'est pas ce que je veux en fait.
A priori cela peut concerner l'affichage du lien (ci-dessous)
UPDATE
Je suis conscient que mes explications ne sont peut-être pas clair et pourtant je fais beaucoup d'effort ce ce côté là.
Mon soucis réside dans mes checkbox généré par ma BDD (post que tu as retourné). Lorsque je sélectionne disons allez trois checkbox ( cela concerne name="possession[]" ) j'ai bien mes trois entrées dans ma BDD après INSERT bien sur.. Mais je veux pouvoir faire une modification de ses trois entrées en une seule fois, donc l'affichage que je souhaiterai c'est...
DUPOND Pierre - DURAND Paul - PACAL Luc => Trompette
Lorsque je clique sur mon lien pour modification j'ai mes trois entrées avec trois lignes séparément donc je peux modifier chacune de ses trois entrée séparément, mais ce n'est pas ce que je veux en fait.
DUPOND Pierre => Trompette DURAND Paul => Trompette PACAL Luc => Trompette.
A priori cela peut concerner l'affichage du lien (ci-dessous)
if($action == 'list') { echo '<h1>'.$title.'</h1>'; $sql = "SELECT * FROM cdc_classeurs LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers ORDER BY nom,prenom"; $result = executeQuery($sql,$datas); echo '<ul>'; while ($donnees = $result->fetch()) { $idpers = $donnees->idpers; $idpup = $donnees->idpup; $oldid = "$idpers,$idpup"; // Sauvegarder identifiant original (en cas de modif de l'ID) $lien = $_SERVER["PHP_SELF"].'?a=mod&idpers='.$idpers.'&idpup='.$idpup.'&oldid='.$oldid; echo '<li> <a href="'.$lien.'">'.$donnees->nom.' '.$donnees->prenom.' => '.$donnees->pupitre.'</a>'; } echo '</ul>';
UPDATE
case 'mod': if (is_array($possession)) { foreach($possession as $idpers) { // Constrution de la condition de modification ($oi = old ID) $oi = explode(",", $oldid); // Tableau des identifiants $condition = "WHERE (idpers='".$oi[0]."' AND idpup='".$oi[2]."')"; // Construction de la requete de modif $sql = "UPDATE cdc_classeurs SET idpers = :idpers, idpup = :idpup, grcommun = :grcommun, grindiv = :grindiv, ptcarnet = :ptcarnet $condition"; $datas = array('idpers' => $idpers, 'idpup' => $idpup, 'grcommun' => $grcommun, 'grindiv' => $grindiv, 'ptcarnet' => $ptcarnet); $result = executeQuery($sql,$datas); $typenr = "modififié"; $reqmod = $sql; $sql = "SELECT nom,prenom,pupitre FROM cdc_personnes LEFT JOIN cdc_classeurs ON cdc_classeurs.idpers = cdc_personnes.idpers LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup WHERE cdc_personnes.idpers = :idpers AND cdc_pupitres.idpup = :idpup"; $datas = array('idpers' => $idpers,'idpup' => $idpup); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $success = "<span class='success'>Le classeur - ".$donnees->pupitre." - de ".$donnees->nom." ".$donnees->prenom." a été $typenr.</span>"; } }
affichage que je souhaiterai c'est...
DUPOND Pierre - DURAND Paul - PACAL Luc => Trompette
"L'affichage" ? L'affichage où ça ?
Et comment tu sais que les trois personnes sont à "modifier" en même temps ? Pourquoi pas deux ou dix ?
Tu veux dire que tu souhaiterai pouvoir modifier d'un seul coup toutes les "personnes" provenant de cette requête ?
SELECT * FROM cdc_classeurs LEFT JOIN cdc_pupitres ON cdc_pupitres.idpup = cdc_classeurs.idpup LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers ORDER BY nom,prenom
Si c'est le cas... pourquoi envoyer des paramètres dans ton lien ?
Il suffit que tu rappelles cette même requête dans ta page de modification ...
Je suis conscient que mes explications ne sont peut-être pas clair et pourtant je fais beaucoup d'effort ce ce côté là.
Ton principal souci vient du fait que tu développes des pages au fil de l'eau... sans les avoir pensé avant...
On ne commence à coder qu'après avoir réaliser un cahier des charges puis un cahier des spécificités fonctionnelles détaillées...
Sans ça, on ne sait pas où on va ni comment ....
Si un tel travail avait été réalisé, tu n'aurais aucun mal à expliquer tes besoins.
Donc... sans parler de code.... explique en détail le cheminement de ton application.
Par exemple ;
- Sur l'écran <<ici tu donnes le nom de la page >>, un lien permet de modifier << Toutes >> (ou 1.. ) personne(s)
- Si on clique sur ce lien, cela mène à la page << Nommer la page... >>
- Cette page va chercher en BDD les liste des personnes en fonction de ..<< ??? (leur id par exemple >>
- Puis, les personnes trouvées, sont <<mises à jour >> (préciser quelles données sont mises à jour.... )
bref.. j'espère que tu as compris.......
Je te laisse faire ce travail et revenir vers nous une fois que ça sera suffisamment clair.