IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

UPDATE avec un "if"


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 3
    Points
    3
    Par défaut UPDATE avec un "if"
    Bonjour,

    Dans un contexte de jeu de gestion en php, je dois mettre à jour les ressources lors du chargement de la page.

    Certaines ressources, nécessite d'en avoir une de base pour être produite. Je dois donc incrémenté mon champ de deux manières différentes, en fonction de si le joueur a suffisament de la ressource de base ou non.

    Ici, pour le cuir :
    Pr_Lasts contient le moment du dernier calcul
    Pr_Cprod contient ce que le joueur peut produire en 2 heures
    Pr_Ccout contient le coût en peaux de chaque unité de cuir produite
    Pr_Sqtt contient la quantité de peaux actuellement en stock (calculé dans une autre requête juste avant)
    Pr_Ccdt contient ce que le joueur veut garder comme stock de peau minimale (et donc, arriver à ce nombre la production de cuir s'arrête).
    Pr_Cmax contient le nombre d'unité de cuir que le joueur peut stocker
    Pr_Cqtt contient la quantité de cuir en stock
    Pr_Crst contient la valeur décimale qui n'a pas été ajouté au stock


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	$tempsps = '(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(Pr_Lasts))' ;
     
     
    UPDATE t_prod SET
    if ( TRUNCATE ((('.$tempsps.'*Pr_Cprod)+Pr_Crst)/7200,0)*Pr_Ccout>Pr_Sqtt-Pr_Ccdt,
    				if ( Pr_Cqtt + TRUNCATE ((Pr_Sqtt-Pr_Ccdt)/Pr_Ccout,0)>Pr_Cmax,
    					Pr_Cqtt = Pr_Cmax,
    					( Pr_Cqtt = Pr_Cqtt + TRUNCATE ((Pr_Sqtt-Pr_Ccdt)/Pr_Ccout,0),
    					Pr_Crst = MOD ((Pr_Sqtt-Pr_Ccdt)/Pr_Ccout))),
    				if (Pr_Cqtt + TRUNCATE ((('.$tempsps.'*Pr_Cprod)+Pr_Crst)/7200,0)>Pr_Cmax,
    					Pr_Cqtt = Pr_Cmax,
    					( Pr_Cqtt = Pr_Cqtt + TRUNCATE ((('.$tempsps.'*Pr_Cprod)+Pr_Crst)/7200,0),
    					Pr_Crst = MOD ((('.$tempsps.'*Pr_Cprod)+Pr_Crst),7200)))
    			),
    			Pr_Lasts = CURRENT_TIMESTAMP
    			WHERE Pr_ID='.$idc ;
     
    	$se = mysql_unbuffered_query($sse) or die('Erreur SQL !<br>'.$sse.'<br>'.mysql_error());
    Je me retrouve avec cette erreur :
    Erreur de syntaxe près de 'if ( TRUNCATE ((((UNIX_TIMESTAMP()-UNIX_TIMESTAMP(Pr_Lasts))*Pr_' à la ligne 2

    Je me demande si ce n'est pas simplement que je ne peux pas faire un if aussi tôt dans la requête ?

    Enfin je sèche un peu, et je ne vois pas quoi ni où corriger... Surtout que la partie mentionnée dans l'erreur me paraît correcte.

    Merci d'avance pour votre aide !

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    J'avais raison... il faut définir le champ avant tout.

    Merci quand même

Discussions similaires

  1. Update avec variable contenant une quote
    Par NejNej dans le forum Développement
    Réponses: 2
    Dernier message: 13/11/2009, 17h51
  2. Réponses: 3
    Dernier message: 30/06/2005, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo