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

Signaler
-
 YannOuch -
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

Messages postés
1054
Date d'inscription
samedi 14 mars 2009
Statut
Membre
Dernière intervention
23 octobre 2013
146
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
}
}
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.
Messages postés
1054
Date d'inscription
samedi 14 mars 2009
Statut
Membre
Dernière intervention
23 octobre 2013
146
Tu peux aussi faire comme ça, effectivement !
Oui ça y est ça marche ! Dire que cela fait maintenant 3 heures que je me prend la tête dessus !

Merci beaucoup !