[MySQL]Peut-on mettre une condition IF dans un UPDATE? [Résolu]

shidame 5 Messages postés samedi 19 juin 2004Date d'inscription 16 mars 2007 Dernière intervention - 1 août 2004 à 11:25 - Dernière réponse : shidame 5 Messages postés samedi 19 juin 2004Date d'inscription 16 mars 2007 Dernière intervention
- 2 août 2004 à 15:49
Bonjour,
Je suis actuellement sur la programation d'un jeu de rôle en ligne, et chaque joueur possède des PA (Point d'action), il faut que leur PA respectif augmente de 1 toute les 6min.
Cependant il y a un max de PA possible- pas plus de 240 - et ce même si 3 semaine ce sont écoulées.
Cette dernière volonté (^^), exige un SELECT avant mon UPDATE, je voulai savoir s'il est possible de faire autrement juste avec un UPDATE (condition IF dans un UPDATE ôO )
Voila la fonction que j'utilise :

function Update_PA ($userID) {
$Duree_1Tour = 360; //Duré d'un Tour en seconde
$Gain_1Tour = 1; //PA par Tour

mysql_connect('localhost','root','')
or die ('impossible de se connecter');
mysql_select_db('loe')
or die ('impossible de trouver la base');

$sql = "SELECT Tour,PA FROM caracteristique WHERE userID='$userID'";
$req = mysql_query($sql) or die ('erreur
'.$sql.'
'.mysql_error());
$data = mysql_fetch_array($req);
if (isset($data[0])) {
$Date_Actuel = time();
$Nb_Tour = floor(($Date_Actuel-$data[0]) / $Duree_1Tour);

$New_PA = $data[1]+$Nb_Tour*$Gain_1Tour;
$New_Tour = $data[0]+($Nb_Tour*$Duree_1Tour);

if ($New_PA >= 240) {
$New_PA = 240;$New_Tour=$Date_Actuel;
}

$sql = "UPDATE caracteristique SET PA=$New_PA, Tour=$New_Tour WHERE userID='$userID'";
$req = mysql_query($sql) or die ('erreur
'.$sql.'
'.mysql_error());
}
mysql_close();
}

Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
HFanny 699 Messages postés mercredi 19 février 2003Date d'inscription 13 mai 2011 Dernière intervention - 2 août 2004 à 08:49
3
Merci
Bonjour,

pourquoi tu n'utiliserais pas plutôt une deuxième condition dans ton WHERE ?

UPDATE caracteristique SET PA=$New_PA, Tour=$New_Tour WHERE userID='$userID' AND PA < 240

Comme ça tu ne mets à jour que les personnes qui ont un PA inférieur à 240, ce qui revient au même qu'un IF.

Fanny

Merci HFanny 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de HFanny
cs_Psy 88 Messages postés mercredi 15 mai 2002Date d'inscription 3 mai 2005 Dernière intervention - 1 août 2004 à 22:42
0
Merci
Slt,
Nan le IF dans un UPDATE n'est pas possible : normal, IF ne correspond pas à du mysql mais a un langage propre (PHP dans ton cas) ;)

- Psy -
Commenter la réponse de cs_Psy
shidame 5 Messages postés samedi 19 juin 2004Date d'inscription 16 mars 2007 Dernière intervention - 1 août 2004 à 22:45
0
Merci
Je sais cependant il existe un IF dans les SELECT il me semble...
Merci quand meme je vais faire sans^^
Commenter la réponse de shidame
shidame 5 Messages postés samedi 19 juin 2004Date d'inscription 16 mars 2007 Dernière intervention - 2 août 2004 à 15:49
0
Merci
Merci Fanny je vais faire comme ca^^
Commenter la réponse de shidame

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.