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 Michel Petit (site web personnel) . Évalué à 2.
<?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 kolter (site web personnel, Mastodon) . Évalué à 4.
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 B. franck . Évalué à 2.
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 niol (site web personnel) . Évalué à 3.
Voir http://dev.mysql.com/doc/mysql/fr/string-functions.html(...)
# Directement en SQL
Posté par Christophe Chailloleau-Leclerc . Évalué à 3.
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 "[...]"
[^] # Re: Directement en SQL
Posté par roule007 . Évalué à 1.
REACTION TRES RAPIDE ET PERFORMANTE !!!
TROP COOL.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.