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   -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. caro__48 Messages postés 264 Statut Membre 61
       
      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
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
    3. caro__48 Messages postés 264 Statut Membre 61
       
      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
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Dans ta page 1 ... pourquoi n'as tu pas repris le code que je t'ai donné ??
      0
  2. caro__48 Messages postés 264 Statut Membre 61
     
    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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. caro__48 Messages postés 264 Statut Membre 61
       
      J'ai l'affichage de mon array, Mais comment tu fais pour boucler sur un affichage de tableau?
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      L'affichage du tableau... c'est juste pour que tu comprennes comment est structuré cet 'array'
      et donc comment tu devras boucler dessus...
      0