Formulaire de mise a jour !!

Eléphant du PHP | 450 Messages

24 juin 2005, 12:02

Bonjour ,

J'aimerais bien que dans mon formulaire de mise a jour de ma base de données, que si l'on ne remplis pas les champs , il garde en memoire les anciennes valeur..

Sauf que je n'y arrive pas

un exemple:

J'ais un formulaire ou il y'a trois champs nom , formule et reference
si l'on remplis que nom et formule et qu'on laisse le champ reference vide il garde l'ancien resultat..

Hors de la façon dont je procede en ce moment il me met un resultat " "

voila..

peut etre qu'avec un

if($reference2 ="") alors $reference2= $reference1 ..

mais je sais pas comment faire ..

est ce que quelqun a une idée??
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 12:11

if($reference2 ="") alors $reference2= $reference1
c'est la bonne voie

sauf qu'on teste une égalité avec ==

ou regarde empty() dans le manuel

VaN
Mammouth du PHP | 1107 Messages

24 juin 2005, 12:24

je te propose une alternative encore plus interessante :
dans ton formulaire de mise a jour, recupere les données de la base, et affiche les ds le formulaire. Ainsi, si la valeur est changée, elle sera modifié ds la bdd, et si elle n'est pas modifiée, elle aura toujours l'anciennne valeur.

et surtout, ça permet de voir qu'est ce que tu met à jour.

exemple :
<?php
$sql = "SELECT nom FROM table WHERE ...";
$query = mysl_query($sql);
$result = mysql_fetch_array($query);
?>
<input type="text" name="nom" value="<?php echo $result['nom']; ?>">

Eléphant du PHP | 450 Messages

24 juin 2005, 13:10

humm humm
Tout d'abord Van j'affiche mes anciennes valeur dans le formulaire..!
donc pour sa pas de probleme :lol: :lol: hihi (desolé de pas l'avoir précisé :wink:
<?php

$query="INSERT INTO produit2 (nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite) VALUES ('".$nom."', '".$formule."', '".$reference."', '".$disponibilite."','".$localisation."','".$quantite."','".$numero_cass."','".$toxicite."');"; 
mysql_query($query) or die (mysql_error);

?>

<tr width="30%" height="15"><td><b>Nom de la molécule :</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
        <td><b><?php print $row['nom']; ?></b></td>
	<td><b><input type="text" name="nom"></b></td></tr>

        <tr width="30%" height="29"><td><b>Formule brute de la molecule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
        <td><b><?php print $row['formule']; ?></b></td>
	<td><b><input type="text" name="formule"></b></td></tr>
sinon pour la requete update

avant il faut faire
 if (empty($nom2)){
$nom2 = $nom1
}else{$nom2 = $nom2}
c'est mieu comme sa??

sinon voila ma requete update

$query="UPDATE table SET nom='$nom2', formule='$formule2', localisation='$localisation2', disponibilite='$disponibilite2', quantite='$quantite', reference='$reference2', numero_cass='$numero_cass2', toxicite='$toxicite2'";
$resultat=mysql_query($query);
C'est bon comme sa :? :?
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 13:21

heu... dans ton formulaire je ne vois pas où tu affiches tes valeurs

ce que voulais surement dire VaN, c'est de les afficher DANS le champ texte, comme ça si l'utilisateur ne souhaite rien changer, il laisse la valeur déjà enregistrée, sinon il la modifie

et toi tu fais une requête Update derrière, sans te soucier s'il a changé ou non quelquechose

édition : c'est bien ce qu'il voulait dire, regarde son exemple ;)

Eléphant du PHP | 450 Messages

24 juin 2005, 13:33

a vi escusez moi je suis confus lol

en plus la solution de Van est bien plus intelligente que ce que je voulais faire

lol
:lol:
sinon ma requete update est bonne??

parce qu'elle n'a pas l'air de fonctionner : //
Alone in the dark , I smile :D

Eléphant du PHP | 260 Messages

24 juin 2005, 13:39

Salut,
ta requête a l'air juste en revanche,
if (empty($nom2)){ 
$nom2 = $nom1 
}else{$nom2 = $nom2}
il ne te sert a rien de dire que $nom2=$nom2 (c'est comme dire 1=1 !! si pjl passe par la ...)
donc :
if (empty($nom2)){ 
$nom2 = $nom1;
}
:wink:
Mon jeu : http://www.battle-stars.fr.tc
---
Mon serveur : http://servlan.dyndns.org
---
Bientôt tous mes serveurs OPEN ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 13:41

au niveau syntaxe elle à l'air bonne oui

affiche la à l'écran avec un echo, peut-être que tes variables sont mal transmises, ou vides, ou un problème avec des guillemets je ne sais pas
essaye d'afficher les erreurs renvoyées sinon :
$query="UPDATE table SET nom='$nom2', formule='$formule2', localisation='$localisation2', disponibilite='$disponibilite2', quantite='$quantite', reference='$reference2', numero_cass='$numero_cass2', toxicite='$toxicite2'";

echo $query;

$resultat=mysql_query($query) or die(mysql_error()); 

Eléphant du PHP | 450 Messages

24 juin 2005, 13:45

Mon echo $query; a donner sa :

(quand je chamge juste le nom du produit ..
ps tout les champ avec la valeur essais c normale lol )
UPDATE produit2 SET nom='essais2', formule='essais', localisation='esssais', disponibilite='essais', quantite='essais', reference='2334', numero_cass='essais', toxicite='essais'
pourtant tout me semble bon : //

en plus il n'y a pas d'erreur qui s'affiche...

sa doit donc venir de ma page (une de mes conditions peut etre .. tu en pense quoi ?? ))
Alone in the dark , I smile :D

Eléphant du PHP | 450 Messages

24 juin 2005, 13:52

Je met le code de ma page au cas ou sa vient de la , mais sa m'etonnerait : //
<?php


$host = '********'; 
$user = '*******'; 
$pass = '********'; 
$db = '************';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$id =$_GET['id'];

$select = "SELECT * FROM produit2 WHERE reference LIKE '$id'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_assoc($result);

$nom = $row['nom'];
$formule = $row['formule'];
$reference = $row['reference'];
$num = $row['numero_cass'];
$toxicite = $row['toxicite'];
$localisation = $row['localisation'];
$disponibilite = $row['disponibilite'];
$quantite = $row['quantite'];
$nom2 = $_POST['nom'];
$formule2 = $_POST['formule'];
$reference2 = $_POST['reference'];
$num2 = $_POST['numero_cass'];
$toxicite2 = $_POST['toxicite'];
$localisation2 = $_POST['localisation'];
$disponibilite2 = $_POST['disponibilite'];
$quantite2 = $_POST['quantite'];
$numero_cass2 = $_POST['numero_cass'];

if(isset($_POST['envoi']))

{
	if ($nom == '' || $formule == '' || $localisation == '' || $quantite == '' || $reference == '' || $numero_cass == '')
	{
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <table summary="">
            <col width="250" title="titres" />
            <col width="15" title="oblige" />
	    <col width="250" title="nouvelle_donnees" />

        <tr width="30%" height="15"><td><b>Nom de la molécule :</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="nom" value="<?php echo $row['nom']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Formule brute de la molecule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="formule" value="<?php echo $row['formule']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Localisation de la Molécule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="localisation" value="<?php echo $row['localisation']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Disponibilité :</b></td>
        <td><div style="color: #ffffff; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="disponibilite" value="<?php echo $row['disponibilite']; ?>"></b></td></tr>

        <tr width="30%" height="15"><td><b>Quantité en reserve :</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="quantite" value="<?php echo $row['quantite']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Reference de la molecule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="reference" value="<?php echo $row['reference']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Numero de CAS:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="numero_cass" value="<?php echo $row['numero_cass']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Toxicite :</b></td>
        <td><div style="color: #ffffff; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="toxicite" value="<?php echo $row['toxicite']; ?>"></b></td></tr>        
        
        <tr><td colspan="4"><div style="text-align:center;"><input type="submit" class="verif" name="envoi" value="Envoyer" />&nbsp;
        <input type="reset" class="verif" value="Tout effacer" /><input type="submit" value="Imprimer" onclick="print();">
        <input type="submit" value="fermer" onClick="window.close()";></div></td></tr>
        
        </TABLE></form>   
<?php
		}
		else{
/* Affichage du message final des informations reçues */
				print "<h3>Merci ! Voici les modifications que vous avez fournies pour cette molécule</h3>\n";
				print "<p>Informations sur la nouvelle molecule:</p>\n";
				print "<b>Son nom :</b>".$nom2."<br />\n";
				print "<b>Sa formule Brute :</b>".$formule2."<br />\n";
				print "<b>Sa localisation :</b>".$localisation2."<br />\n";
				print "<b>Sa quantite en reserve :</b>".$quantite2."<br />\n";
				print "<b>Sa reference :</b>".$reference2."<br />\n";
				print "<b>Son numero de CASE :</b>".$numero_cass2."<br />\n";
			if ($toxicite !==''){
				print "<b>Sa toxicite s'il y en a une :</b> ".$toxicite2."<br />\n";
					}	
        print("<p>Retour vers le formulaire de recherche pour modification, cliquez <a href=\"modifier.php\" title=\"Retour vers le formulaire\">ICI</a></p>");
	print("<p>Retour vers l'Index, cliquez <a href=\"index.html\" title=\"Retour a l'index\">ICI</a></p>");

$host = '*****'; 
$user = '*******'; 
$pass = '********'; 
$db = '*************';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$query="UPDATE produit2 SET nom='$nom2', formule='$formule2', localisation='$localisation2', disponibilite='$disponibilite2', quantite='$quantite', reference='$reference2', numero_cass='$numero_cass2', toxicite='$toxicite2'";
$resultat=mysql_query($query);
echo $query;	
		}
	}
else
	{
?>
<H3><strong>Formulaire de modification de produits</strong></H3>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <table summary="">
            <col width="250" title="titres" />
            <col width="15" title="oblige" />
	    <col width="250" title="nouvelle_donnees" />

        <tr width="30%" height="15"><td><b>Nom de la molécule :</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="nom" value="<?php echo $row['nom']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Formule brute de la molecule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="formule" value="<?php echo $row['formule']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Localisation de la Molécule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="localisation" value="<?php echo $row['localisation']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Disponibilité :</b></td>
        <td><div style="color: #ffffff; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="disponibilite" value="<?php echo $row['disponibilite']; ?>"></b></td></tr>

        <tr width="30%" height="15"><td><b>Quantité en reserve :</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="quantite"value="<?php echo $row['quantite']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Reference de la molecule:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="reference" value="<?php echo $row['reference']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Numero de CAS:</td>
        <td><div style="color: #ff0000; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="numero_cass" value="<?php echo $row['numero_cass']; ?>"></b></td></tr>

        <tr width="30%" height="29"><td><b>Toxicite :</b></td>
        <td><div style="color: #ffffff; text-align: center; font-weight: bold"></div></td>
	<td><b><input type="text" name="toxicite" value="<?php echo $row['toxicite']; ?>"></b></td></tr>        
        
        <tr><td colspan="4"><div style="text-align:center;"><input type="submit" class="verif" name="envoi" value="Envoyer" />&nbsp;
        <input type="reset" class="verif" value="Tout effacer" /><input type="submit" value="Imprimer" onclick="print();">
        <input type="submit" value="fermer" onClick="window.close()";></div></td></tr>
        
        </TABLE></form>   

<?php

	}

?>
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 13:55

si tu as mis un echo juste à coté du mysql_query() alors c'est que entre bien dans la condition où elle est exécutée

si elle est exécutée mais sans erreur et aucun résultat c'est bizarre

copie/colle là dans phpMyAdmin et exécute la...

sinon c'est normal qu'avec cette requête tu mettes à jour TOUS les enregistrements de ta table ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 13:58

dans le code que tu viens de poster tu n'affiches pas le serreurs qui pourraient survenir avec ta requête Update

Eléphant du PHP | 450 Messages

24 juin 2005, 14:01

heureusement que sa marche pas alors .. j'aurai perdu toute ma base de données ouff .
lol

mais requete maintenant
$query="UPDATE produit2 SET nom='$nom2', formule='$formule2', localisation='$localisation2', disponibilite='$disponibilite2', quantite='$quantite', reference='$reference2', numero_cass='$numero_cass2', toxicite='$toxicite2' where reference like $reference";
$resultat=mysql_query($query);
merci de m'avoir prevenu sinon j'aurai quelques petit probleme .. :lol: :lol: :lol:

Ps : merci phpmyadmin pour bloker les requete si il y'a unique comme condition sur l'un des champs :) lol

edit2 : corriger pour affichage erreur de la requete update :)
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

24 juin 2005, 14:07

tu as édité ton code ?

alors ça donne quoi du coup ?

Eléphant du PHP | 450 Messages

24 juin 2005, 14:08

Bah du coup sa fonctionne parfaitement :)

merci encore :)

je met ma requete si sa peut servir a quelqun :)


$query="UPDATE produit2 SET nom='$nom2', formule='$formule2', localisation='$localisation2', disponibilite='$disponibilite2', quantite='$quantite', reference='$reference2', numero_cass='$numero_cass2', toxicite='$toxicite2' where reference like $reference";
$resultat=mysql_query($query,$link) or die ('Erreur : '.mysql_error() );

echo $query;
Alone in the dark , I smile :D