Signaler

Récupérer l'id d'une entrée avec INSERT sql [Résolu]

Posez votre question papyclic 439Messages postés mercredi 5 novembre 2014Date d'inscription 28 septembre 2016 Dernière intervention - Dernière réponse le 21 sept. 2016 à 09:08
Bonjour,
Je rencontre un petit soucis en ce moment et je ne sais pas comment procéder...
En fait j'ai 3 tables
Tables cdc_personnes
idpers|nom|prenom|
Table cdc_repet
idrepet|drepet|
Table cdc_assister
idpers|idrepet|
J'ai une requète qui selectionne tous les membre avec à côté de chaque nom j'ai une checkbox
je ne vous met pas cette requète uniquement la boucle pour éviter de surcharger.
while ($r=mysql_fetch_object($resultat)) {
	echo "<input type='checkbox' name='presents[]' value='$r->idpers'> $r->nom $r->prenom<br/>\n";
}

La table cdc_assister est la relation des 2 autres tables
J'ai bien mes 2 requètes INSERT, mais malheureusement je récupére bien idrepet mais je ne sais pas comment faire pour récupérer le idpers c'est à dire les personnes que j'aurai sélectionnées.
	switch($_POST['haction']) {
		case 'new':
			// Construction de la requete d'ajout
			$requete = "INSERT INTO ".TBREPET." (drepet)"
			         . "VALUES ('$drepet')";
			$typenr  = "enregistré"; // Type d'enregistrement : ajout ou modif (pour message CR)
			$reqaj   = $requete;     // sauver temporairement la requete dans $reqaj (requete ajout) pour debuggage
			$resultat = ExecRequete($requete,$connexion); // Ne pas exécuter pour l'instant
			
			$idrep 	= mysql_insert_id();
			
			$presents 	= $_POST['presents'];
			
			$requete = "INSERT INTO ".TBASS." (idpers,idrep)"
			         . "VALUES ('$idpers','$idrep')";
			$typenr  = "enregistré"; // Type d'enregistrement : ajout ou modif (pour message CR)
			$reqaj   = $requete;     // sauver temporairement la requete dans $reqaj (requete ajout) pour debuggage
			$resultat = ExecRequete($requete,$connexion); // Ne pas exécuter pour l'instant
			
			break;
	}

Je vous remercie par avance pour votre aide.
Cdt.
Afficher la suite 
Utile
+0
moins plus
Bonjour,

$presents
est un tableau, tu peux donc y accéder grâce à un foreach par exemple:

foreach($presents as $p){
     // Construction de requête ici, $p étant un 'persid'
}
 
Ajouter un commentaire
Utile
+0
moins plus
Bonjour
J'ai essayé cela me retourne
Warning: Invalid argument supplied for foreach() in .....

j'ai bien regarder sur des forums et essayé plusieurs petites choses mais sans résultat.
Avez-vous une idée.
Merci
gardiendelanuit 1764Messages postés jeudi 20 décembre 2007Date d'inscription 29 septembre 2016 Dernière intervention - 20 sept. 2016 à 15:17
Tu l'as bien mis après la ligne 15 (déclaration de
$presents
)? Ton formulaire est bien envoyé en POST?

Si oui essai un
var_dump($presents);
Répondre
Ajouter un commentaire
Utile
+0
moins plus
oui je j'avais bien mis après la ligne 15 le var_dump me retourne bool(false)
Alors pourquoi ça me retourne false?
Ajouter un commentaire
Utile
+0
moins plus
par contre oui mon formulaire est bien en post
Ajouter un commentaire
Utile
+0
moins plus
je verifie quelque chose et te redis
Ajouter un commentaire
Utile
+0
moins plus
en fait j'ai changé d'emplacement de ma balise de fermeture du formulaire je l'ai mise après la boucle while et maintenant cela me retourne true mais par contre j'ai toujours la même erreur
bool(true)
Warning: Invalid argument supplied for foreach() in
Ajouter un commentaire
Utile
+0
moins plus
Avec la boucle foreach ça me retourne aucune erreur mais par contre je ne récupére toujours pas l'idpers.
 switch($_POST['haction']) {
  case 'new':
   // Construction de la requete d'ajout
   $requete = "INSERT INTO ".TBREPET." (drepet)"
            . "VALUES ('$drepet')";
   $typenr  = "enregistré"; // Type d'enregistrement : ajout ou modif (pour message CR)
   $reqaj   = $requete;     // sauver temporairement la requete dans $reqaj (requete ajout) pour debuggage
   $resultat = ExecRequete($requete,$connexion); // Ne pas exécuter pour l'instant
   
   $idrep  = mysql_insert_id();
   $presents  = isset($_POST['presents']);
   
  foreach($presents as $idpers){
   
   $requete = "INSERT INTO ".TBASS." (idpers,idrep)"
            . "VALUES ('$idpers','$idrep')";
   $typenr  = "enregistré"; // Type d'enregistrement : ajout ou modif (pour message CR)
   $reqaj   = $requete;     // sauver temporairement la requete dans $reqaj (requete ajout) pour debuggage
   $resultat = ExecRequete($requete,$connexion); // Ne pas exécuter pour l'instant
  }
   break;
 }

je na sais comment procéder.
Merci
jordane45 14664Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 30 septembre 2016 Dernière intervention - 21 sept. 2016 à 01:25
Bonjour,

Avec ce code :
$presents  = isset($_POST['presents']);
*
tu ne fais que tester que la variable $_POST['presents']) existe.....
Pour AFFECTER la valeur c'est comme ceci qu'il faut l'écrire :
$presents  = isset($_POST['presents']) ? $_POST['presents'] : NULL;




Au passage (aucun rapport direct avec ton souci.. mais bon...)...: Comme cela t'a déjà été dit ....Tu utilises l'ancienne extension MYSQL consiédérée comme OBSOLETE... je t'invite vivement à lire ceci :
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
puis à passer à mysqli ou PDO
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour
Malheureusemant cela me retourne toujours pas les checkboxs cochés c'est à dire idpers toujours rien.
Par contre en ce qui concerne l'extension MYSQL je préfére régler 2 ou 3 soucis avant de passer à PDO sinon cela va être compliqué pour moi.
Avez-vous d'autres solutions à me proposer, de mon côté je suis démuni d'idée mais je continue à chercher.
Je vous remercie.
Bonne journée
while ($r=mysql_fetch_object($resultat)) {
	echo "<input type='checkbox' name='presents[]' value='$r->idpers'> $r->nom $r->prenom<br/>\n"; $nbp++;
}
jordane45 14664Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 30 septembre 2016 Dernière intervention - 21 sept. 2016 à 08:32
Tu peux faire un print_r ($_POST); et nous coller le résultat ?
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour,
Je suis un gros imbécile, lorsque j'ai fait un print_r rien ne s'affichais alors je me suis dit bizarre. En fait sur mon serveur j'exportais pas le bon fichier ça ne pouvais pas fonctionner. Conclusion j'ai ce problème de régler grace à toi pour cette fichu ligne
$presents  = isset($_POST['presents']) ? $_POST['presents'] : NULL;

je te remercie et bonne journée
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !