Jump to content

[resolu] recuperer et modifier des informations


Recommended Posts

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 :

modproduit8zn.jpg

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

res26rc.jpg

<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

Link to comment
Share on other sites

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 !

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...