update d'une table via formulaire

Eléphant du PHP | 98 Messages

25 avr. 2005, 15:36

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>");
	}

Mammouth du PHP | 859 Messages

25 avr. 2005, 15:49

Si tu nous disais le problème car personne n'est devin ici...

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

Eléphant du PHP | 98 Messages

25 avr. 2005, 15:56

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 ?

Mammouth du PHP | 859 Messages

25 avr. 2005, 16:13

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?

Eléphanteau du PHP | 25 Messages

25 avr. 2005, 16:15

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 ...

Eléphant du PHP | 98 Messages

25 avr. 2005, 16:19

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>

Invité
Invité n'ayant pas de compte PHPfrance

25 avr. 2005, 16:24

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 :-)

Eléphanteau du PHP | 25 Messages

25 avr. 2005, 16:25

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>";
Modifié en dernier par yannag le 25 avr. 2005, 16:27, modifié 1 fois.

Mammouth du PHP | 859 Messages

25 avr. 2005, 16:25

J'aurais peut-être du lire tout le code avant de proposer une solution :lol:

Eléphant du PHP | 98 Messages

25 avr. 2005, 16:31

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...

Eléphanteau du PHP | 25 Messages

25 avr. 2005, 16:32

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']."'"; 

Eléphant du PHP | 98 Messages

25 avr. 2005, 16:36

update fabricant set fab_rue='xxx' where fab_nom=''
du coup $liste retourne rien

Eléphant du PHP | 98 Messages

25 avr. 2005, 16:38

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

Eléphanteau du PHP | 25 Messages

25 avr. 2005, 16:42

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) ; 

Eléphant du PHP | 98 Messages

25 avr. 2005, 16:46

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) { }