Gestion Membre

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 2 mai 2014 à 08:13
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 - 3 juil. 2014 à 18:16
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.
<!--#######################################################################################################################################-->
<?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:

61 réponses

Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
2 mai 2014 à 15:01
Bonjour,

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";

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 mai 2014 à 17:49
Bonjour

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
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
2 mai 2014 à 17:57
Bonjour,

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.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 mai 2014 à 18:08
Bonjour
Voici ma page entière.
Merci



https://www.cjoint.com/?DEcsf6h3PBd
0

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

Posez votre question
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
2 mai 2014 à 19:04
Ok.
Le 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
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 mai 2014 à 19:39
Merci encore mais il doit y avoir encore autre chose car sans résultat aucun INSERT se fait.
Au niveau des adherent, gestion tout ok sauf table tb_statut.
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
2 mai 2014 à 20:34
Quelle est le type de la colonne rid_statut de ta table tb_adherent_statut ?
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
2 mai 2014 à 20:42
je pense que tu essaye d'insérer le nom du statut et l'id.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 mai 2014 à 22:02
table tb_statut
id_statut
nom_statut

table tb_adherent_statut
rid_statut
rid_adherent
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 mai 2014 à 22:04
le type des colonnes de la table tb_adherent_statut c'est INT
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
3 mai 2014 à 10:53
Ok.

Donc au niveau du select, il faut remplacer
value=".$donnees["nom_statut"]."
par
value=".$donnees["id_statut"]."
.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
3 mai 2014 à 15:33
Bonjour

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
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
3 mai 2014 à 18:55
Bonjour
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"';?> />	

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
4 mai 2014 à 20:53
Bonjour
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();
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
4 mai 2014 à 21:15
Bonjour,

Le problème vient que le tableau
$_POST
est 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"': ''

0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
5 mai 2014 à 12:35
Bonjour
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.
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
5 mai 2014 à 17:10
Peux-tu poster ta dernière version de ton code ? Cela m'aidera à savoir ou tu en es.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
5 mai 2014 à 20:01
Bonjour
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
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
6 mai 2014 à 00:47
Bonjour

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 ,
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
6 mai 2014 à 12:54
Bonjour

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"';}
0
Gigatrappeur Messages postés 226 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 3 juillet 2014 25
6 mai 2014 à 17:06
C'est quoi le but exactement ?
Est-ce de ré-afficher les précédentes cases cochées ?
Si oui, dans quels cas ?
- après avoir exécuté les inserts (permet de visionner qu'elles sont les cases qui étaient cochés)
- lors d'une erreur d'exécution d'une requête SQL.
- autres ?
0