Besoin d'une petite aide pour un novice.

Résolu/Fermé
Roocket Messages postés 7 Date d'inscription samedi 11 juillet 2015 Statut Membre Dernière intervention 10 août 2017 - 20 juin 2017 à 14:25
Roocket Messages postés 7 Date d'inscription samedi 11 juillet 2015 Statut Membre Dernière intervention 10 août 2017 - 20 juin 2017 à 16:03
Hey !

$sponsors = pixieclash_select_all($tables['standings'], ['group_id', $id], ['points', 'DESC']);
return $sponsors;


Alors voilà, avant toute chose, je ne connais absolument rien au langage php. J'essaie juste de modifier 2/3 trucs simples dans un code déjà fait.

Bon alors voilà le problème, sur mon site, il y a un tableau style groupe avec des équipes, leur nombre de points etc... Si bien que afin de trier qui est la meilleure équipe, le site se base sur celui qui a le plus grand nombre de point. Jusque là normal. Sur la ligne de code que je vous met ici, j'ai bien compris que c'était le "['points', 'DESC']" qui déterminait ca. Sauf que, j'aimerais le trier selon deux critères : d'abord les points comme c'est déjà le cas, et ensuite selon le ROUND/DIFF. Si je remplace le 'points' par 'rd' (<- c'est pas ca mais c'est pour l'exemple), le site va effectivement trier par rd mais du coup pas par points (logique, c'était juste pour voir si ca fonctionnait). Ma question : comment faire pour qu'il prenne en compte d'abord les points et ensuite les rd.

J'ai pas mal chercher sur internet mais j'ai rien trouver du style et je suis vraiment perdu n'y connaissant rien à la base. C'est peut-etre simple au final. haha

Merci d'avance.

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juin 2017 à 14:37
Bonjour,

Tu ne trouveras rien...... car la ligne de code que tu nous montres est un appel à une fonction créée par le développeur....
Donc pour modifier ce que tu souhaites... il faut trouver (et nous montrer) le contenu de la fonction pixieclash_select_all()
1
Roocket Messages postés 7 Date d'inscription samedi 11 juillet 2015 Statut Membre Dernière intervention 10 août 2017
20 juin 2017 à 14:58
function pixieclash_select_all($table, $where = null, $order = null) {
global $wpdb;

$table = $wpdb->prefix . $table;
$q = "SELECT * FROM `{$table}`";

// Select where
if(!empty($where)) {
$q .= " WHERE `" . esc_sql($where[0]) . "`='" . esc_sql($where[1]) . "'";
}
if(!empty($order)) {
$q .= " ORDER BY `" . esc_sql($order[0]) . "` " . esc_sql($order[1]);

}
// Check if plugin exists
if(!function_exists('run_pixieclashpanel')) {
return false;
}
$result = $wpdb->get_results($q, ARRAY_A);

return $result;
}

Est ce ceci ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juin 2017 à 15:46
Oui.

On peut y voir que la requête est construite en fonction des paramètres qui sont passés dans ta fonction.

Par exemple, pour le ORDER tu as ça :
 if(!empty($order)) {
    $q .= " ORDER BY `" .  esc_sql($order[0]) . "` " .  esc_sql($order[1]);       
 }


Si toi tu veux pouvoir y ajouter d'autres champs .. il faut modifier le code, par exemple :
if(!empty($order)) {
    $q .= " ORDER BY `" .  esc_sql($order[0]) . "` " .  esc_sql($order[1]);
  if(!empty($order[2])){
     $q .= " , `" .  esc_sql($order[2]) . "` " .  esc_sql($order[3]);
  }  
}


Et pour apeller ta fonction tu pourras faire :
$sponsors = pixieclash_select_all($tables['standings'], ['group_id', $id], ['points', 'DESC','ROUND(points)','DESC']);

0
Roocket Messages postés 7 Date d'inscription samedi 11 juillet 2015 Statut Membre Dernière intervention 10 août 2017
20 juin 2017 à 16:03
Un grand merci à toi ! Ca fonctionne parfaitement.
0