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

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 20 sept. 2016 à 14:02
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 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.
A voir également:

9 réponses

gardiendelanuit Messages postés 1769 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
20 sept. 2016 à 14:24
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'
}
 
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 sept. 2016 à 15:13
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
0
gardiendelanuit Messages postés 1769 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
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);
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 sept. 2016 à 15:35
oui je j'avais bien mis après la ligne 15 le var_dump me retourne bool(false)
Alors pourquoi ça me retourne false?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 sept. 2016 à 15:36
par contre oui mon formulaire est bien en post
0

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

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 sept. 2016 à 15:38
je verifie quelque chose et te redis
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 sept. 2016 à 15:49
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
Modifié par papyclic le 20/09/2016 à 22:40
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 21/09/2016 à 01:26
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 :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
puis à passer à mysqli ou PDO
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
21 sept. 2016 à 08:17
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++;
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
21 sept. 2016 à 08:32
Tu peux faire un print_r ($_POST); et nous coller le résultat ?
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
21 sept. 2016 à 09:08
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
0