[php] UPDATE qui ne fait pas son boulot! [Résolu/Fermé]

Signaler
Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
-
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
-
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!

11 réponses

Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
67
Essaye cette synthaxe pour ton update :

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


Et dit moi si ça marche mieux.
Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
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?
Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
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?
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
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.

Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
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..
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
67
Il faut modifier ton update je pense :

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

Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
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?
Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
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.
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
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.
Messages postés
71
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
11 août 2009
1
ok! merci ca marche il me semble! merci beaucoup pour ton aide!
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
67
De rien le forum est fait pour ça ! ;-)