[php] probleme avec option value

Fermé
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 - 10 juil. 2007 à 09:08
 pilou - 10 juil. 2007 à 14:35
Bonjour, dans mon formulaire j'ai voulu faire une liste déroulante avec un option value, mon formulaire est ensuite traité pour ajouter un article a une base de donnée mais il me donne une erreur.
Ma premiere liste marchait, j'avais alors un option value de ce type
<SELECT name="zone">
<OPTION VALUE="01">01</OPTION>
</SELECT>

J'ai voulu que dans mon tableau la zone soit maintenant A01 au lieu de 01, j'ai donc changer la liste en
<SELECT name="zone">
<OPTION VALUE="A01">A01</OPTION>
</SELECT>

mais la j'ai cet erreur : Champ 'A01' inconnu dans where clause quand je veux ajouter le nouvel article

savais vous comment je peux faire?

Voici aussi mon ajouter.php qui ajoute au tableau :

<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';


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

if (is_numeric($_POST['article']))

{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=".$_POST['zone']."";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);

$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];


if($_POST['article']==$article and $_POST['zone']==$zone)
{

$quantite=$_POST['quantite']+$quantite;

mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");

echo "quantité modifiée";

}

else
{

mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";

}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}



else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}

?>

<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
A voir également:

5 réponses

Je t'ai amélioré un peu tout ça ;)
<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';


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

$message = ''; 

if (is_numeric($_POST['article']))
{
   if (is_numeric($_POST['quantite']))
   {
      $sql = "SELECT COUNT(*) FROM article 
              WHERE article=". $_POST['article'] ." 
              AND zone='". mysql_real_escape_string($_POST['zone']) ."'";
      $result = mysql_query($sql) or die(mysql_error());
      
      if( mysql_result($result, 0) == 1 )
      {
          $update = mysql_query("UPDATE article SET quantite=quantite+".$_POST['quantite']." 
                                 WHERE article=".$_POST['article']." 
                                 AND zone='".mysql_real_escape_string($_POST['zone'])."'");
          if( mysql_affected_rows == 1 )
          {
             $message = 'quantité modifiée';
          }
          else
          {
             $message = 'Aucune mise à jour effectuée';
          }
      }            
      else
      {
         $insert = mysql_query("INSERT INTO article VALUES(" . $_POST['article'] . ", 
                               " . $_POST['quantite'] . ",
                               '" . mysql_real_escape_string($_POST['zone']) . "')");
         if( mysql_affected_rows == 1 )
         {
            $message = 'nouvel article correctement ajouté';
         }
         else
         {
            $message = 'Problème lors de l\'insertion';
         }
      }
      unset($_POST['article'],$_POST['zone'],$_POST['quantite']);
   }
   else 
   {
       $message = "erreur, quantité non valide! Veuillez entrer des données numériques";
   }
}
else 
{
   $message = "erreur, article non valide! Veuillez entrer des données numériques";
}
?>
<BODY BGCOLOR=#33CCFF>
<p>
<?php echo $message ?>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
1
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 1
10 juil. 2007 à 09:31
c'est bizarre qu'avec juste des chiffres ca passe niquel, mais qu'avec des A01 au lieu des 01 ca ne passe plus, ca ne retourne pas les lettres option value?
0
Ton problème vient du fait que $_POST['zone'] n'est plus numérique si tu y ajoutes A.

Pour mysql une chaine sans cotes designe un élément de la table, donc il va rechercher une colonne du nom de Ax qui n'existe pas.

En ajoutant des apostrophes ton problème ne sera plus.
0
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 1
10 juil. 2007 à 09:57
ok! merci de t pencher sur mon probleme mais si j'ajoute des "" mon select devient

$sql = "SELECT * FROM article where article=".$_POST['article']." and zone=$_POST['zone']";

et j'ai donc une erreur


Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\ajouter.php on line 18
0
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 1
10 juil. 2007 à 10:04
enfin j'ai pas tout compris.. faut que je remplasse les $_POST['zone'] où c'est bien dans ajouter.php qu'il faut faire des modifications? pas dans le formulaire?
0
Non, c'est dans ta requête qu'il faut y mettre des apostrophes.
$sql = "SELECT * FROM article where article=". $_POST['article'] ." and zone='". mysql_real_escape_string($_POST['zone']) ."'";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
micom59 Messages postés 71 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 11 août 2009 1
10 juil. 2007 à 13:36
ok, merci ca fonctionne dans le tableau, a part que maintenant ca me donne un petit probleme, le update quand l'article et la zone correspondante quand l'article est deja présent dans la base ne s'effectue pas, que faut-il mettre a la place de $_POST['zone'] dans le if d'avant? j'ai essayer de remplacer par ce que tu m'as donné mais ca ne se fait pas non plus. Par contre ca écrit bien quantité modifiée..
Voici mon code si tu voit ou se situe le probleme.
Merci

<html>
<body>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'kael';


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

if (is_numeric($_POST['article']))

{
if (is_numeric($_POST['quantite']))
{
$sql = "SELECT * FROM article where article=". $_POST['article'] ." and zone='". mysql_real_escape_string($_POST['zone']) ."'";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);

$article = $articles['article'];
$quantite = $articles['quantite'];
$zone = $articles['zone'];


if($_POST['article']==$article and mysql_real_escape_string($_POST['zone'])==$zone)
{

$quantite=$_POST['quantite']+$quantite;

mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");

echo "quantité modifiée";

}

else
{

mysql_query("INSERT INTO article VALUES('$_POST[article]','$_POST[quantite]','$_POST[zone]') ");
echo "Enregistrement effectué";

}
unset($_POST['article'],$_POST['zone'],$_POST['quantite'],$zone,$quantite,$article);
}



else {echo "erreur, quantité non valide! Veuillez entrer des données numériques";
}
}
else {
echo "erreur, article non valide! Veuillez entrer des données numériques";
}

?>

<BODY BGCOLOR=#33CCFF>
<p>
<a href="index.html">Accueil</a><p>
<a href="formulaire.html">Ajouter un autre composant</a><p>
<a href="visu.php">Visualisation générale</a><p>
</body>
</html>
0