Fonction UPDATE

Résolu
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un problème avec la fonction UPDATE ...

J'explique :

Dans ma bdd j'ai la colonne "prix" que je dois modifier avec un ajout pourcentage...

Je fais un

<input type="text" name="prix" value="<?=$details_prix['prix'];?>" size="8">

il faudrait que la valeur de $details_prix['prix'] puisse être incrémentée de 15% et que la nouvelle donnée soit enregistrée dans $prix mais je bloque avec la fonction UPDATE :

mysql_query("UPDATE table SET prix =prix * 1.15");

Ca ne me change RIEN dans la base et continu a m'afficher le montant que l'utilisateur a entrer initialement...

je sais pas si c'est clair...

mais si tel est le cas, quelqu'un aurait la soluce ??

merci d'avance !!
A voir également:

11 réponses

Squad-G Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   5
 
Enfaîte, je crois le problème vient du WHERE qui n'est simplement pas affiché.
Signature non conforme ==> Supprimée
Modération CCM
1
[o.o]REplay Messages postés 357 Date d'inscription   Statut Membre Dernière intervention   28
 
 mysql_query("UPDATE table SET prix = prix * 1.15"); 


pas de WHERE? tu veux modifier tous les champs de ta base?

Sinon ta colonne dans ta base de donnée c'est pas un integer par hasard? Faudrai du float .. parceque là ca va tronquer je pense.
("attention chérie, ca va tronquer..")
1
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
lol

bon j'essaye ça et je vous tiens au courant

PS : oui si je mets pas de WHERE Squad-G, je vais me retrouvée avec tous mes champs changés et c'est pas le but lol

et 2ème PS : "Sinon ta colonne dans ta base de donnée c'est pas un integer par hasard? Faudrai du float .. " comprends pas... suis toute news moi là dedans hein... lol
1
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
bon ben ...

le

$nouv_prix=$_POST['prix']*1.15; //je suppose que ton formulaire est en method="post"

