Récupération plusieurs variables
caro__48
Messages postés
264
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai actuellement deux pages. Une qui affiche des données depuis une requete sql, (ex: pour l'instant j'ai trois lignes) Sous forme de fomulaire et la seconde qui exécute une nouvelle requête.
Ma requete en page 2 s'effectue bien mais je ne récupère que la première ligne de ma page 1.
Il doit falloir faire une boucle mais je ne vois pas comment.
Quelqu'un peut-il m'aider?
Code page 1: (Affichage des données)
Code de la page2 (récupération et insert)
l'informatique est né pour nous faire réfléchir....
J'ai actuellement deux pages. Une qui affiche des données depuis une requete sql, (ex: pour l'instant j'ai trois lignes) Sous forme de fomulaire et la seconde qui exécute une nouvelle requête.
Ma requete en page 2 s'effectue bien mais je ne récupère que la première ligne de ma page 1.
Il doit falloir faire une boucle mais je ne vois pas comment.
Quelqu'un peut-il m'aider?
Code page 1: (Affichage des données)
while ($val = mysql_fetch_object($requete1)) { ?>
<tr>
<input type="hidden" name="id_adh" value="<?php echo $val->id_adh?>"/>
<td align="center" >
<input type="hidden" name="nom_adh" value=" <?php echo $val->nom_adh?>"/> <?php echo $val->nom_adh?></b>
</td>
<td align="center">
<input type="hidden" name="nom_pro"value="<?php echo $val->nom_produit?>"/>
<?php echo $val->nom_produit?>
</td>
etc etc...
<?php
} ?>
Code de la page2 (récupération et insert)
<?php
$id_adh =$_POST['id_adh'];
$qt_cde = $_POST['qt_cde'];
$date_commande =$_POST['date'];
$id_produit = $_POST['produit'];
$etat = $_POST['etat'];
$PVC =$_POST['PVC'];
$PA =$_POST['PA'];
$Date_L = $_POST['DL'];
$logo = $_POST['logo'];
$saisie_adh =$_POST['qt_commande'];
$requete1 =mysql_query ("INSERT INTO historique_commandes (`id_adh`, `id_produit`, `PA`, `PVC`, `Saisie_adh`, `qt_commande`, `Etat`, `date_livraison`, `fournisseur`, `date_commande`) VALUES ('".$id_adh."', '".$id_produit."', '".$PA."', '".$PVC."', '".$saisie_adh."', '".$qt_cde."', '".$etat."', '".$Date_L."','".$logo."','".$date_commande."')") or die ("Problème Réseau, veuillez contacter la centrale. Erreur = ".mysql_error());
| EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
l'informatique est né pour nous faire réfléchir....
3 réponses
-
Bonjour,
1 - Je ne vois pas l'écriture ternaire pour la récupération des variables$id_adh =isset($_POST['id_adh'])?$_POST['id_adh']:'';
2 - Tu utilises l'ancienne extension mysql (considérée comme obsolète).
Je t'invite à lire ceci :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
3 - Si tu crées des inputs dynamiquement... il faut donc les traiter comme des array...
pour cela il faut que tu ajoutes des "[]" dans leurs noms<input type="hidden" name="id_adh[]" value="<?php echo $val->id_adh?>"/>
Ensuite tu pourras faire des boucles dessus.
-
Bonjour Jordane45,
J'ai fait ça entre temps pour la récupération de mes variables:
$id_adh = isset($_POST['id_adh[]']) ? $_POST['id_adh[]'] : '';
$qt_cde = isset ($_POST['qt_cde[]']) ? $_POST['qt_cde[]'] : '';
$date_commande = isset ($_POST['date[]']) ? $_POST['date[]'] : '';
$id_produit = isset ($_POST['id_produit[]']) ? $_POST['id_produit[]'] : '';
$etat = isset ($_POST['etat[]']) ? $_POST['etat[]'] : '';
$PVC = isset ($_POST['PVC[]']) ? $_POST['PVC[]'] : '';
$PA = isset ($_POST['PA[]']) ? $_POST['PA[]'] : '';
$Date_L = isset ($_POST['DL[]']) ? $_POST['DL[]'] : '';
$logo = isset ($_POST['logo[]']) ? $_POST['logo[]'] : '';
$saisie_adh = isset ($_POST['qt_commande[]']) ? $_POST['qt_commande[]'] : '';
(donc j'ai écouté tes conseils)
En ce qui concerne l'ancienne extension, j'ai bien lu le doc. Mais pour l'instant il faut vraiment que j'arrive a faire fonctionner ma requete. Il fois que cela marchera je travaillerai en local pour faire évoluer en une bonne version.
Je suis en train d'essayer de mettre les [] dans leurs noms.
Il faut rien que je mette dans les []? Car pour l'instant cela retourne des variables à 0... -
-
Du coup dans ma page 1 j'ai fait çà:
<input type="hidden" id="id_cmd" name="commandes[<?php echo $cmd?>][id_adh]" value="<?php echo $val->id_adh?>"/>
<input type="hidden" name="commandes [<?php echo $cmd?>][nom_adh]" value=" <?php echo $val->nom_adh?>"/> <?php echo $val->nom_adh?></b>
etc etc
et dans ma page 2
...
$ligne['id_adh'] = isset($_POST['id_adh']) ? $_POST['id_adh'] : '';
$ligne['Date_L'] = isset ($_POST['DL']) ? $_POST['DL'] : '';
$ligne['logo'] = isset ($_POST['logo']) ? $_POST['logo'] : '';
$ligne['saisie_adh'] = isset ($_POST['qt_commande']) ? $_POST['qt_commande'] : '';
print_r($_POST);
foreach( $_POST['commandes']as $ligne) {
$requete1 =mysql_query ("INSERT INTO historique_commandes (`id_adh`, `id_produit`, `PA`, `PVC`, `Saisie_adh`, `qt_commande`, `Etat`, `date_livraison`, `fournisseur`, `date_commande`) VALUES ('". $ligne['id_adh'] ."', '".$ligne['id_produit']."', '".$ligne['PA']."', '".$ligne['PVC']."', '".$ligne['saisie_adh']."', '".$ligne['qt_cde']."', '".$ligne['etat']."', '".$ligne['Date_L']."','".$ligne['logo']."','".$ligne['date_commande']."')") or die ("Problème Réseau, veuillez contacter la centrale. Erreur = ".mysql_error());
Mais il me dit que mes index ne sont pas définis!
Notice: Undefined index: logo in C:\Program File.... Sauf pour le 1er id_adh qu'il prend en compte:
Résultat de la requete à l'affichage:
INSERT INTO historique_commandes (`id_adh`, `id_produit`, `PA`, `PVC`, `Saisie_adh`, `qt_commande`, `Etat`, `date_livraison`, `fournisseur`, `date_commande`) VALUES ('27', '', '', '', '', '', '', '','','') -
-
-
Ben j'ai essayer mais je n'arrivai pas a faire mon foreach.. En fait j'ai fait 2 tests.
Page 1
<input type="hidden" name="id_adh[]" value="<?php echo $val->id_adh?>"/>
<td align="center" >
<b style="color:#2b8dd1";>
<input type="hidden" name="nom_adh[]" value=" <?php echo $val->nom_adh?>"/> <?php echo $val->nom_adh?></b>
</td>.....
Page 2:
$ligne['id_adh'] = isset($_POST['id_adh']) ? $_POST['id_adh'] : '';
$ligne['qt_cde'] = isset ($_POST['qt_cde']) ? $_POST['qt_cde'] : '';
$ligne['date_commande'] = isset ($_POST['date']) ? $_POST['date'] : '';
$ligne['id_produit'] = isset ($_POST['id_produit']) ? $_POST['id_produit'] : '';
$ligne['etat'] = isset ($_POST['etat']) ? $_POST['etat'] : '';
$ligne['PVC'] = isset ($_POST['PVC']) ? $_POST['PVC'] : '';
$ligne['PA'] = isset ($_POST['PA']) ? $_POST['PA'] : '';
$ligne['Date_L'] = isset ($_POST['DL']) ? $_POST['DL'] : '';
$ligne['logo'] = isset ($_POST['logo']) ? $_POST['logo'] : '';
$ligne['saisie_adh'] = isset ($_POST['qt_commande']) ? $_POST['qt_commande'] : '';
print_r($_POST);
foreach( $_POST['']as $ligne) {
$requete1 =mysql_query ("INSERT INTO historique_commandes (`id_adh`, `id_produit`, `PA`, `PVC`, `Saisie_adh`, `qt_commande`, `Etat`, `date_livraison`, `fournisseur`, `date_commande`) VALUES ('". $ligne['id_adh'] ."', '".$ligne['id_produit']."', '".$ligne['PA']."', '".$ligne['PVC']."', '".$ligne['saisie_adh']."', '".$ligne['qt_cde']."', '".$ligne['etat']."', '".$ligne['Date_L']."','".$ligne['logo']."','".$ligne['date_commande']."')") or die ("Problème Réseau, veuillez contacter la centrale. Erreur = ".mysql_error());
Mais le résultat avec ça c'est:
Notice: Undefined index: in C:\Program Files (x86)\EasyPHP-12.1\www\Systeme_Achat_Nvlle_version_10_2014\AdMiN062014\EXPORT\transerft_HisT0r1que\Requete_insert_into.php on line 48
Warning: Invalid argument supplied for foreach() in C:\Program Files (x86)\EasyPHP-12.1\www\Systeme_Achat_Nvlle_version_10_2014\AdMiN062014\EXPORT\transerft_HisT0r1que\Requete_insert_into.php on line 48
Du coup je me suis dit qu'il fallait mettre un argument dans les [] de la page 1 pour le spécifier dans le foreach.. -
Vas y par étape ....
Dans ta page 2 ... ne mets que :<?php //affichage du contenu de POST print_r($_POST);
Puis regardes ce que ça te donne....
Tu vas voir un ARRAY contenant tes différentes variables..... et donc... comment tu devras boucler dessus par la suite...