Récupérer plusieurs valeurs d'un même champ [Résolu]

A voir également:Récupérer plusieurs valeurs d'un même champAccess vba récupérer la valeur d'un champ d'une table ✓ - Forum - VB / VBA [Word] Récupérer la valeur d'un champ ✓ - Forum - Word Récupérer la valeur d'un champ comme nom d'un formulaire dans VB ✓ - Forum - Access Récupérer les valeurs de menus déroulants dans un champ (Total) ✓ - Forum - HTML [PHP] Récupérer la valeur dans un champs ✓ - Forum - PHP

Bonjour, Je reviens encore une fois vers vous. Alors je vais essayé cette fois ci d'être très explicite enfin le mieux possible.
J'ai créé une table dans ma BDD qui me servira pour la gestion de classeurs.
De ce fait j'ai eu beau y tourner dans tous les sens il a fallu que je me résigne à insérer plusieurs valeurs dans un même champ pour pouvoir arrivé à mes fins.
Ma table pour faire simple.
cdc_classeurs (nom de la table)
idclass (auto incrémente)
idpers (tinytext relation avec ma table cdc_personnes)
J'ai créé un tableau pour stocker les noms des personnes et créé des cases à cocher en bouclant dessus.
Maintenant pour pouvoir UPDATER il faut récupérer et afficher les cases qui ont été sélectionnés lors de l'INSERT. Malheureusement si je fait un INSERT avec plusieurs case à coché aucune n'est retournée, par contre si je sélectionne une seule case lors de l'INSERT alors là c'est nickel ma checkbox est sélectionné alors je peux modifier cette case.
J'ai utilisé la fonction implode pour l'insertion et pour l'affichage peut-être qu'il faut utiliser explode et c'est là mon soucis je n'y suis pas parvenu.
En résumé: c'est là où je bloque car je n'arrive pas à ré-afficher plusieurs choix dans les checkbox
Je vous donne ma page complète. Je vous remercie.

 $quant 	= date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y");   $action 	= 'new'; $a 			= !empty($_GET['a']) ? $_GET['a'] : NULL; $submit 	= !empty($_POST['submit']) ? $_POST['submit'] : NULL; $haction 	= !empty($_POST['haction']) ? $_POST['haction'] : NULL;  $idclass 	= !empty($_REQUEST['idclass']) ? $_REQUEST['idclass'] : NULL; $idpers 	= !empty($_POST['idpers']) ? $_POST['idpers'] : ''; $possession = !empty($_POST['possession']) ? $_POST['possession'] : NULL;  switch($a) { 	case 'new': $action = 'new';  break;  	case 'ls' : $action = 'list'; break; 	case 'mod': $action = 'mod';  break;		 	default   : $action = 'new';  break;  }  if($submit) { 	 	switch($haction) { 	    case 'new': 		if(isset($possession) && is_array($possession)) { 			$check = implode(',',$possession); 			// Construction de la requete d'ajout 			$sql = "INSERT INTO cdc_classeurs (idpers) VALUES (:idpers)"; 			$datas = array('idpers' => $check); 			$result = executeQuery($sql,$datas); 			$typenr = "enregistré";  			$reqaj = $sql; 			$sql = "SELECT * FROM cdc_classeurs LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_classeurs.idpers"; $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $success = "<span class='success'>Le classeur de ".$check." a été $typenr.</span>"; } break; 		case 'mod': 		if(isset($possession) && is_array($possession)) { 			$check = implode(',',$possession); 					// Construction de la requete de modif 					$sql = "UPDATE cdc_classeurs SET idpers = :idpers WHERE idclass = :idclass"; 					$datas = array('idpers' => $check, 'idclass' => $idclass); 					$result = executeQuery($sql,$datas); 					$typenr = "modififié";  					$reqmod = $sql; 					 				 					$success = "<span class='success'>Le classeur ".$check." a été $typenr.</span>"; 				} 			 			break; 	} } switch($action) { 	case 'new': 		$title		= "Saisie des classeurs";  		$btsub		= "Enregistrer"; 		$idclass    = ""; 		$idpers		= ""; 		break; 	 	case 'list':  					 		$title  	= "Liste des classeurs"; 		break;  	case 'mod':  		$title      = "Modification d'un classeur"; 		$btsub      = "Modifier"; 		$sql    	= "SELECT * FROM cdc_classeurs WHERE idclass = :idclass"; 		$datas 		= array('idclass' => $idclass); 		$result 	= executeQuery($sql,$datas); 		$donnees 	= $result->fetch(); 		$idclass    = $donnees->idclass; 		$idpers   	= $donnees->idpers; 		break; } 

