Forum Programmation.php affichage résumé...

Posté par  .
Étiquettes : aucune
0
21
avr.
2005
Bonjour à tous,
J'aimerais savoir si on peut afficher qu'une petite partie dans texte qui sort d'une bdd.
Je m'explique : J'ai un champ de blabla dans ma base de donnée et j'aimerais n'afficher que les deux premieres lignes de ce champs (ou les 200 premiers caractéres par exe).
Est ce possible lors de la requete SQL (ma base est Mysql) ou lors de l'affichage de la variable $blabla en php ??

Merci pour le coup de pouce.
  • # Tout simple

    Posté par  (site web personnel) . Évalué à 2.

    Pour afficher les 200 premiers caractères de ta requête par exemple, il suffit d'utiliser dans ton code php la fonction substr() :

    <?php
    $tronque = substr($chaine_resultat_de_ta_requete, 0, 200);
    echo "\n<p>$tronque ...</p>\n";
    ?>

    Consulte la doc php, dans la partie chaîne de caractère...
    • [^] # Re: Tout simple

      Posté par  (site web personnel, Mastodon) . Évalué à 4.

      c'est surement peu plus propre de le faire au niveau SQL, j'entends par là si le champ est un texte qui peu être plus ou moins grand , on economise de la mémoire et peu être un peu de temps processeur (important si ce genre de requete reviens à tour de bras (voir même un peu de bande passante selon la configuration) !

      en SQL (testé sous mysql uniquement) cela donne :

      SELECT LEFT(mon_champ, 200) FROM ma_table WHERE ma_condition ...

      M.
      • [^] # Re: Tout simple

        Posté par  . Évalué à 2.

        c'est surement peu plus propre de le faire au niveau SQL,

        pas sûr. car ta fonction LEFT va être appelée autant de fois qu'il y aura
        de tuples dans la réponse.
        Donc, suivant les cas il faudra mieux charger le serveur web tantôt le serveur de bdd.
        Si les 2 sont sur la même machine, il faut faire des essais de performance.

        Sous grosse charge, je créerais une table auxiliaire stockant ce résumé pour éviter de l'extraire à chaque fois. (on perd en place disque
        mais le disque est mons cher que le cycle)
  • # Et du coté de mysql

    Posté par  (site web personnel) . Évalué à 3.

    C'est un truc du genre SELECT SUBSTRING(champ, 0, 200) FROM table .

    Voir http://dev.mysql.com/doc/mysql/fr/string-functions.html(...)
  • # Directement en SQL

    Posté par  . Évalué à 3.

    Hello,

    la fonction substr de php citée au-dessus est aussi une fonction SQL native.
    Tu peux faire un SELECT SUBSTR(commentaire,1,200) par exemple pour récupérer les 200 caractères à partir de la position 1 dans le champ commentaire.

    L'utiliser au niveau de la requête peut avoir un impact positif sur les performances, surtout si tes champs sont gros, puisque cela évite de transférer l'intégralité des données vers php.

    J'utilisais personnellemnt "concat(substring(articles.Contenu,1,60),'[...]')" dans un select.
    Je ne sais pas si concat n'est pas spécifique à MySql, à contrôler, mais de toutes façons, l'équivalent existe partout, pour avoir les 60 premiers caractères d'un texte suivui de "[...]"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.