Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème requetes Mysql

mon premier message !

    12 février 2006 à 12:12:53

    Hey tout le monde !
    je suis un nouveau inscrit, c'est mon premier message, donc voila, bonjuour tout le monde !

    Voici mon problème, j'ai un site d'actualité et j'aimerai optimiser mes requêtes mySQL, voici la maniere dont l'affichage de mes news sont faits (j'ai zappé beaucoup de trucks, j'ai juste mis l'essentiel)



    <?php
    // Récupération des dernières news

    $date_news_avant = "";
    $now = time();
    $i=0;
    $sql_news = "SELECT * FROM xtnews_news WHERE active='1' AND date_news<$now ORDER by date_news DESC LIMIT 18";
    $req_news = mysql_query($sql_news) or die('Erreur SQL !<br>'.$sql_news.'<br>'.mysql_error());

    while($data = mysql_fetch_assoc($req_news))
    {
            $titre_n = stripslashes($data['titre']);
            if(strlen($titre_n) > 35)
            {
                    $titre_n = substr($titre_n, 0, 35);
                    $titre_n = $titre_n."…";
            }

            $ia = stripslashes($data['icone']);
            $icon_n_bis = "<img src=\"".$ia."\" border=0>";

            $date_news = $data['date_news'];
            $date = date('d-m-Y',$date_news);
            $time = date('H:i',$date_news);
            if($date==date("d-m-Y"))
            {
                    $time = "<font color=red>".$time."</font>";
                    $date = "Aujourd'hui";
            }
            elseif($date==date("d-m-Y",strtotime('-1 day')))
            {
                    $date = "Hier";
            }
            else
            {
                    $date1 = date('D',$date_news);
                    $date2 = date('d',$date_news);
                    $date3 = date('n',$date_news);

                    if ($date1 == "Mon")
                            {$date5 = "Lundi";}
                    elseif ($date1 == "Tue")
                            {$date5 = "Mardi";}
                    elseif ($date1 == "Wed")
                            {$date5 = "Mercredi";}
                    elseif ($date1 == "Thu")
                            {$date5 = "Jeudi";}
                    elseif ($date1 == "Fri")
                            {$date5 = "Vendredi";}
                    elseif ($date1 == "Sat")
                            {$date5 = "Samedi";}
                    else
                            {$date5 = "Dimanche";}

                    if ($date3 == "01")
                            {$date6 = "Janvier";}
                    elseif ($date3 == "02")
                            {$date6 = "Février";}
                    elseif ($date3 == "03")
                            {$date6 = "Mars";}
                    elseif ($date3 == "04")
                            {$date6 = "Avril";}
                    elseif ($date3 == "05")
                            {$date6 = "Mai";}
                    elseif ($date3 == "06")
                            {$date6 = "Juin";}
                    elseif ($date3 == "07")
                            {$date6 = "Juillet";}
                    elseif ($date3 == "08")
                            {$date6 = "Août";}
                    elseif ($date3 == "09")
                            {$date6 = "Septembre";}
                    elseif ($date3 == "10")
                            {$date6 = "Octobre";}
                    elseif ($date3 == "11")
                            {$date6 = "Novembre";}
                    else
                            {$date6 = "Décembre";}

                    $date = $date5." ".$date2." ".$date6;
            }
            if($date_news_avant != $date)
            {
                    if($i!=0)
                    {
                            echo "<tr><td height=12 colspan=2></td></tr>";
                    }
                    echo "<tr><td align=left colspan=2>&nbsp;&nbsp;<b>".$date."</b></td></tr>";
                    echo "<tr><td height=1 colspan=2></td></tr>";
                    echo "<tr><td height=1 bgcolor=#b6aac8 colspan=2></td></tr>\n";
            }

            <gras>$req_com_news = mysql_query('SELECT * FROM commentaires_news WHERE nom=' . $data['id'] . '');
            $res_com_news = mysql_num_rows($req_com_news);</gras>

            $coul = ' bgcolor=#e3e2ed';
            $fn = ' background=fn.bmp bgcolor=#e3e2ed';
            if ($i % 2)
            {
                    $coul = '';
                    $fn = '';
            }

            echo "<tr".$coul." height=14><td valign=middle width=360><div class=texte_news>&nbsp;".$icon_n_bis."&nbsp;".$time."&nbsp;-&nbsp;<a href=xtnews/news-".$data['id'].".htm>".$titre_n."</a> - <a href=xtnews/news-".$data['id'].".htm#commentaires><font size=1 color=#7e7a7a>(".$res_com_news." com.)</font></a></div></td><td".$fn." width=10></td></tr>\n";

            $date_news_avant = $date;
            $i++;
    }
    ?>





    Donc voila, à chaque boucle, le script fait une requete pour savoir le nombre total de commentaires de la news en question, est ce que cela bouffe de la resource ? (augmentation considérable du nombre de requete ?), si oui, comment faire un systeme simple et efficace fesant le moins de requetes possible ?

    Merci d'avance pour votre réponse :-)
    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2006 à 12:23:46

      déjà une requête dans une boucle, ca ne va pas. Fais un LEFT JOIN pour connaître le nombre de commentaires dans ta première requête ;)
      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2006 à 17:52:17

        merci !


        euuu, en fait je dit merci, mais, comment utilise t'on cette commande, j'ai cherché un peu, mais bof bof, dans mon script ça donnerai quoi?
        • Partager sur Facebook
        • Partager sur Twitter
          14 février 2006 à 11:53:19

          rajoute une colonne dans ta table pour les news, et met dedans le nombre de commentaires
          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2006 à 10:50:34

            ouai pourquoi pas, mais le probleme c'est que j'ai plus de 1500 news déjà postées, je fait quoi pour celles-ci: je rajoute une à une le nombre de commentaires ? ^^'
            • Partager sur Facebook
            • Partager sur Twitter

            Problème requetes Mysql

            × 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