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

Signaler
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
-
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
-
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.

9 réponses

Messages postés
1775
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
231
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'
}
 
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
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
Messages postés
1775
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
231
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);
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
oui je j'avais bien mis après la ligne 15 le var_dump me retourne bool(false)
Alors pourquoi ça me retourne false?
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
par contre oui mon formulaire est bien en post
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
je verifie quelque chose et te redis
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
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
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
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
Messages postés
28930
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 mai 2020
2 467
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
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
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++;
}
Messages postés
28930
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
29 mai 2020
2 467
Tu peux faire un print_r ($_POST); et nous coller le résultat ?
Messages postés
446
Date d'inscription
mercredi 5 novembre 2014
Statut
Membre
Dernière intervention
18 octobre 2016
3
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