[php] Ne pas répéter 50 fois le même code ?

Résolu/Fermé
YannOuch - 23 déc. 2011 à 19:04
 YannOuch - 23 déc. 2011 à 19:49
Bonsoir,
étant novice en php sur certains point, je bloque un peu ce soir sur une partie de mon projet.
Je suis désireux de mettre en place un système de collector sur mon site.

Donc a chaque fois que le membre réalise l'action voulu j'incrémente un point dans une table. Une fois le nombre de points acquis je remet à zéro, passe au nouveau collector et crédite le membre de son gains. J'ai donc fais ceci :

<?php
// INFOS BDD
$sql=mysql_query("SELECT * FROM users WHERE fid = $fid");
$action = ($sql['action']);
$date2 = date("Y-m-d");

$sql = mysql_query('UPDATE 'membres' SET action = action + "1" WHERE pseudo= '.$pseudo.'"');
if($action=='9'){
$sql=mysql_query("UPDATE users SET codes = '' WHERE username = '$username'");
$sql=mysql_query("UPDATE users SET collector = collector + '1' WHERE username = '$username'");
}

if($collector=='1' AND $action=='0'){
// ON CREDITE LE MEMBRE
}
?>

Comment faire pour ne pas avoir à récopier le code autant de fois que j'ai de collector différent et de gains différent ?
COmment faire également si je désire faire : du collector 1 à 9 tel gain, du 10 au 20 tel gain et 20+ tel gain dans ce cas comment comment faire ?

Je vous remercie par avance,
Bien amicalement,
Yann.


3 réponses

Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
23 déc. 2011 à 19:11
Salut,

Tu pourrais créer une table avec les collector, et les gains associés.
Pour ta première question, tu pourrais (si tu as une table collector en BDD) récupérer leur id,$query=mysql_query(select id from collector);
Ensuite avec while($result = mysql_fetch_array($query))
{
if ($action == $result['id'])
{
traitement
}
}
0
Salut,
non je n'ai pas pensé à faire une table contenant les infos du collector (action, palier, gains).

Cela va alléger mon code c'est sur.
Mais n'y a t-il moyen ou alors je ne vois pas comment peut-être pour le faire via bdd c'est peut-être ça.

Je voudrais faire un truc un comme ceci.

Si collector est égal à 1,2,3,4,5,6,7,8,9 ou 10 et que action est égal à 9 alors on crédite sinon non.

En faisant :

if($collector>='1' AND $action=='0'){
}

Je crédite au dessus de un mais même si je rajoute par la suite qu'au dessus de 10 on change la créditation, bah ça ne change rien.
0
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 144
23 déc. 2011 à 19:34
Tu peux aussi faire comme ça, effectivement !
0
Oui ça y est ça marche ! Dire que cela fait maintenant 3 heures que je me prend la tête dessus !

Merci beaucoup !
0