bonjour comment afficher les données d'une bd dans des des champs d'un tableau (array ) mais qui soit en fait des champs modifiable, editable; comme un champs texte..
merci.
bonjour comment afficher les données d'une bd dans des des champs d'un tableau (array ) mais qui soit en fait des champs modifiable, editable; comme un champs texte..
merci.
Bonjour,
tu ne donnes pas beaucoup d'informations...
Pour avoir des champs éditable en HTML, il faut que tu utilise la balise
Donc tu génères autant de balises que tu as de valeur dans ton tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" value="valuer" />
en fait en php je fais " SHOW.... from...."
j'inscrit le resultat dans un tableau suivant un ordre croissant... par exemple
je suis en "lecture" de ces informations..
je voudrais que php genere autant de champs texte que de ligne de mon tableau pour pouvoir modifier eventuellement certaines valeur...
avez-vous + d'infos.?
C'est assez délicat sans savoir exactement sur quels données tu travail.
Mais une fois que tu as ton tableau, tu crées une boucle qui gènère ton code hml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $tableau = executeQuery("SHOW ... FROM"); foreach ($tableau as $key => $valeur) { echo "<input type='text' value='$valeur' />"; }
ceci est mon code et j'affiche mon resultat dans un tableau.
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
31
32
33
34
35
36
37 $select = "SELECT info_produit.nom_produit, info_produit.cdt, info_produit.prix, info_produit.categorie, info_cdt.qt_cdt, info_cdt.prix_u_cdt,info_cdt.u_qt_cdt FROM info_produit, info_cdt WHERE info_produit.nom_produit = info_cdt.nom_produit"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); // si on a récupéré un résultat on l'affiche. if($total) { // debut du tableau echo '<table bgcolor="#996523" align="center" border="0">'."\n"; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<td bgcolor="#993333" width="127"><div align="center"><span class="Style1">NOM PRODUIT</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">CDT DE COMMANDE</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">UNITE DANS LE CDT</td>'; echo '<td bgcolor="#993333" width="115"><div align="center"><span class="Style1">PRIX </td>'; echo '<td bgcolor="#993333" width="115"><div align="center"><span class="Style1">CDT UNITAIRE</td>'; echo '<td bgcolor="#993333" width="110"><div align="center"><span class="Style1">PRIX CDT UNITAIRE UNITAIRE</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">CATEGORIE</td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while($row = mysql_fetch_array($result)) { echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["nom_produit"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["cdt"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["qt_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["prix"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["u_qt_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["prix_u_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC">'.'<div align="center">'.$row["categorie"].'</td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; // fin du tableau. } else echo 'Pas d\'enregistrements dans cette table...'; // on libère le résultat mysql_free_result($result); ?>
comment faire pour afficher toujours dans un tableau mais dans des champs modifiables les meme donnes...
CDT
Si tu prends une ligne :
Il faut que tu ajoutes le champ input :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<td bgcolor="#CCCCCC"><div align="center">'.$row["nom_produit"].'</td>'
Maintenant tu devrais avoir un champs qui affiche la valeur de ton champs que tu peux modifier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<td bgcolor="#CCCCCC"><div align="center"><input type="text" name="nom_produit" value="'.$row["nom_produit"].'"/> </td>'
Par contre pour enregistrer les changements, il faut :
- que tu crées un formulaire (balise form)
- que tu crée un bouton de validation
- et surtout que tu crées une page php qui récupère les données de ton formulaire et les enregistre dans la base de données
SUPER !!!
et merci
oui il faut creer le formulaire..
mais comment sur chaque ligne ? ? ?
et a ton avis pourrait on avoir pour certain champs un menu deroulant qui serait relier a une table de la BD ??? pour avoir une liste de choix au lieu d'ecrire n'importe quoi..? ? en fait,,,,
a ton avis !
encore merci
Il suffit d'un formulaire pour l'ensemble des données à modifier.
Tu peux regarder ici (http://php.developpez.com/cours/?pag...ge#formulaires) pour plus d'informations.
ok,
mais etant donnée que j'ai 5 colonnes et un nombre de lignes variables,
comment je fais dans mon formulaire pour recuperer chaque champs dans differents enregistrements...
par ex le nom des produits, il y en a 130.. quand je vais valider mon formulaire, il va falloir recréer 130 entrées... mais dans mon code php je ne vais avoir que le nom du champs des "nom_produit"... comment faire comprendre qu'a chaque ligne creer il faut recreer une entrée formulaire ?
Tu m'as compris...?
CDT
JULIEN
Dans tes données tu as ta clé primaire qui permet d'identifier ta ligne.
Je pense que le plus simple serais de faire un formulaire pour chaque ligne dans ce cas là. Comme cela tu récupèreras les données modifiées et tu pourras effectuer un UPDATE grâce à la valeur de ta clé primaire (que tu peux insérer dans ton formulaire avec la balise <input type='hidden' /> pour que l'utilisateur ne puisse la modifier).
Une autre solution serais que tu laisses ton tableau comme tel et que tu rajoutes seulement un bouton modifier qui tu renvois sur une autre page te permettant de modifier seulement la ligne souhaitée.
j'ai du mal a comprendre..
l'idée est d'avoir une liste de produit, que nous allons commander
j'ai donc besoin d'avoir la liste des produit et un champs libre pour entrer une quantité de commande...
voir sur mon site la page en cours.. ici
voici mon code de la page
puis la page de traitement..
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <form id="formulaire" name="formulaire" method="post" action="envoiereception.php"> <? // information pour la connection à le DB $host = 'mysql'; $user = '*****'; $pass = '*****'; $db = 'db0221703'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); // requête SQL qui compte le nombre total d'enregistrement dans la table et qui //récupère tous les enregistrements $select = "SELECT info_produit.nom_produit, info_produit.cdt, info_produit.prix, info_produit.categorie, info_cdt.qt_cdt, info_cdt.prix_u_cdt,info_cdt.u_qt_cdt FROM info_produit, info_cdt WHERE info_produit.nom_produit = info_cdt.nom_produit"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); // si on a récupéré un résultat on l'affiche. if($total) { // debut du tableau echo '<table bgcolor="#996523" align="center" border="0">'."\n"; // première ligne on affiche les titres prénom et surnom dans 2 colonnes echo '<td bgcolor="#993333" width="127"><div align="center"><span class="Style1">NOM PRODUIT</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">CDT DE COMMANDE</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">UNITE DANS LE CDT</td>'; echo '<td bgcolor="#993333" width="115"><div align="center"><span class="Style1">PRIX </td>'; echo '<td bgcolor="#993333" width="115"><div align="center"><span class="Style1">CDT UNITAIRE</td>'; echo '<td bgcolor="#993333" width="110"><div align="center"><span class="Style1">PRIX CDT UNITAIRE UNITAIRE</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">CATEGORIE</td>'; echo '<td bgcolor="#993333" width="95"><div align="center"><span class="Style1">LIVRAISON</td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while($row = mysql_fetch_array($result)) { echo '<td bgcolor="#CCCCCC"><div align="center"><name="nom_produit">'.$row["nom_produit"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="cdt">'.$row["cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><input type="text" name="qt_cdt" size ="5" value="'.$row["qt_cdt"].'"</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><input type="text" name="prix" size ="5" value="'.$row["prix"].'"</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="u_qt_cdt">'.$row["u_qt_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="prix_u_cdt">'.$row["prix_u_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="categorie">'.$row["categorie"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center">'.$row["-1"].'<input type="text" name="qt_recept" size="6"></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; // fin du tableau. } else echo 'Pas d\'enregistrements dans cette table...'; // on libère le résultat mysql_free_result($result); ?> <label> <input type="submit" name="VALIDER" id="VALIDER" value="Envoyer" /> </label> </form>
et en fait ca m'enregistre des "2" dans ma table " qt_cdt" ??? pourquoi, alors là, mistere !!!!
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 //données a renseigner $nom_produit = $_POST['nom_produit']; $cdt = $_POST['cdt']; $qt_cdt = $_POST['qt_cdt']; $u_qt_cdt = $_POST['u_qt_cdt']; $prix = $_POST['prix']; $categorie = $_POST['categorie']; $qt_recept = $_POST['qt_recept']; $prixlivraison = (($prix * $qt_recept) * 1); //fin des données // Connexion a Mysql (changer l'host, le login et le mot de passe SVP) $mysql_link = require('connect.php'); // Vérification de la validité de la connexion MYSQL if($mysql_link) { // Requete d'insertion MYSQL $requete = "INSERT INTO reception (nom_produit,cdt,prix,categorie,qt_recept,qt_cdt) VALUES ('$nom_produit','$cdt','$prixlivraison','$categorie','$qt_recept','$qt_cdt')"; $execution = mysql_db_query("db0221703", $requete); } // La connexion Mysql est indisponible else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>- Soit vous n'avez pas lancé MYSQL.</font></body></html>"; ?>
Merci de m'aider dewsz, c'est tres sympa !
Julien
Ok, tu peux utiliser un tableau en nom de champs, par exemple :
comme cela tu récupères un tableau plutôt qu'une variable:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 echo '<td bgcolor="#CCCCCC"><div align="center"> >name="nom_produit[1]">'.$row["nom_produit"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"> <name="nom_produit[2]">'.$row["nom_produit"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"> <name="nom_produit[3]">'.$row["nom_produit"].'</td>';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 foreach ($_POST["nom_produit"] as $key => $valeur) //DO action
merci,
mais je ne connais pas mon nombre de champs exact dans mon tableau..
si j'ajoute des produit + tard.. ca fausse tout...
puisque le tableau est genere via la base de donnée...
donc je ne peux pas faire comme ca.. ,non..?
Pour chaque colonne tu auras un tableau :
- nom_produit[]
- prix_u_cdt[]
- ...
et tu utiliseras ta clé primaire de ta ligne pour indexer ton tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $nom_produit[ $row['id'] ] = $row['nom_produit']; echo "<input type=''text' name='nom_produit[". $row['id'] . "]' value='".$row['nom_produit']."' />
je galere..... c'est dur...
voici mon code, j'ai un souci de " ou de ' mais sinon, est ce que ma demarche est bonne, c'est bien dans ce premiser fichier qu'il faut que j'insere le code que tu m'as donné....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $nom_produit[ $row['num'] ] = $row['nom_produit']; echo '<td bgcolor="#CCCCCC"><div align="center"><input type=''text' name='nom_produit[". $row["num"] . "]' value='.$row["nom_produit"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="cdt">'.$row["cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><input type="text" name="qt_cdt" size ="5" value="'.$row["qt_cdt"].'"</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><input type="text" name="prix" size ="5" value="'.$row["prix"].'"</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="u_qt_cdt">'.$row["u_qt_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="prix_u_cdt">'.$row["prix_u_cdt"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center"><name="categorie">'.$row["categorie"].'</td>'; echo '<td bgcolor="#CCCCCC"><div align="center">'.$row["-1"].'<input type="text" name="qt_recept" size="6"></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; // fin du tableau.![]()
Le premier echo me semble bon, mais il faut que tu le fasses pour chaque colonne.
non,j'obtiens une erreur sur la ligne...
Partager