habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009
-
1 avril 2009 à 08:38
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009
-
8 avril 2009 à 16:05
Bonjour à tous ,
Voilà mon problème :
Je fais tourner un petit script en php afin que la valeur d'une donnée d'un de mes champs soit modifiée à une date précise :
En l'occurence , le prix passe de x à x*0.99 à 18H .
Je souhaite alors que cette nouvelle valeur de prix ( x*0.99 ) remplace l'ancienne ( x ) dans le champ pvc_ttc de ma table shop_monnaies ( pour tous les id ) .
J'ai vu que pour remplacer une donnée il fallait utiliser :
UPDATE ; mais il faut alors préciser une valeur et là , je bloque ...
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 2 avril 2009 à 13:44
L'erreur qu'il t'affiche te dit qu'a la ligne 67 tu a une variable non definiE.Donc en regardant la ligne 67 qui est : $queryString "UPDATE table_shop_monnaies SET prix_ttc ".$newprice;
On s'aperçois que effectivement il y a une erreur. C'est un probleme de Case.
Tu avais defini la variable au prealable comme cela :
J'ai essayé plusieurs choses par ailleurs ; que j'ai oublié entre temps ...mais en faisant quelque chose comme un UPDATE shop_monnaies SET prix_ttc = ' $newPrice'; j'arrivais à écrire de nouvelles données dans le champ pvc_ttc .
Malheureusement , tous les id prenaient la meme valeur , et une baisse de prix avant lieu à chaque fois que j'actualisais .
Au départ , je pensais que cette formule :
allait me permettre de changer les PV tous les jours à la meme heure puisque ; si time() représente l'heure d'aujourd'hui , et mktime( 18,00,00,date("m"),date("d"),date("Y")) , l'heure d'aujourd'hui dès qu'il sera 18 heures ; le résultat de $timestamp = 0 devrait me suffire pour afficher un PV*0.99 mais apparemment ce n'est pas aussi simple ...
En effet , j'avais testé le cas $timestamp = 0 et il ne se passait rien ...
Je pense pourtant que la solution est à portée de clavier ...
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 2 avril 2009 à 21:53
Voilà , ça m'est revenu :
<?php
mysql_query("UPDATE shop_monnaies SET prix_ttc = $newPrice ");
?>
J'écris bien dans mon champ pvc_ttc de nouvelles données ( x*0.99) mais une nouvelle valeur ( x*0.99 de x*0.99 ) est mise à chaque fois que j'actualise ; et tous mes id ont la meme valeur ???
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 1 avril 2009 à 21:09
En effet , je souhaite modifier à heure fixe , quotidiennement , tous les prix de ma table shop_monnaies .
Le script fonctionne bien . Avant l'heure ( 18 H ) le prix qui s'affiche est bien x et après , (x*0.99).
Mais c'est pour Updater que ça coince ...
Remarque : je ne sais pas si c'est important , mais mon champ pvc_ttc est de type float , unique et index dans Phpmyadmin .
L'erreur qui s'affiche dans son entier est :
Parse error : parse error in C:\wamp\www\mabasededonnees\Untitled-1_2i0n7hfrkx.php on line 67
Autre remarque : la suite de nombre et de chiffres qui s'affiche après Untitled-1_ est différente à chaque fois que j'essaie d'afficher .
Si cela peut aider , je travaille avec dreamweaver CS3 ...
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 2 avril 2009 à 07:25
Salut,
Comme le dit Orange il faudrait voir le code complet, parce que là ce n'est pas possible de t'aider.
Ta requête semble correcte. L'erreur signifie que la variable $newprice n'est pas définie.
L'erreur précédente (parse error) signifie que tu as un problème de syntaxe (manque parenthèse, ...) à la ligne 67.
Sans ton code on ne peut pas voir cette ligne 67 ....
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 2 avril 2009 à 13:18
J'ai testé le code mais cela engendre la meme erreur : Notice : Indefined variable :Newprice in C\...Je ne sais pas ce que vous entendez par code dans BDD.Désolé , je débute ...Apparemment BDD = base de données ; mais je ne sais où trouver le fameux code ...
Dans l'attente de vos explications , je vous transmet l'ensemble de ma page , en cours de création ; et en suivant , la structure des tables de ma base de données ( récupérée dans Phpmyadmin ) .
Document sans titre
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 3 avril 2009 à 19:39
Voici le script amélioré : les id du champ prix_ttc sont mises à jour avec ce script ; mais il faut appeler l'id et actualiser ...
Par contre , si je mets $timestamp = 0 , le script ne fonctionne pas ? Pourquoi ? Je voulais le faire tourner à 23H59mn59s pour éviter les valeurs négatives ...
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 4 avril 2009 à 08:51
<tt class= "constant">Salut,
Peux tu re situer un peu le contexte ?
Dis moi si je me trompes :
Tu souhaites que chaque jour à minuit le prix de l'ensemble des produits que tu vends soient multiplié par 0.99
Comment et par qui ce script est il appelé ?
Peut il l'être plusieurs fois par jour ?
Pour quelle raison passes tu $_GET['id'] au script alors que tu souhaites modifier l'ensemble des prix ?
</tt>
...
A mon avis ton script ne peut pas fonctionner en l'état.
J'ai du mal à comprendre comment ton else {...} peut être exécuter. $timestamp est toujours supérieur à 0, non ?
Pour la requête tu peux faire ça : mysql_query("UPDATE shop_monnaies SET prix_ttc '$newPrice' WHERE id ' $id ' ");
=>
mysql_query("UPDATE shop_monnaies SET prix_ttc = prix_ttc*0.99");
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 4 avril 2009 à 09:53
Lorque time() est égal à 23 h 59 mn 59 s le $timestamp = 0 ( et donc différent de > 0 ) ...
Ce que qui permet au script de s'effectuer tous les jours à minuit .
J'ai vérifié , et je te confirme que cela fonctionne .
Pourtant , si je ne spécifie pas de condition WHERE , tous les id prennent la valeur de l'id=1 ...
C'est pourquoi tu peux voir le script ci-dessus avec $id ...Mais dans ce cas là , seul l'id qui est appelé est modifié => si j'appelle l'id = 2 en faisant ?id=2 , je m'aperçois que lorsque j'arrive à minuit , le pvc de cet id passe bien de pvc à pvc*0.99 mais l'id = 1 est inchangé ( et vice versa si je prends l'id = 1 )Or , je souhaite que le prix de tous les id passe de pvc à pvc*0.99 à minuit ...et là , je bloque ...
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 4 avril 2009 à 10:22
Re Habroc,
As tu lu mon commentaire en entier ??
Si je pose des questions ce n'est pas pour le plaisir d'écrire mais pour essayer de t'aider au mieux.
J'ai vérifié , et je te confirme que cela fonctionne = > effectivement, sauf qu'il faut l'appeler à la bonne seconde, autant dire que c'est "impossible" via l'appel d'un browser.
D'où ma question :
<tt class="constant">Comment et par qui ce script est il appelé ?
</tt> C'est pourquoi tu peux voir le script ci-dessus avec $id ...
=> c'est un non sens !! Tu veux modifier l'intégralité des données et tu en précise une en particulier.
Et puis :
- tu fais un update de la table avec la même valeur de prix_ttc lorsque $timestamp > 0, à quoi bon ?
- "get_magic_quotes_gpc" ne devrait pas exister : il doit être desactivé, point barre.
- "sprintf" ne fait que surcharger le code
<tt class= "constant">
</tt> [...]je souhaite que le prix de tous les id passe de pvc à pvc*0.99 à minuit ...et là , je bloque ...
=>
Il me semble t'avoir donné une réponse, non ?
habroc
Messages postés31Date d'inscriptionmercredi 25 mars 2009StatutMembreDernière intervention21 septembre 2009 4 avril 2009 à 11:29
Kohntark ,
Dans tous les cas , merci pour ton aide car , si je puis simplement re-préciser : je ne suis ni programmeur ni informaticien . Alors , il est fort possible que je ne sois pas sur la bonne voie pour faire ce que je souhaite ...
Je vais essayer entre midi et deux , la ligne que tu m'as donnée :
mysql_query("UPDATE shop_monnaies SET prix_ttc = prix_ttc*0.99");
Que veux dire browser ?
Betement , je pensais génerer en PHP une actualisation de page après ce script à minuit pile ...car si la condition n'est valable qu'une seconde , elle sera inchangée pendant 24 heures . Je fais fausse route ?...