Récupération plusieurs variables

Fermé
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 - Modifié par jordane45 le 12/11/2015 à 09:50
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 12 nov. 2015 à 15:04
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)

 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....
A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2015 à 09:54
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.


0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
12 nov. 2015 à 10:16
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...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2015 à 10:30
Mets les [] dans les attributs "NAME" de tes balises HTML ... puis, dans ton script PHP (là où tu veux récupérer les infos) fais donc un
 print_r($_POST);
pour comprendre comment les récupérer.....
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
12 nov. 2015 à 12:14
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', '', '', '', '', '', '', '','','')
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2015 à 12:23
Dans ta page 1 ... pourquoi n'as tu pas repris le code que je t'ai donné ??
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
12 nov. 2015 à 12:31
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..
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2015 à 13:41
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...





0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
12 nov. 2015 à 14:51
J'ai l'affichage de mon array, Mais comment tu fais pour boucler sur un affichage de tableau?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2015 à 15:04
L'affichage du tableau... c'est juste pour que tu comprennes comment est structuré cet 'array'
et donc comment tu devras boucler dessus...
0