[php] UPDATE qui ne fait pas son boulot!

Résolu
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   -  
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai un formulaire me permettant de rentrer des articles dans une bases de données par l'intermédiaire d'une fonction ajouter.php qui ajoute donc article,quantité,zone
Par contre j'aimerais que quand l'article est déja présent dans la zone qu'au lieu d'ajouter il ajoute la quantité a celle deja présente. J'ai donc voulu passer par un update mais au lieu de faire l'update il ajoute normalement comme si l'article n'était pas présent dans la base.

Voici mon ajouter.php, savez vous ou pourrait se situer le probleme?

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


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

$sql = "SELECT * FROM article";
$result = mysql_query($sql) or die(mysql_error());
$articles= mysql_fetch_array($result);

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

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

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

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

echo "quantité modifiée";
}

else
{

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

}
?>

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



Merci beaucoup pour l'intéret que porterez a mon probleme!
A voir également:

11 réponses

Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
Essaye cette synthaxe pour ton update :

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


Et dit moi si ça marche mieux.
0
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
ca fait toujours la meme chose, il saute le if pour ajouter normalement l'article.. je sais pas comment lui faire comprendre que l'article et la zone sont la même pour qu'il fasse le update...
Vois tu une autre erreur?
0
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
ah! en fait g changé
if($article==$_POST['article'] and $zone==$_POST['zone'])

par

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

et maintanent on entre dans l'update parce qu'il me dit quantité modifié! par contre il ne change pas la quantité, il doit encore y avoir un soucis avec l'update, est-il de la bonne forme?
0
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
Fait un echo de ton $quantite dans ton if pour vérifier qu'il a bien la bonne valeur.

Sinon tu as une Table article qui possède un champ article ??
Evite de donner les mêmes noms pour tes tables et tes champs sinon tu finira par ne plus t'y retrouver.

0

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

Posez votre question
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
alors maintenant autre soucis j'ai vider ma base des données deja existante, j'ajoute deux fois un meme article dans une meem zone et mets bien a jour la quantite comme voulu, il ajoute bien toujours le meme article quand je mets une zone différente mais quand j'ajoute ce meme article dans la zone différente pour qu'il la mette aussi a jour il me fait une nouvelle entrée au lieu de l'update... c'est des petits détails embétant..
0
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
Il faut modifier ton update je pense :

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

0
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
en fait voici le ajouter.php maintenant avec les modif

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


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

$sql = "SELECT * FROM article";
$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=".$_POST['zone']."");

echo "quantité modifiée";
}

else
{

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

}
?>

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


Le soucis ce situe dans le résultat afficher, voici la visualisation du résultat après les ajout

Article Quantité Zone
1000 1000 1
1000 3200 1
1000 1000 2
2000 3200 3


J'ai d'abord ajouter l'aricle 1000, dans la zone 1 d'une quantité de 2000, puis j'ai ajouter le meem article toujours en zone 1 de 1200, il a bien modifier la quantité a 3200
Maintenant j'ai jouter l'article en zone 2, bien enregistré, mais quand j'ai voulu ajouter l'article 1000 encore en zone 1 pour que ca passe a 4200 et la il ma ajouter l'article comme s'il était nouveau ou dans une zone qui n'était pas deja entrée..
Voyez vous ou se situe le probleme?
0
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
je viens de répéré un autre soucis, j'entre un article, je modifie ca quantité ca marche, j'entre ce meme article dans une autre zone, il me l'ajoute bien mais quand j'essaie de modifier ca quantité la quantité ne change pas.
0
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
Alors ça vient peut etre de la requete :

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


et après dans ton if tu change la condition en vérifiant le nombre de résultat : Si il y a 1 resultat tu fais l'update si tu as 0 tu fais l'insert si c'est autre chose c'est qu'il y a un problème.
0
micom59 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   1
 
ok! merci ca marche il me semble! merci beaucoup pour ton aide!
0
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   67
 
De rien le forum est fait pour ça ! ;-)
0