<?php
$a = 1;
// je recupère la valeur de chaque gains
$req_gains = $this->bdd->query('SELECT * FROM gains ORDER BY places');
while($res_req = $req_gains->fetch())
{
$gains[$a] = $res_req['gains'];
$a++;
}
$req_gains->closeCursor();
$i = 1;
// je recupere les 30 premiers de mon classement
$req = $this->bdd->query('SELECT * FROM users ORDER BY points DESC LIMIT 0, 30');
while($result = $req->fetch()) // j'ai un General error à cette ligne mais tout marche comme même
{
if($i == 1)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['1'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i == 2)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['2'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i ==3)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['3'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i > 3 AND $i <= 5)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['4'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i >= 6 AND $i <= 10)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['5'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i >= 11 AND $i <= 18)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['6'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i >= 19 AND $i <= 24)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['7'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
elseif($i >= 25 AND $i <= 30)
{
$req1 = $this->bdd->prepare('SELECT argent FROM users WHERE id=:id');
$req1->execute(array('id'=>$result['id']));
$argent_base = $req1->fetch();
$req1->closeCursor();
$nouveau_argent = $argent_base['argent'] + $gains['8'];
$req = $this->bdd->prepare('UPDATE users SET argent=:argent WHERE id=:id');
$req->execute(array(
'argent'=>$nouveau_argent,
'id'=>$result['id']
));
}
$i++;
}
?>
Enfaite j'ai testé le code et tout marche (à par quand il me met General error à la ligne que j'ai commenté je ne sais pas pour quoi mais en remplacent l’intérieur des conditions par des echo quand j'ai testé le code sa me le faisais pas) le problème c'est que il me met la même somme d'argent à tous les membres de ma table et je ne sais pas vraiment d'ou sa viens.
Et je pense que ma methode n'est pas la meilleur personne n'aurais une methode plus propre à proposé pour distribué les lots qui sont dans une table gains vers le champ "argent" de ma table d'utilisateur qui ont fini dans les 30 premier du classement ?