IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] problème de récupération de données


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut [Tableaux] problème de récupération de données
    Bonjour à tous,

    Je programme depuis peu de temps en php, et je me trouve confronté à un problème...
    Je vous explique, en fait je genere dans un formulaire grace à une boucle "while", 20 input de type select qui liste des données situées dans une base de donnée.
    Ce que je voudrais faire, c'est recuperer ces données, via un autre script, sous forme d'un tableau. Jusqu'ici, tout vas bien en revanche lorsque je veux afficher le contenue de la variable où sont stockés les données envoyé par mon input, meme les champs qui ne sont pas rempli apparaissent, je voudrais avoir que les champs ayant était remplis, comment faire?
    D'autre part j'aimerai pouvoir affiche qu'une donnée du tableau omment pourrais-je faire???

    Merci d'avance, en esperant avoir tét assez clair

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    tu peux mettre un bout de ton code stp?

    Normalement, pour vérifier si les données sont saisies, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['input_texte'])){
    }
    ou input_texte est un de tes champs input.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Voici mon code source pour le questionnaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php $a="0";
      while($a<=20)
        {
          echo "<tr><td><select name=\"materiel[]\" size=\"1\">
          <option value=\"\"></option>";
     
          $sql = "SELECT * FROM catalogue ORDER BY 'Id' ASC";
          $req_login = mysql_query($sql) or die('Erreur SQL !');
     // on fait une boucle qui va faire un tour pour chaque enregistrements
          while($data_login=mysql_fetch_assoc($req_login))
            {
            $designation = $data_login ['Designation'];
            echo "<option value=\"$designation\">$designation</option>";
            }
          echo "</select></td>";
    et voici celui opour recuperer mes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $materiel="";
    if(isset($_POST['materiel']) && !empty($_POST['materiel']))
      {
        for($j=0;$j<sizeof($_POST['materiel']);$j++)
          {
            $materiel=$_POST['materiel'][$j]."-".$materiel;
          }
      }
    echo $materiel;
    et le resultat de mon echo me "-------------donnée1-donnée2-donnée3..."
    et moi je voudrais avoir: donnée1-donnée2-...-derniere donnée.
    qu'est ce que tu en penses???

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $materiel="";
    if(isset($_POST['materiel']) && !empty($_POST['materiel']))
      {
        for($j=0;$j<sizeof($_POST['materiel']);$j++)
          {
            // verifie que la donnée existe avant de la mettre
            if(isset($_POST['materiel'][$j]) 
                {
                $materiel=$_POST['materiel'][$j]."-".$materiel; 
                }
          }
      }
    echo $materiel;
    c'est $_POST['materiel][$j] dont il faut tester la valeur si tu ne veux pas tout afficher.

    (Penses a mettre [ CODE] avant ton code et [ /CODE] juste apres pour qu'on puisse le lire facilement (et sans les espaces). Il suffit de cliquer sur le bouton # en haut de la boite de message)

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    merci pour les recommendation
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "materiel[un nombre au hasard]";
    Mais quand je fais ça, je n'ai qu'une lettre qui apparait et non tout le mots
    si quelqu'un a une autre idées je suis à l'ecoute, mais en tout cas merci pour votre participation, et votre rapidité de reponse...
    Amicalement Arak

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Dans ton script, tu construis une string (chaine de caractères) dans laquelle tu insères le nom de tes différents matériels.

    A la fin tu as donc une seule string composée d'un certain nombre de caractères. Si tu fais ca revient à afficher le caractère numéro "$x" de ta chaine matériel.

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    bonjour à vous,

    donc j'ai modifié mon script pour recuperer les données du formulaire, voici mon script...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(isset($_POST['materiel']) && !empty($_POST['materiel']))
      {
        for($j=0;$j<sizeof($_POST['materiel']);$j++)
          {
            $materiel=($_POST['materiel'][$j]."','".$materiel);
          }
        for($i=0;$i<sizeof($materiel);$i++)
        {
          $tab=array($materiel);
        }
         echo $tab[un nombre];
      }
    le probleme c'est que je recupere bien toutes mes valeurs, mais elles sont toutes dans l'offset 0 de $tab, en effet $tab[1] par exemple est vide...
    Comment faire pour stocker une donnée par offset dans mon tableau $tab???

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Dans le code de ta deuxieme boucle tu recrées un nouveau tableau a chaque fois.
    Et en plus je comprends pas bien tu mets bout a bout, dans la meme chaine, tous les matériels et après tu veux qu'ils soient tous dans un indice différent du tableau...
    Alors qu'ils sont, de toute facon deja dans le tableau $materiel !!

    Citation Envoyé par arakiri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    if(isset($_POST['materiel']) && !empty($_POST['materiel']))
      {
         // la tu as un tableau stockant tous tes materiels
        $tableauDeMateriel = $_POST['materiel'];
     
        // la tu vas avoir une seule string qui separe les materiels par des ','
        for($j=0;$j<sizeof($_POST['materiel']);$j++)
          {
            $materiel=($_POST['materiel'][$j]."','".$materiel);
          }
     
        // ca, ca ne sert plus a rien
        for($i=0;$i<sizeof($materiel);$i++)
        {
          $tab=array($materiel);
        }
         echo $tab[un nombre];    // ca, ca ne sert plus a rien
     
         echo tableauDeMateriel[$monNombre];
         // equivalent à
         echo $_POST['materiel'][$monNombre];
      }

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    j'essaye de resoudre ce probleme et je pense etre sur la bonne voie, mais je tombe encore sur un probleme...

    voici mon code pour le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
      <?php $a="0";
      while($a<=20)
        {
          echo "<tr><td><select name=\"materiel'.$a.'\" size=\"1\">
          <option value=\"\"></option>";
     
          $sql = "SELECT * FROM catalogue ORDER BY 'Id' ASC";
          $req_login = mysql_query($sql) or die('Erreur SQL !');
     // on fait une boucle qui va faire un tour pour chaque enregistrements
          while($data_login=mysql_fetch_assoc($req_login))
            {
            $designation = $data_login ['Designation'];
            echo "<option value=\"$designation\">$designation</option>";
            }
          echo "</select></td>";   
          echo "<td>Nombre :</td><td>&nbsp;<input type=\"text\" name=\"nombre'.$a.'\" size=\"5\" maxlength=\"5\" value=\"0\"></td>";
          echo "<td><dd>Prix unitaire :</td><td>&nbsp;<input type=\"text\" name=\"prix_unit'.$a.'\" size=\"5\" maxlength=\"5\" value=\"0\"></td>";
          echo "<td><dd>Coef de maj :</td><td>&nbsp;<input type=\"text\" name=\"coef_maj'.$a.'\" size=\"5\" maxlength=\"5\" value=\"1\"></td>";
     
          $a++;
        }
     
    ?>
    et en ce qui concerne, la recuperation de mes données, (c'est la que sepose le probleme), voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // on recupere le materiel utilisé //
    $materiel="";
    $a="0";
    while($a<=20)
    {
      if(isset ($_POST['materiel'.$a]))
      {
        $materiel=$_POST['materiel'.$a];
      }
      else
        {
          echo "pourquoi???";
        }
      echo $materiel."<br />";
      $a++;
    }
    // fin de la recuperation des données //
    Le probleme c'est que meme si je remplie les champs du formulaire, je n'arrive pas à entrer dans ma boucle IF.

    lorsque ce script s'execute, je vois 20 fois "pourquoi???"

    Je suis un peu perdu, quelqu'un pourrais m'apporter ces lumieres??? SVP

Discussions similaires

  1. [Tableaux] problème de récupération de données
    Par arakiri dans le forum Langage
    Réponses: 3
    Dernier message: 21/05/2007, 15h18
  2. Réponses: 22
    Dernier message: 05/07/2006, 16h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 23h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 16h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo