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 :

Récupération tableau HTML multidimensionnel


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Récupération tableau HTML multidimensionnel
    Bonjour,

    J'ai une base de données MySQL qui contient une table nommée agent.
    Cette table a la structure suivante :
    Id Matricule Nom PostNom Fonction Service
    1 xxx xxx xxx xxx xxx
    2 xxx xxx xxx xxx xxx
    3 xxx xxx xxx xxx xxx

    J'ai crée un formulaire HTML qui a la même structure (comme ma table MySQL)et qui va permettre à l'utilisateur d'entrer plusieurs enregistrements à la fois. Mais je n'arrive pas à récupérer les enregistrements pour en suite les charger dans ma base.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Utilise cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="text" name="login[]" value="" />
    <input type="text" name="login[]" value="" />
    <input type="text" name="login[]" value="" />
    Coté PHP c'est un tableau que tu récupère.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci Beaucoup pour cette réaction rapide,

    Mais un petit exemple sera le bienvenu.

    Merci

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Heu... c'est pas ce que je viens de faire pourtant ?

    Coté PHP, si tu fais un var_dump de $_REQUEST['login'] tu verra que son type est bien un tableau. Y'a pas de mystère là...

  5. #5
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    pourrais tu nous mettre ta structure html stp ?

    Normalement, je suppose que tu as encadré ton formulaire de balise form. Sinon je te conseille de passer par des tutos pour comprendre comment ca marche.
    Après tu devras attribué un name pour chaque input présent. Ainsi lorsque tu vas valider ton formulaire tu pourras récupérer les informations saisies.

    Ce tuto explique bien.

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Mon formulaire est généré à partir du code PHP suivant :

    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
    <?php
     
    echo "<form name=form action=gestiongasoil.php?test=2 method=post>";
    echo "<table border=1>";
    echo "<tr><td>Matricule</td><td>Nom</td><td>PostNom</td><td>Fonction</td><td>Service</td><tr>";
     
    while (.......){
    echo '<tr>';
    echo "<td><INPUT TYPE=text NAME=Matricule</td>";
    echo "<td><INPUT TYPE=text NAME=Nom></td>";
    echo "<td><INPUT TYPE=text NAME=Postnom></td>";
    echo "<td><INPUT TYPE=text NAME=Fonction></td>";
    echo "<td><INPUT TYPE=text NAME=Service></td></tr>";
    }
     
    echo "</table>";
    echo "</form>";
     
    ?>
    Dans la boucle il y'a une condition qui va déterminer le nombre des lignes.

  7. #7
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Citation Envoyé par jospinkapwa Voir le message
    Dans la boucle il y'a une condition qui va déterminer le nombre des lignes.
    Autant pour moi je pensais que c'était pour une insertion de données je ne pensais pas à un listing.

    Pour cela je te conseille de regarder ceci cette méthode va te permettre de récupérer tes données facilement.

    Quand tu en seras à la partie III.c., la variable $arrAll sera en fait un tableau qui comportera toutes tes données.

    Pour les exploités, il ne te manquera plus cas faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($arrAll  as $ligne)
    {
          echo $ligne[nomElement1DeTaRequete];
          echo $ligne[nomElement2DeTaRequete];
          echo $ligne[nomElement3DeTaRequete];
    .
    etc
    Après je te laisse faire la mise en page. Envoie ce que tu as fait si tu as des problèmes. En espérant t'avoir aider...

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Toutes mes tentatives se soldent par des échecs. Dans le souci de trouver une reponse claire je vais reformuler mon probleme en etant le plus claire possible.

    j'ai une base de données Test MySQL avec une table agents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [IMG]C:\Users\kapwajo\Desktop\developper\Table MySQL.bmp[/IMG]
    Avec le code suivant

    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
    24
    25
    26
    <?php
     
    mysql_connect ('localhost','root','') or die ('Erreur de connexion');
    mysql_select_db ('Test') or die ('Base de données introuvable');
     
    $sql="select * from agents where Lieu='Kolwezi' and left(Fonction,2)='Op'";
     
    $query=mysql_query($sql);
     
    echo "<form name=form action=Test1.php method=post>";
    echo "<table border=1>";
    echo "<tr align=center  bgcolor='#FFCC99'><td>Matricule</td><td>Nom</td><td>Affectation</td></tr>";
     
    while ($row=mysql_fetch_array($query)){
     
    echo "<tr><td><INPUT TYPE=text NAME=matricule SIZE=10 MAXLENGTH=30 VALUE=".$row['Matricule']."></td>";
    echo "<td><INPUT TYPE=text NAME=nom SIZE=10 MAXLENGTH=30 VALUE=".$row['Nom']."></td>";
    echo "<td><INPUT TYPE=text NAME=Affectation SIZE=15 MAXLENGTH=30></td></tr>";
     
    }
     
    echo "</table>";
     
    echo "</form>";
     
    ?>
    J'arrive à générer un formulaire html sous forme tabulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [IMG]C:\Users\kapwajo\Desktop\developper\Table.png[/IMG]
    La troisième colonne affectation sera remplie par l'utilisateur.

    Mon souci est d'arriver à recupérer les données pour les enregistrer par la suite dans une autre table MySQL.

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Je voulais afficher les images de me tables pour vous permettre de voire très claire mais ça affiche seulement le chemin.

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Pour expliquer mes tables :

    La premiere qui vient de MySQL a deux colonnes : Matricule, NOm

    Matricule Nom
    ........... .... .
    .......... .......
    .......... .......
    .......... .......

    avec le code ci-dessus cette table est afficher sur l'explorateur avec une troisième colonne vide et qui sera remplie par l'utilisateur.

    mon probleme c'est d'arriver à recuperer cette structure pour ensuite l'enregistrer dans une autre table MySQL.

    La Structure Finale à la forme suivante :

    Matricule Nom Affection
    ........... .... . .........
    .......... ....... .........
    .......... ....... .........
    .......... ....... .........

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Alors, pour commencer on va changer un peu ton script car tu as commis plusieurs erreurs:
    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
    24
    25
    26
    27
    28
    29
    30
    <?php
    mysql_connect ('localhost','root','') or die ('Erreur de connexion');
    mysql_select_db ('Test') or die ('Base de données introuvable');
     
    $query = "select * from agents where Lieu='Kolwezi' and left(Fonction,2)='Op'";
    $results =mysql_query($sql);
    ?>
    <form name="form" action="Test1.php" method="post">
    <table>
    	<thead>
    		<tr>
    			<th>Matricule</th>
    			<th>Nom</th>
    			<th>Affectation</th>
    		</tr>
    	</thead>
    	<tfoot>
    	</tfoot>
    	<tbody>
    		<?php while ($row = mysql_ftch_assoc($results)): ?>
    		<tr>
    			<td><input type="text" name="matricule[]" maxlength="30" size="10" value="<?=$row['Matricule']?>" /></td>
    			<td><input type="text" name="nom[]" maxlentgth="30" size="10" value="<?=$row['Nom']?>" /></td>
    			<td><input type="text" name="affectation[]" maxlength="30" size="10" value="<?=$row['Affectation']?>" /></td>
    		</tr>
    		<?php endwhile ?>
    	</tbody>
    </table>
    <input type="submit" value="Envoyer" />
    </form>
    On utilise les nom avec [] sur les inputs de telle sorte qu'on puisse avoir plusieurs valeurs (une par élément et par ligne du tableau).

    Règle générale: ne pas mélanger le PHP et le HTML et ne pas mélanger le HTML 4 et le XHTML (comme tu le faisait dans ton script de départ).

    Dans Test1.php, on va réccupérer les valeurs de chaque ligne en faisant:
    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
     
    <?php
    if (isset($_POST['matricule']) && isset($_POST['nom']) && isset($_POST['affectation'])) {
      // on passe tout en tableau pour simplifier
      if (is_scalar($_POST['matricule'])) $_POST['matricule'] = array($_POST['matricule']);
      if (is_scalar($_POST['nom'])) $_POST['nom'] = array($_POST['nom']);
      if (is_scalar($_POST['affectation'])) $_POST['affectration'] = array($_POST['affectation']));
     
      // on va parcourir ligne à ligne
      $c = count($_POST['matricule']);
      for ($i = 0; $i < $c; $i ++) {
         $matricule = $_POST['matricule'][$i];
         $nom = $_POST['nom'][$i];
         $affectation = $_POST['affectation'][$i];
     
         // et ici tu envoie tes requêtes ou tu fais tes traitements...
      }
    }
    Tu vois le principe ? La difficulté consiste à récupérer des listes d'éléments et non pas des éléments atomiques comme c'est généralement le cas.

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci Beaucoup

    cette fois ci vous avez saisi mon problème.

    je vais testé ce que vous venez de me donnez et je vous direz le résultat.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer un tableau html multidimensionnel associatif sous javascript
    Par Mormegil dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2007, 18h47
  2. [HTML et CSS] Prolème impression tableau html
    Par ofo_tn dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 21/08/2005, 18h27
  3. Insertion javascript dans tableau HTML
    Par Rocca dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2005, 13h28
  4. Tableau html décalage
    Par verticka dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/02/2005, 16h01
  5. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 14h02

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