[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 -
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!
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:
- [php] UPDATE qui ne fait pas son boulot!
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
- Wsus offline update - Télécharger - Systèmes d'exploitation
11 réponses
Essaye cette synthaxe pour ton update :
Et dit moi si ça marche mieux.
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article."");
Et dit moi si ça marche mieux.
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?
Vois tu une autre erreur?
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?
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?
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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..
Il faut modifier ton update je pense :
mysql_query("UPDATE article SET quantite=".$quantite." where article=".$article." and zone=".$zone."");
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?
<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?
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.
Alors ça vient peut etre de la requete :
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.
$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.