36 votes

MySQL/SQL récupère les 40 premiers caractères d'un champ texte ?

Comment puis-je extraire un champ de texte d'une table mysql db, mais pas le texte entier, juste les quelques 40 caractères environ.

Cela peut-il être fait en sql ou dois-je le faire en utilisant php ?

En fait, ce que j'essaie de faire, c'est d'afficher les x premiers caractères, puis de laisser l'utilisateur cliquer dessus pour afficher le contenu complet.

60voto

jensgram Points 18047
SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ...

Voir le LEFT() fonction.

En tant que règle d'or vous ne devez jamais faire en PHP ce que MySQL peut faire pour vous. Pensez-y de cette façon : Vous ne voulez pas transmettre plus que ce qui est strictement nécessaire de la base de données aux applications requérantes.


EDITAR Si vous allez utiliser l'ensemble des données sur la même page (c'est-à-dire sans demande intermédiaire), le plus souvent, il n'y a pas de raison no pour récupérer le texte complet en une seule fois. (Voir les commentaires et Réponse de Veger .)

0 votes

La version complète est requise lorsque l'utilisateur clique dessus, donc vous transmettez maintenant plus d'informations : la chaîne courte y la chaîne complète ! Vous brisez ainsi votre propre règle du pouce...

0 votes

@Veger Pas nécessairement. Vous avez peut-être raison, mais le PO ne mentionne qu'un "clic" - il pourrait s'agir d'un lien vers une page contenant le texte intégral (par exemple, un article d'actualité), auquel cas vous ne souhaitez pas le récupérer intégralement pour générer une liste d'accroches. En d'autres termes : Étant donné la quantité de détails que je ne peux pas donner le site Il ne s'agit pas de la meilleure façon de procéder, mais simplement d'une règle empirique (qui, par nature, est souvent, mais pas toujours, exacte).

0 votes

Sur la page d'accueil de mon site Web, je vais permettre aux utilisateurs de voir les derniers messages d'un forum et, s'ils cliquent dessus, ils passeront au message du forum. C'est un peu comme une page d'actualités où vous cliquez pour accéder à l'article complet.

5voto

Cocowalla Points 4798
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE

Fonction dans le manuel de référence de MySQL :

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left

3voto

jeswin Points 59

Essayez ceci...
SELECT LEFT(nom du champ, 40) FROM nom de la table WHERE condition pour les 40 premiers et
SELECT RIGHT(nom du champ, 40) FROM nom de la table WHERE condition pour les 40 dernières années

1voto

Veger Points 17657

Vous pourriez le faire en SQL comme les autres l'ont déjà montré.

Mais, si vous également vous voulez afficher le texte complet si l'utilisateur clique dessus, vous avez également besoin du texte complet et il semble inutile de laisser la base de données vous envoyer le texte court et le texte complet. Vous pourriez donc récupérer le texte complet et écrire un code pour afficher le texte court et le texte complet lorsque l'utilisateur clique dessus.

$result = mysql_query('SELECT text FROM table');
$row = mysql_fetch_row($result);
echo '<div onclick="alert(\''.$row[0].'\');">'.substr($row[0], 0, 40).'</div>';

Bien sûr, vous pourriez faire quelque chose de plus sympa lorsque vous cliquez dessus (au lieu de alert() ). Vous pourriez également effectuer des vérifications en PHP pour voir si l'original est plus court que 40 caractères et gérer des situations comme celle-ci.

0 votes

Exactement ! Si le texte entier doit être utilisé plus souvent qu'autrement, il n'y a pas de raison no pour aller chercher tout ça en même temps.

0 votes

On peut supposer que John veut le texte court parce que l'utilisateur ne veut que le texte court pour la plupart des lignes et peut-être seulement le texte complet pour quelques lignes ? Soit cela, soit l'utilisateur cliquera pour afficher une nouvelle page contenant d'autres informations.

0voto

Mahendra Points 474

Vérifiez aussi celui-là,

 mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X