mon formulaire
 if($action == 'list') { 	echo '<h1>'.$title.'</h1>'; 	 	$sql = "SELECT * 			FROM cdc_classeurs"; 	$result = executeQuery($sql,$datas); 	 	echo '<ul>';  	while ($donnees = $result->fetch()) { 		$lien = $_SERVER["PHP_SELF"].'?a=mod&idclass='.$donnees->idclass; 		echo '<li> <a href="'.$lien.'">'.$donnees->idpers.'</a>'; 	} 	echo '</ul>';  	// Ecrire bas de page et sortir : listage fini. 	echo dmaj("sais_classeur.php"); 	echo "</div></body></html>"; 	exit; } $checked = $idpers ? " checked " : ""; echo '<form method="post" name="cla" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; 	echo '<h1>'.$title.'</h1>'; 		$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); 		while ($donnees = $result->fetch()) { echo '<input type="checkbox" name="possession[]"'; if($donnees->idpers == "$idpers") echo $checked; echo 'value="'.$donnees->idpers.'" />';echo '<label> '.$donnees->nom.' '.$donnees->prenom.'</label><br/>'; 		} 		echo '<input type="hidden" name="haction" value="'.$action.'" />'; 		echo '<input type="hidden" name="idclass" value="'.$idclass.'" />'; 	echo '</td>'; 	echo '</tr>'; 	echo '</table>'; 	echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; 	echo '</div>';  echo '</form>'; 

Forum

A voir également:Récupérer plusieurs valeurs d'un même champAccess vba récupérer la valeur d'un champ d'une table ✓ - Forum - VB / VBA [Word] Récupérer la valeur d'un champ ✓ - Forum - Word Récupérer la valeur d'un champ comme nom d'un formulaire dans VB ✓ - Forum - Access Récupérer les valeurs de menus déroulants dans un champ (Total) ✓ - Forum - HTML [PHP] Récupérer la valeur dans un champs ✓ - Forum - PHP

Web: www.shapebootstrap.net

11 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Ton code est toujours aussi brouillon.... et tes explications complètement incompréhensibles..
Mais bon... j'aurai beau te le dire à chacun de tes messages, je pense que ça ne sert à rien..

On a du mal à comprendre si ton souci est lors de l'insertion en base de données ..... ou lors de l'affichage des données insérées sur ta page.

Au départ j'ai pensé à un souci d'insertion en base.... mais après une bonne vingtaine de relecture je penche finalement sur un souci d'affichage.
Et plus exactement.. un problème de jointure dans ta requête

En effet... .. la structure de ta table


Ma table pour faire simple.
cdc_classeurs (nom de la table)
idclass (auto incrémente)
idpers (tinytext relation avec ma table cdc_personnes)

n'est pas bonne. ( je te l'ai déjà dit à plusieurs reprises dans tes différentes discussions )

Tu ne peux pas mettre plusieurs ID dans un seul champ idpers et faire des jointures dessus !!!!

Donc, une dernière fois, je te le redis.... tu dois faire une table de relation supplémentaire.. !
Et vu les erreurs que tu commets lorsque tu conçois ta base de données (et ton code en général...) je serais toi.. je commencerai par suivre des tutos adaptés à ton niveau.

A commencer par un bon cours sur les bases de données relationnelles....

Pour rappel.. le 12 octobre 2018 (et oui.. déjà un an ) tu planchais déjà sur ce bout de code et tu avais indiqué que tu allais revoir la structure de tes tables
Discussion visible ici : https://www.commentcamarche.net/forum/affich-35620214-recuperer-les-valeurs-des-checkboxs#10
Tu n'as guère progressé visiblement....





Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, C'est exact comme tu l'a souligné il y a un an j'avais fait cette gestion de classeurs avec des relations entre tables quelques choses de structuré. Et au fil du temps je me suis aperçu que je ne pouvais gérer cela de façon conventionnel. Alors j'ai repris un classeur Excel et j'ai fait ma gestion avec. Et aujourdh'ui j'aimerai reprendre cette gestion de façon dynamique. Mais voilà il y a un hic....
Je suis obligé d'insérer plusieurs valeurs dans un même champ sql. je sais que c'est une très mauvaise idée mais dans mon cas je n'ai pas le choix. Je posterai prochainement mon soucis.
Cordialement.

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, Avant toute chose je sais très bien ce que c'est un classeur Excel c'était simplement pour dire que je gére cela sur papier si tu préféres, je ne suis pas très doué mais quand même. J'ai réalisé une partie administration dont je suis pas mécontent de moi. J'ai fait l'achat de livres sur PHP/MYSQL et je ne serai jamais un pro comme tu l'est mais j'avance quand même à mon niveau.
Je donne des cours de musique BENEVOLEMENT heureusement qu'avec mes élèves, que je ne suis pas aussi intransigeant que tu l'est avec moi. Merci en tout cas pour l'aide que vous apporter.
Je continue dans mes recherches.
Salutations.

