JeuWeb - Crée ton jeu par navigateur

Version complète : [Résolu] Je ne comprends pas ce fragment de code
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjours tout le monde, j'ai telecharger un pack avec des scripts libres, et j'avoue être en complète galère pour el comprendre ...

SI quelqu'un peu me reformuler ses quelques lignes, je lu en serai vriament reconnaissant Smile

Code PHP :
<?php 
$TMPL
['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily']; // qu'est se que les ">" et le "?" font ici :s
Code PHP :
<?php 
$TMPL
['reviews'] .= $this->do_skin('stats_review'); // le même problème ici avec les -> .

Seux là, à part des petits signes de ponctuation, j'ai glodabelement compris, maintenant, on attaque une langue entre le chinois le php portuguais Cool
Code PHP :
<?php 
$result
= $DB->select_limit("{$query} ORDER BY RAND()", 2, 0, __FILE__, __LINE__);

et mon preferer Big Grin :
Code PHP :
<?php 
while (list($TMPL['id'], $TMPL['date'], $TMPL['review']) = $DB->fetch_array($result))

je remercie infiniment les bilingues Big Grin

bonne journée, leni
Bonjour,

Dans ta première ligne, tu as une structure conditionnelle "simplifiée": ça correspond à un "if" mais en version rapide. Après comme je n'utilise jamais cette écriture (d'ailleurs, si on pouvait m'expliquer son intérêt mise à part le fait qu'elle est plus courte, ça serait gentil ^^) je ne saurais pas te traduire exactement mais en cherchant un peu ça doit se trouver Smile

Bonne journée, Spoutnik, qui s'excuse du peu d'informations qu'il peut te donner ^^'.
Code PHP :
<?php 
$TMPL
['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily']; // qu'est se que les ">" et le "?" font ici :s

En gros : si $TMPL['unq_pv_0_daily'] est supérieur à $TMPL['unq_pv_max_daily'], alors $TMPL['unq_pv_max_daily'] prend pour valeur $TMPL['unq_pv_0_daily'], sinon il garde sa valeur originelle.

Et moi non plus, à part la syntaxe plus courte, je ne voit pas vraiment d'utilité ici... on m'avait même dit que cette syntaxe est plus lente qu'un simple if{...}, par exemple dans une boucle avec beaucoup d'itérations apparemment ça se ressent (à tester).

Code PHP :
<?php 
$TMPL
['reviews'] .= $this->do_skin('stats_review'); // le même problème ici avec les -> .

Ca, c'est de la syntaxe objet. Ce code doit forcément être à l'intérieur d'une classe, d'ailleurs. $this représente l'objet en cours, c'est à dire l'instance de la classe en question. Cette objet va déclencher la méthode 'do_skin' avec le paramètre 'stats_review' ... après il faudrait voir le code de la classe plus en profondeur...

Code PHP :
<?php 
$result
= $DB->select_limit("{$query} ORDER BY RAND()", 2, 0, __FILE__, __LINE__);

Là aussi, objet encore, tu doit avoir une classe qui gère les accès BDD (du PEAR? Je me souviens plus de la syntaxe Smile). Il faudrait regarder la méthode 'select_limit' de cette classe, qui accepte apparement comme arguments ta requête + quelques autres trucs... __FILE__ et __LINE__ sont des constantes PHP qui te donne le nom fichier PHP en cours de traitement et la ligne, utile la plupart du temps pour pister les erreurs.

Code PHP :
<?php 
while (list($TMPL['id'], $TMPL['date'], $TMPL['review']) = $DB->fetch_array($result))

Là, en gros, la méthode 'fetch_array' de ta classe pour les bases de données va te renvoyer à priori un tableau associatif, que ton 'list()' va décomposer dans le tableau $TMPL. Le 'while' va permettre finalement de parcourir entièrement ce tableau. Méthodes plus ou moins courante de 'parser' le résultat d'une requête.

Bonne chance en touts cas!

PS : juste par curiosité, où as-tu trouvé ces sources?

ZBoy
Code PHP :
<?php 
$TMPL
['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily'];

C'est une opération trinaire (un if simplifié comme l'a dis Spoutnik).
Voila ce que ça veut dire : si l'opération booléenne $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] renvoie vrai, alors $TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] sinon $TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_max_daily'].

Après, sans savoir ce que veulent dire les variables, je ne peux pas t'expliquer plus ^^

Code :
$TMPL['reviews'] .= $this->do_skin('stats_review');

Là c'est de l'objet (php5). tu appliques la méthode do_skin() à ton objet (this étant ton objet correspondant à la classe d'où vient ce morceau de code).

Code :
$result = $DB->select_limit("{$query} ORDER BY RAND()", 2, 0, __FILE__, __LINE__);

Pareil, ton objet DB (pour DataBase je suppose), tu lui appliques la méthode select_limit qui prend pour arguments un requete ainsi que 4 autres paramétres (regarder la fonction plus en détail pour savoir ce que sont les 2ème et 3èmes paramètres). Les 2 derniers paramètres te permettent de connaitre le fichier et la ligne lorsque ta requête "plante"

Code :
while (list($TMPL['id'], $TMPL['date'], $TMPL['review']) = $DB->fetch_array($result))

Là il y a un problème, tu as du oublier un bout de code car il y a une parenthèse en trop Wink

EDIT : pas assez rapide ^^
loka a écrit :
Code PHP :
<?php 
$TMPL
['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] ? $TMPL['unq_pv_0_daily'] : $TMPL['unq_pv_max_daily'];

C'est une opération trinaire (un if simplifié comme l'a dis Spoutnik).
Voila ce que ça veut dire : si l'opération booléenne $TMPL['unq_pv_0_daily'] > $TMPL['unq_pv_max_daily'] renvoie vrai, alors $TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_0_daily'] sinon $TMPL['unq_pv_max_daily'] = $TMPL['unq_pv_max_daily'].

Après, sans savoir ce que veulent dire les variables, je ne peux pas t'expliquer plus ^^
La poo, je 'men sert pas pour l'instant, mais je trouve cette structure très interessante Smile

Code PHP :
<?php 
$a
=1;
$b=2;

$a = $b > $a ? $b : $a;

//si 2>1, $a=1;
//sinon, $a=$a

j'ai bien compris ? c'est sa ? Smile
En fait, je viens de decouvrir sa ya 2 jours et j'adore perso

Code PHP :
<?php 
$essai
= 1;
$test = 5;

$var = ($essai > $test ) ? "Coucou, essai est plus grand que test" : 'test est plus grand que essai';

echo
$var;

Renvera : test est plus grand que essai,
Vous pouvez pas juste représenter l'équivalent ?

Code :
$var = ($essai > $test ) ? "Coucou, essai est plus grand que test" : 'test est plus grand que essai';
Equivaut à :
Code :
if( $essai > $test )
{
   $var = 'Coucou, essai est plus grand que test';
}
else
{
   $var = 'test est plus grand que essai';
}

Cordialement,
Arf, jl'avais pas ecris ?

J'y comptais, desolé
merci beaucoup pour votre aide Smile

bonne soirée, leni