Partage
  • Partager sur Facebook
  • Partager sur Twitter

création de page auto

    31 décembre 2005 à 0:04:11

    Voila ce que j'ai fait mais ca ne marche pas (j'ai peut etre mal fait! :/ )

    <?php
            if(isset($_GET['lettre']))
    {
       $lettre = htmlentities($_GET['lettre']);

       $search = mysql_query('SELECT DISTINCT groupe FROM chroniques');
       
       while($result = mysql_fetch_array($search))
       {
         if(preg_match('!^'.$lettre.'(.*)!isU', $result['groupe']))
         {
               $groupe[] = $result['groupe'];
         }
             else
         {
               $groupe = null;
         }
       }


         if(isset($groupe))
         {
         $nba = count($groupe);
               // le reste du code
            echo '<p>Il n\'y a aucun groupe commençant par la lettre '.$lettre.'.</p>';
         }

                           
         else
         {
         for($i = 1 ; $i <= $nba ; $i++)
         {
         echo '<h2>'.$groupe[($i-1)].'</h2>';

         }
         }
    }
    ?>


    Pour la lettre M (chronique la plus récente et donc la seul qui s'affiché avant) sa me mets qu'il n'y a pas de chronique et pour les autres (A ET E) ca me mets ceci :

    Notice: Undefined variable: nba in c:\testphp\list_chro.php on line 60


    la ligne 60 est celle ci :

         for($i = 1 ; $i <= $nba ; $i++)


    J'ai mis le fichier list_chro.php modifier sur le site (donc tu peux voir par toi même le bug si tu veux).
    ;)
    • Partager sur Facebook
    • Partager sur Twitter
      31 décembre 2005 à 0:07:27

      Citation : scaler


      Pour les doublons, si tu ne désires lister que les noms de groupe, pourquoi ne pas faire :

      SELECT DISTINCT `groupe` FROM `chroniques`



      ++



      il y aurais aussi

      SELECT `groupe` FROM `chroniques` WHERE groupe LIKE 'a%'



      ce qui te donnera la liste des groupes qui commence par A ou a, corrigé moi si je me trompe :p

      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2005 à 0:19:05

        Ouaip sauf que la ca me donnera que les groupes commencent par A!
        Si je clique sur B ca me donnera uniquement les A! Ou alors faudrait que je fasse une page par lettre ce qui n'est pas très pratique! Enfin la dessus j'ai pas de problème avec cette partie du code de toute façon! :p

        J'espère que quelqu'un pourra m'aider pour mon souci... ;)
        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2005 à 1:21:05

          Ouaip, c'est pas tout à fait ça :p

          <?php
          if(isset($_GET['lettre']))
          {
             $lettre = htmlentities($_GET['lettre']);

             $search = mysql_query('SELECT DISTINCT groupe FROM chroniques');
             
             while($result = mysql_fetch_array($search))
             {
               if(preg_match('!^'.$lettre.'(.*)!isU', $result['groupe']))
               {
                     $groupe[] = $result['groupe']; // on stocke les noms commencant par la lettre récupérée..
               }
             }


               if(isset($groupe)) // si la variable groupe existe
               {
                  $nba = count($groupe);

                  for($i = 1 ; $i <= $nba ; $i++)
                  {
                      echo '<h2>'.$groupe[($i-1)].'</h2>';

                  }
               }
          }
          ?>


          Voilà, si cela marche ainsi, tu peux rajouter un else pour dire ce que tu veux si $groupe n'existe pas.
          Enfin, si tu désires constituer une liste de noms, remplace h2 par une liste ul, ce sera plus sémantiquement correct en Xhtml ;)

          bon courage
          • Partager sur Facebook
          • Partager sur Twitter
            31 décembre 2005 à 1:29:44

            Ca marche nikel maintenant!!! ^^

            Merci pour beaucoup de ton aide et pour ta patiente!! ;)
            • Partager sur Facebook
            • Partager sur Twitter
              31 décembre 2005 à 1:45:03

              Le (.*) du preg_match est-il vraiment nécessaire? Parce que ça revient un peut au même de dire "je veux que ma chaine commence par a et qu'elle soit suivie par quelque chose ou rien" et "je veux que ma chaine commence par un a" non?

              D'ailleur, un preg_match est il vraiement nécessaire? un strpos (par exemple) serait peut etre suffisant (et surtout moins gourmand en ressource), Ou encore mieux, juste une condition sur la première lettre: $variable{0} (pour la chaine contenue dans $variable evidement)...

              Encore mieux, on peux economiser de la bande passante en ne demandant à mysql que ce qu'on veux: on place l'expression regulière dans la requete (comme proposé, sauf qu'il à été oublier qu'on pouvait mettre des variables dans la requete à envoyer à mysql: ce n'est qu'une chaine de caractère après tout)...

              Bref, pourquoi utiliser les preg_* à tout va quand on en à pas besoin?
              • Partager sur Facebook
              • Partager sur Twitter
                31 décembre 2005 à 12:44:46

                Salut!! (encore moi :p )

                Maintenant que les liens "lettre => nom des groupes" marche, j'aimerais faire les liens "nom des groupes => album des groupes".

                Donc je suppose qu'il y a un "<a href=" à mettre sur cette ligne :
                echo '<h2>'.$groupe[($i-1)].'</h2>';

                Mon champs d'album s'apel tous simplement "album" et ma table "chroniques".

                La page ou doit s'afficher les résultats est "list_chro2.php".
                Que dois je mettre dans cette page?
                La même chose que dans la précédente à savoir :
                <?php
                if(isset($_GET['lettre']))
                {
                   $lettre = htmlentities($_GET['lettre']);

                   $search = mysql_query('SELECT DISTINCT groupe FROM chroniques');
                   
                   while($result = mysql_fetch_array($search))
                   {
                     if(preg_match('!^'.$lettre.'(.*)!isU', $result['groupe']))
                     {
                           $groupe[] = $result['groupe']; // on stocke les noms commencant par la lettre récupérée..
                     }
                   }


                     if(isset($groupe)) // si la variable groupe existe
                     {
                        $nba = count($groupe);

                        for($i = 1 ; $i <= $nba ; $i++)
                        {
                        echo '<h2>'.$groupe[($i-1)].'</h2>';
                        }
                     }
                         else
                         {
                         echo '<p>Il n\'y a aucun groupe commençant par la lettre '.$lettre.'.</p>';
                         }
                }
                ?>

                En changent les variables ou y a t-il des choses à rajouter ou à enlever?
                Merci! ;
                @+ et bonne année! :p
                • Partager sur Facebook
                • Partager sur Twitter
                  1 janvier 2006 à 21:45:14

                  Je fais un petit up si quelqu'un peut m'aider!! :p

                  (Bonne Année à tous!! ;) )
                  • Partager sur Facebook
                  • Partager sur Twitter

                  création de page auto

                  × 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