Reply
réponses:
  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, Alors en ce qui concerne mon soucis.
Il faut que je gère la gestion des classeurs dans lequel sont classé les partitions de musique pour chaque musiciens.
Chaque classeur à bien entendu 1 catégorie (pupitre)
Pour que cela soit plus limpide.
Moi j'ai un classeur de la catégorie Saxophone.
Mes deux compères se partagent un classeur de la catégorie Saxophone également.
Alors tu me dira et pourquoi vous n'avez pas chacun un classeur? cela simplifierai la chose.

J'avais fait mes relations des tables de la façon suivante.

 cdc_personnes idpers AUTO_INCREMENT nom prenom cdc_classeurs idpers idpup cdc_pupitres idpup AUTO_INCREMENT pupitre 

Avant d'aller plus loin donne moi tes impressions, même si je redoute le pire.
Merci.

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Déjà un utilisateur a 1 seul classeur donc dans ton exemple l'ID 1, ne peut avoir 4 classeurs, et 1 classeur à 1 utilisateur ou plusieurs
Mais imaginons comme c'est le cas que deux utilisateur dont l'ID est le 2 et 5 et qu'ils se partagent le même classeur 3.
Un autre utilisateur dont l'ID est le 1 à le classeur 3
voici la correspondance:
classeur = pupitre
pupitre = saxophone ou trompette ou guitare ou piano etc...

2 | 3
5 | 3
1 | 3

Comment je vais pouvoir faire pour savoir entre l'ID 1 et 2 et 3 qui se partagent le même classeur? c'est très important pour cette gestion.

Reply
réponses:
  • auteur

  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
La table cdc_adherer est une table de relation

 idpers => ID de la personne idpaie =>ID du paiement idclas => ID de la classe annee => Année de cotisation  ddebut => Date de début d'adhésion de l'adhérent dfin => Date de démission de l'adhérent montant => Montant annuel payé 

Alors cela donnerai donc:
 table cdc_personnes idpers AUTO_INCREMENT nom prenom idclass  table cdc_pupitre idpup AUTO_INCREMENT pupitre  table cdc_classeurs idclass AUTO_INCREMENT idpers idpup 

Mais qu'en est-il => 1 classeur à 1 utilisateur ou plusieurs => 1:n
C'est flou pour moi je suis en train de mettre tout ça sur papier pour voir.

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Oui cela commence à être moins confus.
Est-il possible au lieu de rajouter un champ dans la table cdc_personnes si je cré en plus une nouvelle table par exemple:
cdc_possession
idpers
idclass

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Je vais créé mes tables et voir tout cela de façon réel car il y a encore une petite chose qui me chagrine mais je suis pas sur.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, je reviens vers toi car j'ai commencé à faire mes requètes INSERT et le résutat n'est pas ce que j'espèrais par rapport à ta capture d'écran que tu as fait.
ma table cdc_classeur



et ma table cdc_posseder

Reply
réponses:
  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Relation entre éléments:
1 => n utilisateur par classeur
1 => 1 pupitre par classeur

Un classeur à 1 ou plusieurs utilisateurs
Un classeur a un pupitre
Un pupitre à un ou plusieurs classeur

Exemple de tables mais c'est simplement pour te donner une idée sur les relations des IDs qu'il faudrait.
Mais à propos de la tables cdc_classeurs il manque une table de relation.
C'est pour te montrer dans la table cdc_classeurs que les idpers ont le même pupitre et que idpers1 et idpers2 se partage le même classeur et idpers3 il a un classeur individuel.

La structure que tu a faites me semble peut-être cohérente mais je n'en suis pas sur. Par contre dans la table cdc_adherer il y a déjà idpers.
Excuse moi ça c'est peut-être pas très clair mes explications mais je ne peux pas faire mieux.

 cdc_personnes idpers   nom 1             pierre 2              paul 3              jacques  cdc_pupitres id        pupitre 1          guitare 2          piano                  cdc_classeurs id          idpers          idpup 1               1                   2 1                2                  2 2                 3                 2  

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, J'ai résolu totalement mon problème. Je vous remercie.

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed