Page 1 sur 1

Problème syntaxique

Posté : 25 août 2006, 11:04
par stomper98
Voila j'ai un petit problème tout bete je pense mais je ne vois vraiment pas d'ou ça vient.

Voici le code.
 
$requeteOrder = "";

if (isset($_POST["sortOrder"] != 0)) {  // :arrow: Ligne 189

      // l'utilisateur a choisi de trier les résultats sur une colonne

      if ($_POST["sortOrder"] == 1){

         //Tri croissant

         $requeteOrder = " ORDER BY ".$_POST["sortColumn"];

      }

      else {

         $requeteOrder = " ORDER BY ".$_POST["sortColumn"]." DESC";

      }

}
L'erreur est : Parse error expecting ',;` or ); on line 189

Posté : 25 août 2006, 11:05
par ouckileou
L'erreur est bien sur la ligne signalée

Une erreur de syntaxe "caractère manquant" peut ausis dire qu'il est mal placé... donc manquant à l'endroit où il devrait être

Un tour dans la doc pour avoir des exemples qui marchent sous les yeux ? ça aide des fois ;)

http://fr.php.net/isset

Posté : 25 août 2006, 11:55
par stomper98
arf quel ane :roll:

suffisait d'enlever != 0

if (isset($_POST["sortOrder"])) {

Merci :)

Posté : 25 août 2006, 12:05
par ouckileou
suffisait d'enlever != 0
Non, tu pouvais très bien laisser le 0 qui est équivalent à false (voir ici : Conversion en booléen)

Mais il fallait bien placer ta parenthèse ;)
Comme ça :
if (isset($_POST["sortOrder"]) != 0)
Mais c'est vrai que ça va plus vite d'écrire comme ça :
if (isset($_POST["sortOrder"]))
Par contre il faut cliquer sur Résolu[:b]

Posté : 25 août 2006, 12:42
par albat
Histoire de simplifier, tu peux aussi rendre ton code plus élégant :
//
$requeteOrder = "";
if (isset($_POST["sortOrder"]))
   { $requeteOrder = " ORDER BY ".$_POST["sortColumn"].($_POST["sortOrder"]==1 ? "" : " DESC");
   }

Posté : 25 août 2006, 14:06
par stomper98
Oui je pense que c'est plus simple comme ca ouckileou

Par contre albat pour ton code je vois que ca fonctionne mais je pense ne pas maitriser assez php pour faire un code comme ca. C'est vrai que c'est plus élégant par contre.

Merci :)

Posté : 25 août 2006, 14:30
par ouckileou
Le code d'Albat est expliqué ici : opérateur ternaire

Ceci dit, je ne trouve pas ça plus clair :mrgreen:

Posté : 25 août 2006, 14:42
par albat
Ne t'effraie pas. En fait, c'est tout simple.

J'ai utilisé trois astuces de développement :
1. simplification d'écriture
2. factorisation
3. opérateur ternaire

(Pour mes exemples, j'ai viré les commentaires : on est entre nous, on sait de quoi on cause...) ;)

1. simplification d'écriture (suggérée par Ouckileou)
//
if (isset($_POST["sortOrder"]!=0)) // Correct mais lourd
if (isset($_POST["sortOrder"]))    // Correct et plus léger
2. factorisation
//
if ($_POST["sortOrder"] == 1)
   $requeteOrder = " ORDER BY ".$_POST["sortColumn"];
   else
   $requeteOrder = " ORDER BY ".$_POST["sortColumn"]." DESC";

// Que $_POST["sortOrder"] soit égal à 1 ou non,
// $requeteOrder aura toujours pour valeur (au minimum) : " ORDER BY ".$_POST["sortColumn"] 
// donc...

$requeteOrder = " ORDER BY ".$_POST["sortColumn"];
if ($_POST["sortOrder"] == 1)
   $requeteOrder .= "";       // on n'ajoute rien ; ordre ASC par défaut
   else
   $requeteOrder .= " DESC";  // on ajoute la précision de l'ordre DESC
3. opérateur ternaire
//
if ($_POST["sortOrder"] == 1)
   $requeteOrder .= "";
   else
   $requeteOrder .= " DESC";

// peut s'écrire plus avantageusement :

$requeteOrder .= ($_POST["sortOrder"]==1 ? "" : " DESC"); 
En savoir plus sur l'opérateur ternaire...

Posté : 25 août 2006, 15:50
par stomper98
ok je comprend mieux

en fait c'est le :?: qui m'a un peu effrayé mais c'est beaucoup plus clair maintenant :wink: