JeuWeb - Crée ton jeu par navigateur
[REGLE]Script bon ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [REGLE]Script bon ? (/showthread.php?tid=481)

Pages : 1 2


[REGLE]Script bon ? - Archange - 23-11-2006

Hello,

Je souhaite avoir votre avis sur un script pour savoir si vous pensez qu'il fontionne ou pas ( car je vois pas trop comment le tester celui ci )

Donc enfaite je souhaite que à midi minuit et 20 h, la vie et/ou l'argent se met à zero pr la vie et se met à jour pour l'argent dans la bdd

Voila le bout de script ( session start, connection plus haut mais pas affiché ici )

Code PHP :
<?php 
$_SESSION
['argentpartourssanstaf'] = 50; //argent sans travail

$requetes = mysql_query("SELECT * FROM membres ");
while (
$donnees = mysql_fetch_array($requetes) )
{
$vie= $donnees['vie'];
$cash= $donnees['cash'];
$vie= $donnees['vie'];

}

if (
date("H") == 00); // si il est minuit
{
$vie = 0; // vie a 0
$cashfinal = $cash + $_SESSION['argentpartourssanstaf']; // argent possedé + argent sans travail
mysql_query("UPDATE membres SET vie='$vie' AND cash='$cashfinal' WHERE pseudo='$pseudo'"); // on met a jour les entrées
}
if (
date("H") == 20); //si il est 20 h
{
$cashfinal = $cash + $_SESSION['argentToursDefaut']; // argent possedé + argent sans travail
mysql_query("UPDATE membres SET vie='$vie' AND cash='$cashfinal' WHERE pseudo='$pseudo'"); // on met a jour les entrées
}
if (
date("H") == 12); // Si il est midi
{
$cashfinal = $cash + $_SESSION['argentToursDefaut']; // argent possedé + argent sans travail
mysql_query("UPDATE membres SET vie='$vie' AND cash='$cashfinal' WHERE pseudo='$pseudo'"); // on met a jour les entrées
}

Qu'en pensez vous ?

Merci


RE: Script bon ? - Plume - 23-11-2006

Je te conseille de faire plutôt 'else if' que plusieurs 'if', de manipuler des id plutôt que des chaines de caractères pour ce qui est de tes requètes notamment - je pense au pseudo dans ta condition.

[EDIT] Honte à moi, j'ai oublié pleeeiins de trucs !! Sad


RE: Script bon ? - Raoull - 23-11-2006

Ca m'a l'air pas mal, mais 2 détail (vite avant que Damen me grille) :

1) au lieu de faire 3 IF, auatnt faire un IF/ELSEIF/ELSEIF ca accelerera ton script, et pour un cron c'est jamais négligeable.

2) je me trompe p-e mais "SET vie='$vie' AND cash='$cashfinal'" c'est pas plutot "SET vie='$vie', cash='$cashfinal'" ?? a moins que les 2 soient acceptées.

3) $_SESSION['argentpartourssanstaf'] = 50;
Pas besoin de mettre ca dans une variable de session à mon avis (ca emcombre pour rien)... un simple :
$argentpartourssanstaf = 50;

4) je crois que ta routine est pas idéale, car deja tu récupere 2 fois "vie" at pas "pseudo".
Voici comment moi je ferais (a voir avec l'avis des autres) (sauf qu'au lieu de pseudo j'utiliserai l'id) :

Code PHP :
<?php 
$argentpartourssanstaf
= 50;
$requetes = mysql_query("SELECT cash, pseudo FROM membres ");
$res=mysql_num_rows($requetes);
if (
$res>0) {
for (
$i=0;$i<$res;$i++) {
$cash= mysql_result($requetes, $i, 'cash');
$pseudo=mysql_result($requetes, $i, 'pseudo');

if (
date("H") == 00) {
$cashfinal = $cash + $argentpartourssanstaf; // argent possedé + argent sans travail
mysql_query("UPDATE membres SET cash='$cashfinal' WHERE pseudo='$pseudo'"); // on met a jour les entrées
}
elseif (
date("H") == 20) {
$cashfinal = $cash + $argentToursDefaut; // argent possedé + argent sans travail
mysql_query("UPDATE membres SET cash='$cashfinal' WHERE pseudo='$pseudo'"); // on met a jour les entrées
}
elseif (
date("H") == 12) {
$cashfinal = $cash + $argentToursDefaut;
mysql_query("UPDATE membres SET cash='$cashfinal' WHERE pseudo='$pseudo'");
}

}
}
else {
// erreur danbs la requete ou aucun membre...
}

et encore c'est pas l'idéal car on entre dans la boucle FOR (qui parcoure tous les membres) sans vérifier avant que l'heure de l'update est bonne, donc p-e inutilement...

EDIT : yavait des erreurs...


RE: Script bon ? - pascal - 23-11-2006

salut, je ne sais pas pour l'heure mais ton script a plein de petites erreurs, genre:
_ le while a ses accolades fermées avant d'exécuter le if
_ dans une instruction SET, les champs à mettre à jour sont séparés par une virgule, pas par AND ( AND c'est dans la partie WHERE d'une requete)
_ c'est pas optimisé du tout, on peut faire une seule requete en tout plutot qu'une requete par membre:
Code PHP :
<?php 
$_SESSION
['argentpartourssanstaf'] = 50; //argent sans travail

if (date("H") == 00); // si il est minuit
{
$requete = "UPDATE membres SET vie=0, cash= cash + " . $_SESSION['argentpartourssanstaf'];
mysql_query($requete);
}
if (
date("H") == 20 || date("H") == 12); //si il est 20 h ou midi
{
$requete = "UPDATE membres SET cash= cash + " . $_SESSION['argentToursDefaut'];
mysql_query($requete);
}


A+

Pascal


RE: Script bon ? - Raoull - 23-11-2006

Oui merci j'ai corrigé ! (fait trop vite)

voila une version encore plus simplifiée, je peux pas faire mieux
Code PHP :
<?php 
if (date("H") == 00 || date("H") == 20 || date("H") == 12) {
$argentpartourssanstaf = 50;
$requetes = mysql_query("SELECT cash, pseudo FROM membres ");
$res=mysql_num_rows($requetes);
if (
$res>0) {
for (
$i=0;$i<$res;$i++) {
$cash= mysql_result($requetes, $i, 'cash');
$pseudo=mysql_result($requetes, $i, 'pseudo');

$cashfinal = $cash + $argentpartourssanstaf;
mysql_query("UPDATE membres SET cash='$cashfinal' WHERE pseudo='$pseudo'");
}
}
else {
// erreur danbs la requete ou aucun membre...
}
}



RE: Script bon ? - Plume - 23-11-2006

Hep bonhomme ! T'as oublié la mise à jour de la vie Smile
Sinon, je te conseillerais d'aérer tes instructions. C'est plus propre Big Grin

Je sais je chipote, mais j'y peux rien, j'aime quand c'est niquel Tongue


RE: Script bon ? - Raoull - 23-11-2006

Bah oui mais si tu regardes son script de départ... Il récupère la vie et l'update sans faire aucun traitement... donc inutile.
Et puis bon... si c'est pas parfait pour son cas, c'est à adapter hého ! Wink

EDIT : C'est vrai aussi que dans ce cas, pascaltje a raison, autant faire un update général au lieu de passer les peudios 1 par 1... 2 têtes valent mieux qu'une comme on dit...


RE: Script bon ? - pascal - 23-11-2006

les gars,

regle numero 1 du SQL Club:
si on a une requete dans une boucle, on l'enleve

regle numero 2 du SQL Club:
si on a une requete dans une boucle, on l'enleve

...

A+

Pascal


RE: Script bon ? - Archange - 23-11-2006

Lol j'ai a peine le temps de repondre Smile

Raoull merci pr ton script mais la sa mettra a zéro la vie aux 3 heures differentes alors que je souhaite juste a minuit :haha:

Donc laquelle version est la mieu dans celle que vous me proposez parce que je m'y perd :glace:

Merci en tous cas


RE: Script bon ? - pascal - 23-11-2006

ça y est je suis transparent!

Code PHP :
<?php 
$_SESSION
['argentpartourssanstaf'] = 50; //argent sans travail

if (date("H") == 00); // si il est minuit
{
$requete = "UPDATE membres SET vie=0, cash= cash + " . $_SESSION['argentpartourssanstaf'];
mysql_query($requete);
}
if (
date("H") == 20 || date("H") == 12); //si il est 20 h ou midi
{
$requete = "UPDATE membres SET cash= cash + " . $_SESSION['argentToursDefaut'];
mysql_query($requete);
}