Récupération plusieurs variables

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....

3 réponses

  1. Modérateur
    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.

    1. 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...
    2. Modérateur
      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.....
    3. 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', '', '', '', '', '', '', '','','')
    4. Modérateur
      Dans ta page 1 ... pourquoi n'as tu pas repris le code que je t'ai donné ??
  2. 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..
    1. Modérateur
      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...

      1. J'ai l'affichage de mon array, Mais comment tu fais pour boucler sur un affichage de tableau?
      2. Modérateur
        L'affichage du tableau... c'est juste pour que tu comprennes comment est structuré cet 'array'
        et donc comment tu devras boucler dessus...