mysql_query("UPDATE table SET prix =$nouv_prix WHERE prix='".$_POST['prix']."'');

me plante la page qui devient blanche....

le pourquoi du comment ... ???
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Alors on rajoute des traces d'erreur:

$nouv_prix=$_POST['prix']*1.15; //je suppose que ton formulaire est en method="post"

echo "Le nouveau prix ajusté est: ".$nouv_prix;

mysql_query("UPDATE table SET prix =$nouv_prix WHERE prix='".$_POST['prix']."'') or die ("Pb requette UPDATE ".mysql_error()); 


ton formulaire est bien en <form method="post" ... ?
0

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

Posez votre question
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
non, mon prog est comme ça :


ligne 1 <? // ********************** PRIX ?>
ligne 2 <tr class="c2">
ligne 3 <td width="172" align="right"><?=MSG_PRIX;?></td>
ligne 4 <td> <input type="text" name="prix" value="<?=$item_details['prix'];?>" size="8">
ligne 5 <?=$item_details['currency'];?></td>
ligne 6 <td align="left">  </td>
ligne 7 </tr>
ligne 8 <?php
ligne 9 $NB =$item_details['prix'];
ligne 10 $RESULT = ($NB * 50) / 100+$NB;
ligne 11 echo " $RESULT"; // je vois le résultat qui est ok, le calcul se fait bien
ligne 12 $RESULT =$item_details['prix'];
ligne 13 mysql_query("UPDATE table_prix SET prix =prix WHERE prix=prix");
ligne 14 ?>
...

dans le fichier suivant (prévisualisation de la fiche de vente) la valeur entrée en 1er à la ligne 4 s'affiche et pas la valeur incrémentée à la ligne 9 à 10 ...

pourtant ma variable $RESULT affiche bien la valeur qui devrait s'afficher à la phase finale sur la page de prévisualisation mais non, la valeur gardée est la première rentrée...

Bref, je fais du crawl-apnée là... !!!
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ligne 8 <?php
ligne 9 $NB =$item_details['prix'];
ligne 10 $RESULT = ($NB * 50) / 100+$NB;
ligne 11 echo " $RESULT"; // je vois le résultat qui est ok, le calcul se fait bien
ligne 12 $RESULT =$item_details['prix'];
ligne 13 mysql_query("UPDATE table_prix SET prix =prix WHERE prix=prix");
ligne 14 ?>


ligne 11 tu constates que le resultat est bien ok

et ligne 12 tu ecrses ce resultat avec l'ancien $RESULT =$item_details['prix'];

supprimes cette ligne

et pour la requette UPDATE mets:

ligne 13 mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$item_details['prix']."'");
0
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
ben la ligne 12 en fait me servait à faire passer le résultat de $result dans la variable $item_details['prix']

j'ai pas bon ??

je vais essayer ton truc je te dis ça
1
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
non...

ça m'affiche toujours le prix initial...

je craque...

j'ai même tenté un

$sql_insert_item = $this->query("UPDATE....

(vu dans une page mysql quelque part je sais plus ou...)

au lieu du

mysql_query("UPDATE...

mais il s'en fout de mon truc.... pfffff

1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ligne 12, non t'avais pas bon pour faire ça il aurait fallu l'écrire dans l'autre sens:

$item_details['prix']=$RESULT;




essayes:


ligne 8 <?php
ligne 9 $NB =$item_details['prix'];
ligne 10 $RESULT = ($NB * 50) / 100+$NB;
ligne 11 echo " Chiffre multiplie: ".$RESULT; // je vois le résultat qui est ok, le calcul se fait bien
ligne 12 echo " Chiffre initial: ".$NB;
ligne 13 mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'") or die ("Pb requette UPDATE ";mysql_error());
ligne 14 ?> 


et dis moi ce qu'il écrit.
0
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
rhhhaaaaaaaa

il écrit rien parce que je me retrouve avec une page blanche...
(ça fait penser à 20 ans en arrière en période de bac... gggrrrrrr !!!)

Bon je vais essayer de truander le truc...

je vais manger, peut être qu'avec le ventre plein ça ira mieux niveau neurones... lol

je vous tiens au courant (pas du repas hein)
1
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
alors résultat ventre plein (??)

ligne 8 <?php
ligne 9 $NB =$item_details['prix'];
ligne 10 $RESULT = ($NB * 50) / 100+$NB;
ligne 11 echo " Chiffre multiplie: ".$RESULT; // je vois le résultat qui est ok, le calcul se fait bien
ligne 12 echo " Chiffre initial: ".$NB;
ligne 13 // mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'") or die ("Pb requette UPDATE ";mysql_error());
ligne 14 ?>

si je mets // à la ligne 13 le prog ignore donc la ligne puisque mise en tant qu remarque et là il m'affiche bien le chiffre initial ET le chiffre multiplié...

DONC c'est mon
mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'") or die ("Pb requette UPDATE ";mysql_error());

qui merdoie...

je vais tenter un autre truc... si dreamweaver ne replante pas...
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
j'ai fait une faute de frappe dans cette ligne:
mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'") or die ("Pb requette UPDATE ";mysql_error());

il faut:
mysql_query("UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'") or die ("Pb requette UPDATE ".mysql_error());


un point au lieu d'un ; avant mysql_error()

normalement ça devrait te sortir l'erreur

question: tu as bien avant ces lignes de code mysql_connect(.....) mysql_select_db(....) et pas mysql_close()

?
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
essayes aussi en remplaçant la ligne mysql_query(....


par ces 3:

$query="UPDATE table_prix SET prix ='".$RESULT."' WHERE prix='".$NB."'";
echo "la requette est: ".$query;
mysql_query($query) or die ("Pb requette UPDATE ".mysql_error());


et fais moi un copier coller des messages

@lain
0
Povo Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   7
 
un grand merci !!

le copier/coller du message en haut c'est

la requette est: UPDATE table_prix SET prix ='15' WHERE prix ='10'

ce qui prouve que les calculs sont ok (j'avais mis un % à 50 au lieu de 15 comme je le veux pour avoir une nette différence des 2 montants lol)

maintenant, pour l'enregistrement dans la base et l'écrasement des valeurs, il fallait tout simplement (!!!!!!) se trouver dans le bon fichier.... qui enregistrait les variables dans la table mais gourde comme je suis j'essayais de faire ça dans un template....

QUI A RIGOLé ??? !!!

Bref, je me suis pris la tête pour rien... et tout ceux qui m'ont aidé aussi...

Un grand merci à tous et pardon pour cette prise de tête inutile, je le referai plus lol

Enfin, pas trop inutile finalement : j'ai enfin un code qui fonctionne dont je pourrai me servir ailleurs :)

Fichier où les variables sont pré-enregistrées :

function prepare_variables($item_details)
{
$item_details['quantity'] = ($item_details['type'] == 'standard' || $item_details['quantity'] < 1) ? 1 : $item_details['quantity'];
$item_details['prix'] == 1 && $this->setts['buy_process'] == 1 && $this->layout['enable_buy'] == 1) ? $item_details['prix'] : 0;
$item_details['closed'] = ($item_details['start_time_type'] == 'now' || $item_details['start_time']<CURRENT_TIME) ? 0 : 1;

return $item_details;

}

Voilà, si ça peut servir à quelqu'un c'est tant mieux lol

Encore merci !!
1
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
salut

et si tu calcules à part le nouveau prix et mets une condition à l'UPDATE:

$nouv_prix=$_POST['prix']*1.15; //je suppose que ton formulaire est en method="post"

mysql_query("UPDATE table SET prix =$nouv_prix WHERE prix='".$_POST['prix']."''); 

0