Page 1 sur 1

Ne sélectionner que les 1er caractères d'un champ TEXT ?

Posté : 15 août 2005, 11:44
par Twiny
Bonjour,

j'ai effectué des recherches sur les différentes parties du forum mais je n'ai pas trouvé ma réponse, aussi je crée un nouveau sujet.

Ma table "messages" contient des informations relatives à des messages (titre, heure..) et notamment le message en lui meme, stocké dans la table dans un champ TEXT.
Je voudrais n'afficher que le début de chaque message sur une page, pour créer un lien qui renvoie au message en entier.

Seulement je ne sais pas comment faire avec le fonction SELECT pour limiter les caractères à selectionner. Faut il le faire avec cette fonction select ? Ou alors selectionner tout l'enregistrement et trouver un moyen de limiter l'affichage aux premiers caractères en php ou en html ?

Merci de prendre de votre temps :wink:

Posté : 15 août 2005, 13:02
par Ripat
Je ne vois pas trop comment faire (simplement) dans une requête MySQL. Par contre PHP est particulièrement riche en fonctions de traitement de chaînes.

Vois du côté de substr(), strpos(), strlen()

Ou bien les regex, si tu aimes.

Une solution simple (mais pas optimale):
$chaine='Texte à couper, à une longueur plus ou moins fixe';

// position du premier espace qui suit le 25éme caractère
$pos = strpos($chaine, ' ', 25);

// coupure de la phrase
echo substr($chaine, 0, $pos);

Posté : 15 août 2005, 16:48
par Twiny
Quel imbécile, les fonctions de manipulations de chaînes m'étaient complètement sorti de la tête !

J'ai suivi ton conseil en faisant encore plus simple :
echo substr($data['message'], 0,500);
Et voilà, cela ne me retourne que les 500 premiers caractères de mon texte, c'est parfait ! :)

Merci beaucoup :D

Posté : 15 août 2005, 17:27
par Ripat
J'ai suivi ton conseil en faisant encore plus simple :
echo substr($data['message'], 0,500);
Et voilà, cela ne me retourne que les 500 premiers caractères de mon texte,
Suffit effectivement si tu acceptes qu'un mot soit coupé en plein milieu.

Posté : 16 août 2005, 12:25
par pjl
La question initiale était liée à MySQL et pas au PHP.

Tu trouveras ce qu'il te faut ici : http://www.nexen.net/docs/mysql/annotee ... ract%E8res

A priori, la fonction LEFT devrait convenir.

Posté : 16 août 2005, 15:44
par Ripat
Ca n'a pas l'air de gêner grand monde de couper un mot en plein milieu mais bon....:wink:

J'aime le culturisme coupé à 13 caractères va mettre de l'ambiance sur le site... \:D/

Je ne dis plus rien :arrow:

Posté : 17 août 2005, 20:36
par Twiny
Pjl, les fonctions de traitements de chaine en PHP m'ont suffit pour faire ce que je voulais, mais je vais jeter un oeil à ton lien ! :wink:

Et en fait j'ai retenu la solution initiale de Ripat, pour ne pas couper le mot en plein milieu :roll: