Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur SQL

    26 novembre 2005 à 17:38:45

    Salut,
    je viens d'avoir une erreur SQL.

    Citation : SQL

    MySQL fetch_array not supplied argument



    Ou quelques chose comme ça.
    Bien sur je rajoute sur ma requete SQL précédente

    Citation

    or die(mysql_error())



    Il me dit qu'il y a une erreur de syntaxe pres de WHERE à la ligne 1.

    Voici mon code :

    <html>
            <head>
                    <title>Ext1cti0n's Blog</title>
                    <link rel="stylesheet" media="screen" name="defaut" href="css.css" type="text/css" />
            </head>
            <body>
                    <div id="menu">
                            <div class="ss_menu">
                                    <h3>Catégories</h3>
                                    <ul>
                                            <a href="?cat=generale"><li>Générale</li></a>
                                            <a href="?cat=lycee"><li>Lycée</li></a>
                                            <a href="?cat=divers"><li>Divers</li></a>
                                    </ul>
                            </div>
                            <div class="ss_menu">
                                    <h3>Liens</h3>
                                    <ul>
                                            <a href="http://www.zordania.com/"><li>Zordania</li></a>
                                            <a href="http://www.kraland.org/"><li>Kraland</li></a>
                                            <a href="http://www.planete007.com/"><li>Planete007</li></a>
                                            <a href="http://www.jamesbond.com/"><li>JamesBond.com</li></a>
                                    </ul>
                            </div>
                    </div>
                    <div id="corps">
                            <?php
                                    mysql_connect('
    localhost', 'root', '');
                                    mysql_select_db('
    blog');
                                   
                                    $brut = mysql_query("SELECT * FROM art ORDER BY ID DESC WHERE cat='
    generale'";) or die(mysql_error());
                                    while($art = mysql_fetch_array($brut))
                                    {
                            ?>           
                                            <div class="art">
                                                    <h2><?php echo $art['
    titre']; ?></h2>
                                                    <p><?php echo $art['
    contenu']; ?></p>
                                                    <p class="petit">
                                                            Ecrit par <?php echo $art['
    pseudo']; ?>, le <?php echo date('d/m/Y', $art['time']); ?>, à <?php echo date('H\h i\m\n s\s', $art['time']); ?><br />
                                                            Article numero : <?php echo $art['
    ID']; ?><br />
                                                            Catégorie : <?php echo $art['
    cat']; ?>
                                                    </p>
                                            </div>
                            <?
                                    }
                            ?>
                    </div>
            </body>
    </html>   


    J'ai mis en rien la ligne d'erreur, car ça marche pas avec la balise PHP Code ;)
    Et je trouve pas l'erreur de syntaxe. :(
    Pouvez-vous m'aider ?

    D'avance merci ! ;)
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2005 à 17:42:25

      le ; doit être avant le " final ...

      Edit: Et le WHERE doit être avant le ORDER BY
      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2005 à 17:43:44

        Le WHERE doit être avant le ORDER BY :
        mysql_query('SELECT * FROM `art` WHERE `cat`="generale" ORDER BY `ID` DESC')


        Amicalement

        T@kniX

        Edit : Grillé ^^
        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2005 à 17:48:54

          T@kniX, si tu mets uniquement la requête sql dans une balise code SQL, faut pas mettre d'apostrophes autour, hein, sinon ya pas de coloration syntaxique :D ( enfin si, la chaine de caractère ( c-à-d tout ta requête :D ) est colorée en rouge ^^

          Et aussi, le ; doit se trouver avant l'apostrophe finale :)

          SELECT * FROM `art` WHERE `cat`="generale" ORDER BY `ID` DESC;


          Edit: Eh oui lol :p
          • Partager sur Facebook
          • Partager sur Twitter
            26 novembre 2005 à 17:53:57

            Merci Shepard mais j'ai compris entre temps.

            En fait je voulais mettre les apostrophes pour différencier
            mysql_query('SELECT * FROM `art` WHERE `cat`="generale" ORDER BY `ID` DESC')


            Et
            mysql_query("SELECT * FROM `art` WHERE `cat`='generale' ORDER BY `ID` DESC")

            La première étant plus rapide que la seconde.

            Même si mettre le ; dans la requête est plus correct, ce n'est pas indispensable il me semble.
            Je me trompe ?
            • Partager sur Facebook
            • Partager sur Twitter
              26 novembre 2005 à 18:02:29

              Merci !
              Maintenant j'ai un autre problème :euh:

              mysql_query('SELECT * FROM art WHERE cat=' . $_GET['cat'] . 'ORDER BY ID DESC;')


              Me répond erreur de synthaxe près de 'ORDER BY ID DESC;' o_O

              Je me suis dit que j'ai fait une erreur dans ma concaténation, mais je la vois pas !
              J'ai essayé avec des doubles guillemets, et j'ai essayé de mettre 'WHERE cat=' après 'ORDER BY ID DESC'
              Mais rien ne marche :(

              Pouvez vous me réaidé.
              D'avance merci !
              • Partager sur Facebook
              • Partager sur Twitter
                26 novembre 2005 à 18:20:05

                mysql_query('SELECT * FROM `art` WHERE `cat`="'.$_GET['cat'].'" ORDER BY `ID` DESC;')


                $_GET['cat'] étant du texte, tu dois l'encadrer par des "

                Amicalement

                T@kniX
                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2005 à 18:29:42

                  Citation : T@kniX


                  $_GET['cat'] étant du texte, tu dois l'encadrer par des "



                  Ca marche merci, mais je comprends pas.

                  $_GET['cat'] est une variavle, pas du texte.

                  Et par exemple, si je veux l'écrire, je tape :

                  <?php echo 'La catégorie est : ' . $_GET['cat'] ?>


                  Donc $_GET['cat'] étant une variable, est sépéré du texte, et la on l'encadre pas avec des doubles guillemets o_O

                  Je suis un peu perdu !
                  Si qq peut m'expliquer !

                  D'avance merci !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2005 à 18:33:37

                    La concenation est differente dans le mysql_query.
                    Tu aurais pu ecrire

                    mysql_query('SELECT * FROM art WHERE cat='$_GET['cat']'ORDER BY ID DESC;')

                    mais la plupart du temps pour eviter des erreurs , on fait comme M.T@Knix
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 novembre 2005 à 22:09:35

                      J'ai encore un problème de syntaxe SQL :euh:

                      <html>
                              <head>
                                      <title>Ext1cti0n's Blog</title>
                                      <link rel="stylesheet" media="screen" name="defaut" href="css.css" type="text/css" />
                              </head>
                              <body>
                                      <h1>Ext1cti0n-007'
                      s Blog</h1>
                                      <div id="menu">
                                              <div class="ss_menu">
                                                      <h3>Catégories</h3>
                                                      <ul>
                                                              <a href="index.php"><li>Toutes</li></a>
                                                              <a href="?cat=generale"><li>Générale</li></a>
                                                              <a href="?cat=lycee"><li>Lycée</li></a>
                                                              <a href="?cat=divers"><li>Divers</li></a>
                                                      </ul>
                                              </div>
                                              <div class="ss_menu">
                                                      <h3>Liens</h3>
                                                      <ul>
                                                              <a href="http://www.zordania.com/"><li>Zordania</li></a>
                                                              <a href="http://www.kraland.org/"><li>Kraland</li></a>
                                                              <a href="http://www.planete007.com/"><li>Planete007</li></a>
                                                              <a href="http://www.jamesbond.com/"><li>JamesBond.com</li></a>
                                                      </ul>
                                              </div>
                                      </div>
                                      <div id="corps">
                                              <?php
                                                      if(isset($_GET['nwsid']))
                                                      {
                                                              if (isset($_POST['pseudo']) AND isset($_POST['com']))
                                                              {
                                                                      mysql_connect('localhost', 'root', '');
                                                                      mysql_select_db('blog');
                                                                     
                                                                      mysql_query("INSERT INTO com VALUES('', '" . $_GET['nwsid'] . "', '" . $_POST['pseudo'] . "', '" . $_POST['com'] . "', '" . time() . "')");
                                                              }
                                                             
                                                              mysql_connect('localhost', 'root', '');
                                                              mysql_select_db('blog');
                                                             
                                                              $brut_art_com = mysql_query('SELECT * FROM art WHERE ID="'.$_GET['nwsid'].'"ORDER BY ID DESC;');
                                                              while($art_com = mysql_fetch_array($brut_art_com))
                                                              {
                                              ?>
                                                                      <div class="art">
                                                                              <h3><?php echo $art_com['titre']; ?></h3>
                                                                              <p><?php echo $art_com['contenu']; ?></p>
                                                                              <p class="petit">
                                                                                      Ecrit par <?php echo $art_com['pseudo']; ?>, le <?php echo date('d/m/Y', $art_com['time']); ?>, à <?php echo date('H\h i\m\n s\s', $art_com['time']); ?><br />
                                                                                      Article numero : <?php echo $art_com['ID']; ?><br />
                                                                                      Catégorie : <?php echo $art_com['cat']; ?>
                                                                              </p>
                                                                      </div>
                                                                      <h3>Commentaires :</h3>
                                              <?php
                                                              }
                                                              $brut_com = mysql_query('SELECT * FROM com WHERE ID_news="'.$_GET['nwsid'].'"ORDER BY ID DESC;');
                                                              while($com = mysql_fetch_array($brut_com))
                                                              {
                                              ?>
                                                                      <div class="art">
                                                                              <p><?php echo $com['text']; ?></p>
                                                                              <p class="petit">Ecrit par <?php echo $com['pseudo']; ?>, le <?php echo date('d/m/Y', $com['time']); ?>, à <?php echo date('H\h i\m\n s\s', $com['time']); ?></p>
                                                                      </div>
                                              <?php
                                                              }
                                              ?>
                                                              <p>
                                                                      <form method="post" action='index.php?nwsid=<?php echo $_GET['nwsid']?>'>
                                                                              Pseudo : <input type="text" name="pseudo" /><br />
                                                                              Commentaire :<br /><textarea name="com" rows="10"></textarea><br />
                                                                              <input type="submit" />
                                                                      </form>
                                                              </p>
                                              <?php
                                                      }
                                                      else
                                                      {
                                                              if(isset($_GET['cat']))
                                                              {
                                                                      mysql_connect('localhost', 'root', '');
                                                                      mysql_select_db('blog');
                                                                     
                                                                      $brut_art = mysql_query('SELECT * FROM art WHERE cat="' . $_GET['cat'] . '"ORDER BY ID DESC') or die(mysql_error());
                                                                      while($art = mysql_fetch_array($brut_art))
                                                                      {
                                              ?>           
                                                                              <div class="art">
                                                                                      <h3><?php echo $art['titre']; ?></h3>
                                                                                      <p><?php echo $art['contenu']; ?></p>
                                                                                      <p class="petit">
                                                                                              Ecrit par <?php echo $art['pseudo']; ?>, le <?php echo date('d/m/Y', $art['time']); ?>, à <?php echo date('H\h i\m\n s\s', $art['time']); ?><br />
                                                                                              Article numero : <?php echo $art['ID']; ?><br />
                                                                                              Catégorie : <?php echo $art['cat']; ?>
                                                                                      </p>
                                                                                      <p class="center">
                                                                                              <a href='index.php?nwsid=<?php echo $art['ID']?>'>Commentaire()</a>
                                                                                      </p>
                                                                              </div>
                                              <?
                                                                      }
                                                              }
                                                              else
                                                              {
                                                                      mysql_connect('localhost', 'root', '');
                                                                      mysql_select_db('blog');
                                                                     
                                                                      $brut_art = mysql_query('SELECT * FROM art ORDER BY ID DESC;') or die(mysql_error());
                                                                      while($art = mysql_fetch_array($brut_art))
                                                                      {
                                                                      $nbr_com_brut = mysql_query('SELECT COUNT (*) AS nbr_com FROM com WHERE ID_news=' . $art['ID']) or die(mysql_error());
                                                                      $nbr_com = mysql_fetch_array($nbr_com_brut);
                                              ?>           
                                                                              <div class="art">
                                                                                      <h3><?php echo $art['titre']; ?></h3>
                                                                                      <p><?php echo $art['contenu']; ?></p>
                                                                                      <p class="petit">
                                                                                              Ecrit par <?php echo $art['pseudo']; ?>, le <?php echo date('d/m/Y', $art['time']); ?>, à <?php echo date('H\h i\m\n s\s', $art['time']); ?><br />
                                                                                              Article numero : <?php echo $art['ID']; ?><br />
                                                                                              Catégorie : <?php echo $art['cat']; ?>
                                                                                      </p>
                                                                                      <p class="center">
                                                                                              <a href='index.php?nwsid=<?php echo $art['ID']?>'>Commentaire(<?php echo $nbr_com['nbr_entre']; ?>)</a>
                                                                                      </p>
                                                                              </div>
                                              <?
                                                                      }
                                                              }
                                                      }
                                              ?>
                                      </div>
                              </body>
                      </html>


                      Si quelques peut encore m'aider !
                      D'avance merci !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 novembre 2005 à 12:36:11

                        Citation : Ext1cti0n-007

                        Ca marche merci, mais je comprends pas.

                        $_GET['cat'] est une variavle, pas du texte.

                        Et par exemple, si je veux l'écrire, je tape :

                        Code : PHP
                        <?php echo 'La catégorie est : ' . $_GET['cat'] ?>


                        Donc $_GET['cat'] étant une variable, est sépéré du texte, et la on l'encadre pas avec des doubles guillemets o_O

                        Je suis un peu perdu !
                        Si qq peut m'expliquer !

                        D'avance merci !



                        Mettons $_GET['cat']='php';
                        Alors quand tu veux affficher du texte tu fais echo 'La catégorie est : '.$_GET['cat']; ce qui donne La catégorie est : php

                        Par contre dans la requête
                        mysql_query('SELECT * FROM `art` WHERE `cat`='.$_GET['cat'].' ORDER BY `ID` DESC;')
                        tu auras
                        mysql_query('SELECT * FROM `art` WHERE `cat`=php ORDER BY `ID` DESC;')

                        Le problème vient du `cat`=php, php est une chaine de caractère il faut donc faire `cat`="php" d'où la requête
                        mysql_query('SELECT * FROM `art` WHERE `cat`="'.$_GET['cat'].'" ORDER BY `ID` DESC;')


                        Voilà en espérant avoir été clair.


                        Citation : canard_bleu

                        La concenation est differente dans le mysql_query.
                        Tu aurais pu ecrire


                        mysql_query('SELECT * FROM art WHERE cat='$_GET['cat']'ORDER BY ID DESC;')


                        mais la plupart du temps pour eviter des erreurs , on fait comme M.T@Knix


                        Non, si il avait écrit celà il aurait eu une erreur.
                        La meilleure solution est celle que j'ai donné.


                        Ext1cti0n-007 => Quelle est l'erreur ? Quelle est la requête en cause ?


                        Amicalement

                        T@kniX
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 novembre 2005 à 13:49:57

                          J'ai compris merci !

                          Nan c'est bon, l'erreur c'était :

                          $nbr_com_brut = mysql_query('SELECT COUNT (*) AS nbr_com FROM com WHERE ID_news=' . $art['ID']) or die(mysql_error());


                          J'ai fait ça et ça a marché :


                          $nwsid = $_GET['nwsid'];
                          $nbr_com_brut = mysql_query('SELECT COUNT (*) AS nbr_com FROM com WHERE ID_news=' . $nwsid) or die(mysql_error());
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Erreur SQL

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown