Page 1 sur 3

update d'une table via formulaire

Posté : 25 avr. 2005, 15:36
par lamk
Bonjour all,
j'ai un problème sur un update, j'vois pas pourquoi ça ne passe pas...
le problème vient surement de $liste mais dans la requête du bas quand je'utilise $_POST['liste'] ben ça ne veut pas....

voilà le code :
	/*liste des fabricants*/
	$sql = "SELECT fab_nom FROM fabricant ORDER BY fab_nom ASC";
	$r_sql=mysql_query("$sql") or die("Invalid query : ".mysql_error());
	echo "<form name='formulaire' method='POST'><select name='liste'>";
	echo "<option value=''>---Sélectionner un fabricant----</option>";
	while ($r = mysql_fetch_array($r_sql))
	{
		echo "<option>".$r[0]."</option>";
		$liste = $_POST['liste'];
	}
	echo "</select>";
	echo "<input name='affiche' type='submit' value='Afficher coordonnées'>";
	echo "</form>";
		
	if(isset($_POST['affiche']) && ($_POST['liste']!=NULL))
	{
		$fab = "SELECT * FROM fabricant WHERE fab_nom='".$_POST['liste']."' ORDER BY fab_nom ASC";
		$r_fab=mysql_query("$fab") or die("Invalid query : ".mysql_error());
		while ($r = mysql_fetch_array($r_fab))
		{
			$r_nom = $r[1];
			$r_rue = $r[2];
		}	
	}

	/*formulaire de modification*/
	echo "<form name='form' method='POST'>";
  	echo "Nom :";
	echo "<input type='text' name='nom' size='50' maxlength='50' value='";
	echo $r_nom;
  	echo "Rue :";
  	echo "<input name='rue' type='text' size='100' maxlength='150' value='";
	echo $r_rue;
	echo "'>";
  	echo "</form><br>";
	
	if(isset($_POST['modif']))
	{
		if(($_POST['nom']==NULL) && ($_POST['nom']=="<br />")){echo "<font color='red'>Le nom du fabricant est obligatoire.</font>";}
		$sql="update fabricant set fab_rue='".$_POST['rue']."' where fab_nom='".$liste."'";
		mysql_query("$sql") or die("<font color='red'>Invalid query : ".mysql_error()."</font>");
	}

Posté : 25 avr. 2005, 15:49
par flitox
Si tu nous disais le problème car personne n'est devin ici...

Y a-t-il un message d'erreur?

Posté : 25 avr. 2005, 15:56
par lamk
non justement il n'y a aucun message d'erreur, mais l'update ne se fait pas...
j'arrive à afficher $liste partout sauf dans le if(isset($_POST['modif'])) {..}
du coup ben c'est normal que l'update ne fonctionne pas.
il y a-t-il une autre soluce ?

Posté : 25 avr. 2005, 16:13
par flitox
A mon avis, ce n'est pas le $_POST['modif'] qui pose problème mais bien la condition d'après :

Code : Tout sélectionner

if(($_POST['nom']==NULL) && ($_POST['nom']=="<br />"))
Que veut dire : Si la valeur "nom" est égale à un saut de ligne?

Posté : 25 avr. 2005, 16:15
par yannag
vu que tu n'a pas d'erreur

vas voir du coté des droits de l'utilisateur sur la table en question et regarde si UPDATE est bien dedans ...

Posté : 25 avr. 2005, 16:19
par lamk
j'ai essayé sans la condition flitox, ça ne change rien ...
et pour les droits d'utilisateurs, ce n'est pas ça non plus, vu que la requête fonctionne dans je remplace $liste par un de ces valeurs possibles et dans ce cas là ça marche nickel... :/ je vois pas pourquoi $liste dans ce IF retourne rien...

ps : en fait pour la condition si le nom est égale à <br />...
j'ai fait ça parce que par défaut dans mon champ ya <br /> d'afficher.. c'est juste pour ça, ce n'est pas un <br>

Posté : 25 avr. 2005, 16:24
par Invité
echo "<input type='text' name='nom' size='50' maxlength='50' value='";
    echo $r_nom;    <--------------------???????
      echo "Rue :";   
      echo "<input name='rue' type='text' size='100' maxlength='150' value='";
    echo $r_rue;
    echo "'>";                <--------ici bon
il a des cotes qui ce perde :-)

Posté : 25 avr. 2005, 16:25
par yannag
tu n'a pas affecté de valeur a tes données de select


// remplace 
 echo "<option>".$r[0]."</option>";

//par 
echo "<option value = ".$r[0].">".$r[0]."</option>";

Posté : 25 avr. 2005, 16:25
par flitox
J'aurais peut-être du lire tout le code avant de proposer une solution :lol:

Posté : 25 avr. 2005, 16:31
par lamk
j'ai rajouté les cotes et les affectations mais....... tjs rien :/
mais comment expliqué que lorsque je remplace $liste dans l'update par une de ces valeurs possible (un nom de fabricant quelconque), la requete marche ?? .....raalala je suis perdu...

Posté : 25 avr. 2005, 16:32
par yannag
peut tu ajouter un echo $sql a la fin de ton code et nous donner cette réponses

ou essayer ça

 $sql="update fabricant set fab_rue='".$_POST['rue']."' where fab_nom='".$_POST['liste']."'"; 

Posté : 25 avr. 2005, 16:36
par lamk
update fabricant set fab_rue='xxx' where fab_nom=''
du coup $liste retourne rien

Posté : 25 avr. 2005, 16:38
par lamk
avec
$sql="update fabricant set fab_rue='".$_POST['rue']."' where fab_nom='".$_POST['liste']."'";

Undefined index: liste in c:\program files\easyphp1-8\www\bdd\fab_up.php

Posté : 25 avr. 2005, 16:42
par yannag
il pourrait etre pas mal de sortir l'affectation de $liste du formulaire
dans un permeier temps
 
 echo "<option value=''>---Sélectionner un fabricant----</option>";
    while ($r = mysql_fetch_array($r_sql))
    {
        echo "<option value=".$r[0].">".$r[0]."</option>";    
    }
    echo "</select>";
    echo "<input name='affiche' type='submit' value='Afficher coordonnées'>";
    echo "</form>"; 
    
     $liste = $_POST['liste'];


et pour tester si tu envoie bien tes POST tu peut essayer
au début de ta page
 var_dump($_POST) ; 

Posté : 25 avr. 2005, 16:46
par lamk
c'est pas bon quand je sors
$liste = $_POST['liste'];
du formulaire....
Notice: Undefined index: liste in c:\program files\easyphp1-8\www\bdd\fab_up.php on line 87


pour var_dump($_POST) ; :
array(0) { }