amine84 Posté(e) le 4 février 2006 Partager Posté(e) le 4 février 2006 Bonjour tout le monde ! :) Voila je debute en php, et jai rencontrer un petit probleme voila: je veut creer une page dans laquelle je peut modifier des produits present dans ma base de données, jai déjà cree une page permettant l'ajout de produit voici une partie du code de la page modifier un produit: <?php //ici la cnx à la base require('login_bdd.php'); $identificateur=mysql_connect($host,$user,$pass); mysql_select_db($base,$identificateur); $reference=mysql_query("SELECT * FROM produits"); echo "<SELECT name='reference'>"; while($liste_reference=mysql_fetch_array($reference)) { echo "<option>".$liste_reference[1]."</option>";// On affiche la liste des categorie dans une liste déroulante en fonction du contenu de la table categorie } echo "</select>" ?></td></tr> <tr><td>Désignation</td><td><input name='designation' type='text' value=' <?php mysql_query ("SELECT designation FROM produits where reference='$liste_reference[1]'");?> '> </td></tr><?php $restest=mysql_query("SELECT designation FROM produits where reference='$liste_reference[1]'"); echo ($restest);?> <tr><td>Prix:</td><td><input name='prix' type='text'<?php echo"value=' Select prix From produits where reference='1' '" ?> ></td></tr> <tr><td>Quantités:</td><td><input name='quantite' type='text'<?php echo"value='Select quantite From produits where reference='1' '" ?> ></td></tr> <tr><td><input type='submit' name='Valider' value='Valider'></td></tr> le resultat ressemble a ca : comme vous pouvez le remarquer jai effectuer un test pour voir le resultat de ma requette le resultat (Resource id #6) me semble bizare, pour moi je devrai avoir la designation du produit. la problematique ici (hors le code ou se cache surrement des erreurs) est est ce que c'est possible que lorsque je selectionne un produit via l'assenceur reference que toutes les informations de ce produit apparaisse et que je puisse donc les modifers puis renvoyer les nouvelles données a la base. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 4 février 2006 Partager Posté(e) le 4 février 2006 Non, si tu fais echo mysql_query() tu auras soit rien, soit 1 (true), soit une resource mySQL, c'est normal. Par contre tu as une requête qui sert à rien. <?php mysql_query ("SELECT designation FROM produits where reference='$liste_reference[1]'");?> '> Et non, ce que tu veux faire n'est pas possible directement. Tu es dans un langage dynamique, mais qui au final reste assez statique par rapport à l'utilisateur : si tu fais une liste déroulante contenant les différentes références tu ne pourras pas changer la valeur des autres champs que pour une seule valeur, à définir par toi même Par contre avec javascript tu peux faire ce que tu veux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
amine84 Posté(e) le 5 février 2006 Auteur Partager Posté(e) le 5 février 2006 et si je cree un bouton a cote de reference qui s'occupe d'allé chercher les infos et de les placer dans le formulaire ? voici les dernieres mise a jour que jai realisé: (si possible comment on peut faire en code) <table align="center"> <tr><td>Tri Par Référence</td><td> <?php $reference=mysql_query("SELECT * FROM produits"); echo "<SELECT name='reference'>"; while($liste_reference=mysql_fetch_array($reference)) { echo "<option>".$liste_reference[1]."</option>"; //On affiche la liste des references } echo "</select>" ?></td></tr> <tr><td>Catégorie</td><td> <?php $categories=mysql_query("SELECT * FROM categories"); echo "<select name='categorie'>"; while($liste_categories=mysql_fetch_array($categories)) { echo "<option>".$liste_categories[1]."</option>"; //On affiche la liste des categorie dans une liste déroulante en fonction du contenu de la table categorie } echo "</select>" ?> </td></tr> <tr><td>Désignation</td><td><textarea name="designation" rows="3" cols='23' value=" <?php $restest=mysql_query('SELECT designation FROM produits;'); while ($fetch = mysql_fetch_array($restest)) { print_r($fetch); } ?>"</textarea> </td></tr> <tr><td>Prix:</td><td><input name='prix' type='text' <?php echo"value=' Select prix From produits '" ?> ></td></tr> <tr><td>Quantités:</td><td><input name='quantite' type='text' <?php echo"value='Select quantite From produits '" ?> ></td></tr> <tr><td><input type='submit' name='Valider' value='Valider'></td></tr> </table> </form> ps: dans la case deisgnation il m'affiche toutes les designations de tout les produits present dans ma base (alors que moi je ne voi afficher que la designation de la reference choisi) merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 5 février 2006 Partager Posté(e) le 5 février 2006 Si tu fais un bouton à côté de référence, ça devra valider le formulaire en indiquant qu'il faut juste récupérer les données : mais ça revient au même que d'avoir plusieurs pages puisqu'à chaque changement une redirection Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 Sinon, tu as aussi l'option de faire du "remote scripting". C'est assez barbare (ça utilise une iframe), mais ça a le mérite de faire ce que tu demande (un rafraichissement d'une seule zone sans rafraichir la page entière). Je l'ai utilisé en ASP au boulot et ça tourne nickel. Le principe n'est pas toujours facile à appréhender au départ mais quand c'est en place, ça tourne plutôt bien. Pour trouver des exemples de codes, Google est ton ami. Si tu galères, n'hésite pas à poser des questions (après avoir chercher un peu par toi même quand même). Bon courage ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Helfima Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 déjà, mieux vaut faire un code propre car le mélange php/html marche bien mais question lisibilité c'est un peu merdique. exemple: 1) Déclaration variable,fonction,class ect.... 2) Traitement/ Préparation des variables 3) Affichage l'idéal étant pour l'affichage d'utiliser les templates mais pour un débutant ca risque d'être lourd au début et décourageant donc le plus simple et nettement plus propre est de faire comme ceci exemple pour faire un listing de ts tes produits (méthode courante): $output = "<table>......."; foreach($produits AS produit){// $produits est un tableau de produit qui lui aussi est un tableau $output .= "<tr>"; // attention au point devant le = qui permet de concaténer les chaines $output .= "<td>$produit["reference"]</td>"; $output .= "<td>$produit["categorie"]</td>"; ect... $output .= "</tr>"; } $output .= "........</table>"; echo $output; gros avantage de cette méthode tu galères moins pour corriger modifier ton code, les boucles sur le code sont nettement plus propre ect.... quand a ton problème moi ce que je vois c'est une page avec un formulaire ou tu choisis ta référence ou ton produit ou une nouvelle référence qui te balance sur une autre page pour le reste des champs perso j'utiliserai la même page avec un traitement de variable correspondant au niveau ou l'on se trouve c'est à dire au niveau séléction ou édition ou nouveau ect... exemple: $task = $_GET["task"] //task étant une variable passée par l'url si null le switch ira au default switch($task){ case "nouveau": ..... break; case "modifier": ..... break; case "supprimer": ..... break; case "update": ..... break; default: ...... //ici tu met ta page primaire qui correspond au choix de référence et selon le bouton tu balance dans l'url la bonne valeur de task, ...... //genre produit.php?task=edition (attention surtout pas d'accent dans la valeur task ca fait crado car l'url aurai de %20 ect... } voila en gros comment je procède pour ma part a vis, autre chose pour les action dans la base de donnée l'idéal c'est une class ou selon ton niveau un fichier regroupant que les fonction sur ton produit (nouveau,edition,suppression ect..) je te conseille fortement cette méthode qui est courante, un peu lourd au début mais propre et facile pour les modifications Lien vers le commentaire Partager sur d’autres sites More sharing options...
amine84 Posté(e) le 7 février 2006 Auteur Partager Posté(e) le 7 février 2006 merci pour toutes ces precisions, j'ai reussi enfin, en utilisant un peut de javascript pour chercher les infos ce qui me permettait de remodifier aprés. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.