Problème syntaxique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème syntaxique

par stomper98 » 25 août 2006, 15:50

ok je comprend mieux

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

par albat » 25 août 2006, 14:42

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...

par ouckileou » 25 août 2006, 14:30

Le code d'Albat est expliqué ici : opérateur ternaire

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

par stomper98 » 25 août 2006, 14:06

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 :)

par albat » 25 août 2006, 12:42

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");
   }

par ouckileou » 25 août 2006, 12:05

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]

par stomper98 » 25 août 2006, 11:55

arf quel ane :roll:

suffisait d'enlever != 0

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

Merci :)

par ouckileou » 25 août 2006, 11:05

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

Problème syntaxique

par stomper98 » 25 août 2006, 11:04

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