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

Résolu
shidame Messages postés 4 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 16 mars 2007 - 1 août 2004 à 11:25
shidame Messages postés 4 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 16 mars 2007 - 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
A voir également:

4 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
2 août 2004 à 08:49
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
3