Problème avec page de mise à jour de tous les membres mysql

astuces_jeux Messages postés 731 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 27 mai 2010 - 13 juin 2008 à 19:51
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 13 juin 2008 à 23:12
Bonjour,
J'ai fais une page qui sera lancée automatiquement tout les soirs à minuit :
<?php
if (isset($_POST['mise_a_jour']))
{




/*En gros, le vrai code de la MAJ commence ici.
Avant, ce n'était que pour déclencher la MAJ.
Mais comme je suppose que tu feras ça de manière automatique...
______________________________________________________
Début de la MAJ des métiers
______________________________________________________
*/
$connect = mysql_connect("localhost","cdd_dinolife","*******");


/* selection de la base de donnée mysql */
mysql_select_db("cdd_dinolife", $connect);


$retour_metiers = mysql_query("SELECT pf_rubis FROM phpbb_profile_fields_data");
$retour_metiers = mysql_query("SELECT pf_metier FROM phpbb_profile_fields_data");
$retour_metiers = mysql_query("SELECT user_id FROM phpbb_users");
while ($donnees_metiers = mysql_fetch_array($retour_metiers))
{
$metiers = $donnees_metiers['pf_metier'];
$rubis_initiales = $donnees_metiers['pf_rubis'];
$id = $donnees_metiers['user_id'];
/*Attention, dans les métiers, je ne sais pas comment tu les as écrit...Ç'aurait été plus simple avec des nombres, comme 1 star, 2 mécanicien, et pas mécanitien... ^^
Donc, à toi de voir.
Honnêtement, je priviliègerai les nombres, à la place des noms.
*/
switch ($metiers) {


case '2':
$rubis_a_ajouter = 2;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='2'";
break;


case '3':
$rubis_a_ajouter = 460;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='3'";
break;


case '4':
$rubis_a_ajouter = 150;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='4'";
break;


case '5':
$rubis_a_ajouter = 50;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='5'";
break;


case '6':
$rubis_a_ajouter = 350;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='6'";
break;


case '7':
$rubis_a_ajouter = 75;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='7'";
break;


case '8':
$rubis_a_ajouter = 100;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='8'";
break;


case '9':
$rubis_a_ajouter = 68;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='9'";
break;


case '10':
$rubis_a_ajouter = 12;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='10'";
break;


case '11':
$rubis_a_ajouter = 22;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='11'";
break;


case '12':
$rubis_a_ajouter = 100;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='12'";
break;


case '13':
$rubis_a_ajouter = 70;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='13'";
break;


case '14':
$rubis_a_ajouter = 85;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='14'";
break;


case '15':
$rubis_a_ajouter = 52;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='15'";
break;


case '16':
$rubis_a_ajouter = 12;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='16'";
break;


case '17':
$rubis_a_ajouter = 56;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='17'";
break;


case '18':
$rubis_a_ajouter = 50;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='18'";
break;


case '19':
$rubis_a_ajouter = 150;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='19'";
break;


case '20':
$rubis_a_ajouter = 50;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='20'";
break;


case '21':
$rubis_a_ajouter = 40;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='21'";
break;


case '22':
$rubis_a_ajouter = 31;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='22'";
break;


case '23':
$rubis_a_ajouter = 200;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='23'";
break;


case '24':
$rubis_a_ajouter = 2000;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='24'";
break;


case '25':
$rubis_a_ajouter = 4000;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='25'";
break;


case '26':
$rubis_a_ajouter = 7000;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='26'";
break;


case '27':
$rubis_a_ajouter = 500;
$rubis_totales = $rubis_a_ajouter+$rubis_initiales;
$requete_ajout_emeraudes = "UPDATE phpbb_profile_fields_data SET pf_rubis='$rubis_totales' WHERE pf_metier='27'";
break;
}
mysql_query($requete_ajout_emeraudes);
echo $donnees_metiers['user_id'] . '==> fait
';
/*
______________________________________________________
Fin de la MAJ des métiers
______________________________________________________
*/
}
mysql_close();
}
else
{
?>
<form method="post" action="maj_metiers.php">

</form>
<?php
}
?>

Mais j'ai un problème, il met "id => fait"
Mais le champ "pf_rubis" ne chnage pas dans MySQL.
Avez-vous une idée ?





--------------------------------------
Cordialement,   CDD
http://www.cdd-pro.com

2 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
13 juin 2008 à 23:10
Hello,

Hum ... je comprend pas trop ton code :s

$retour_metiers = mysql_query("SELECT pf_rubis FROM phpbb_profile_fields_data");
$retour_metiers = mysql_query("SELECT pf_metier FROM phpbb_profile_fields_data");
$retour_metiers = mysql_query("SELECT user_id FROM phpbb_users");

??? Petit problème là ... les deux autres sont écrasées !

Pas trop compris non plus le fonctionnement de l'atribution des rubis :s

Tu fais quoi ? une M.A.J. pour rajouté des points par métier ? ou par user ?

UPDATE phpbb_profile_fields_data SET pf_rubis ='$rubis_totales' WHERE pf_metier='27'

La tu fais une M.A.J.de tous les users ayants le métier 27 ...

En plus, ton switch est énorme !!!

Regarde le mien ;)

while ( $row_pf = mysql_fetch_assoc($query_pf) )
{
    $rubis_add = 0;

    switch ($metiers)
    {
        case 2 :
            $rubis_add = 2;
            break;
        case 3 :
            $rubis_add = 460;
            break;
        case 4 :
            $rubis_add = 150;
            break;
               
            /*
             * ...
             */

    }
    if( $rubis_add <> 0 )
    {
        $sql = mysql_query('UPDATE phpbb_profile_fields_data SET pf_rubis += ' . $rubis_add . ' WHERE pf_metier = ' . $metier) or die(mysql_error());
    }
}
Par contre, si j'étais toi, je mettrais dans ma base de donnée, une table avec mes métiers (qui corespond aux 1, 2, 3, 4, ...) et j'ajouterais un champ 'add_rubis_days' et avec une seule requete, le tour serait joué.
UPDATE ma_table as t1, ma_table_metiers as t2 SET t1.pf_rubis +t2.add_rubis_days WHERE t2.metier_id t1.pf_metier

^_____^
<hr />Si ma reponse te convient, merci de l'accepter ! 
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
13 juin 2008 à 23:12
Petite erreur dans mon code ^^

while ( $row_pf = mysql_fetch_assoc($query_pf) )

{

    $rubis_add = 0;

    switch ($metiers)
    {


Je n'ai pas spécifié d'ou vennait $metier :p Ce serait switch($row_pf['pf_metier']) ici ^^

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
Rejoignez-nous