Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2011, 12h24   #1
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
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.
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 12h27   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Hello

Utilise cette forme:
Code :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 12h37   #3
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
Merci Beaucoup pour cette réaction rapide,

Mais un petit exemple sera le bienvenu.

Merci
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 12h43   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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à...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 12h48   #5
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
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.
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 13h58   #6
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
Mon formulaire est généré à partir du code PHP suivant :

Code :
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.
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 15h09   #7
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
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 :
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...
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h52   #8
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
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 :
[IMG]C:\Users\kapwajo\Desktop\developper\Table MySQL.bmp[/IMG]
Avec le code suivant

Code :
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 :
[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.
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h59   #9
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
Je voulais afficher les images de me tables pour vous permettre de voire très claire mais ça affiche seulement le chemin.
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h13   #10
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
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
........... .... . .........
.......... ....... .........
.......... ....... .........
.......... ....... .........
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h19   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Alors, pour commencer on va changer un peu ton script car tu as commis plusieurs erreurs:
Code :
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 :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 15h31   #12
Invité de passage
 
Jospin Kapwa
Inscription : août 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : Jospin Kapwa

Informations forums :
Inscription : août 2010
Messages : 24
Points : 4
Points : 4
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
jospinkapwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h47.


 
 
 
 
Partenaires

Hébergement Web