Syntaxe php/sql

Résolu
Bonjour,
Je débute en php/sql ...
Normalement, ce bout de code ne devrait pas donner d'erreur, non ? :
(Je dis ça, vu que je viens de le trouver sur phpdebutant.org)
$query = "SELECT date,name,email,comment FROM $table ORDER BY date DESC";

Merci pour vos réponses, vu qu'il m'affiche :
Erreur SQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY date DESC' at line 1

--
Me zo ganet e-kreiz er mor
Configuration: Linux
Firefox 3.0.9

9 réponses

  1. Salut,

    Pour débugger du sql rien de plus simple, tu affiches ta requete :

    $query = "SELECT date,name,email,comment FROM $table ORDER BY date DESC";

    echo '$query;

    Et tu envoie le résultat sur ton interface MySql, ça te donnera une diée d'ou le problème vient.
    A première vue je dirais que la variable $table est invalide.

    Sinon un conseil d'optimisation les chaines php il vaut mieux les faire de cette manière :

    $query = 'SELECT date,name,email,comment FROM '.$table.' ORDER BY date DESC';

    C'est beaucoup + rapide à l'exécution.

    Et si ta variable $table vient d'une saisie utilisateur il faut la protéger en utilisant

    $query = 'SELECT date,name,email,comment FROM '.mysql_real_escape_string($table).' ORDER BY date DESC';
    1. ok
      super merci ;-)
      Je viens de continuer à mettre ce code à ma sauce

      Pour pouvoir par exemple modifier le sens (ascendant, ou descendant), je pensais à kke cose comme ça :
      $query = 'SELECT lien,titre,name,niveau,format FROM '.$table.' ORDER BY name '.$sens.'';
      Bizarrement, je n'ai pas d'erreur, mais ça ne change pas le sens ...

      Ceci avec un lien du genre :
      /index.php?page=part&sens=desc

      Pô facile de coder avec des moufles .... ;-)
      1. Quelqu'un aurait il une petite idée, svp ?
        Merci ;-)
        1. as tu récupéré ta variable sens ?

          $sens = $_GET['sens'];
      2. Oooops .... :-)
        Je focalisait sur la syntaxe, et j'oubliais le principal
        Merci
        1. De rien ;)
      3. Pour aller un peu plus loin
        Mais là, c'est sur, je sais vraiment pas ! C'est pas mes yeux qui vont mal !! LOL

        Est ce possible losqu'on click sur les liens en haut de tableau, d'inverser automatiquement l'ordre
        Je m'explique :
        Avec un lien du genre :
        /index.php?page=part&tri=name&sens=desc
        si on reclick dessus, ça fait :
        /index.php?page=part&tri=name&sens=asc

        Par exemple dans mon mon phpMyAdmin, ça marche comme ça
        Merci
        1. dans ta case du tableau tu peux mettre (mais ya surement plus propre...)

          <?php
          if($_SERVER['REQUEST_URI'] == "/index.php?page=part&tri=name&sens=desc "
          {
          ?>
            <a href="/index.php?page=part&tri=name&sens=asc ">blabla</a>
          <?php } else { ?>
             <a href="/index.php?page=part&tri=name&sens=desc">blabla</a>
          <?php } ?>
          
      4. Ah ok, avec else ...
        J'essaie de mettre ça
        Ca ne fait rien si c'est mélangé avec tout le reste du code qui va chercher les données dans la base ?
        1. Tout dépend comment ton site est organisé. Je veux dire par la est-ce que ton affichage et ton traitement sont dans le même fichier ou pas ?
      5. Oui, tout est dans le même
        Ok, impec, pour le 1er click
        avec une ")" à la fin de la 1ere ligne ;-)

        Mais en fait, je voudrait que à chaque fois, ça inverse
        Genre if asc => desc, if desc => asc
        En remettant la même chose, mais inversée ?
        Hihi, ça va finir par faire 15 kms ça, vu que je le mets sur 4 liens :-)
        1. Oui pour le ) c'est un tit oubli ^^

          Heu ben normalement ca doit marcher pour le retour aussi avec le else, sinon a la place du else, tu met
          <?php } elseif($_SERVER['REQUEST_URI'] == "........=asc")
          {
          ?>
            <a href=".........=desc">blabla</a>
          <?php } ?>
          
      6. Je viens tout simplement de tout rassembler, entre les <? ---- ?> avec le 1er code.
        C'était peut être ça, ou sinon, il y avait un espace en trop, avant des ", dans ce que tu avais écris, et j'ai enlevé les / en début de lien.
        Donc, en gros, je sais pas vraiment ce qui a fait que ça marche. ^_^
        En tous cas, merci pour ton aide, ça va impecc :-)