Requete SQL "LIMIT"

Eléphant du PHP | 104 Messages

04 janv. 2006, 00:23

Bonsoir,

Dans mon système de News j'aimerai couper mon text après un certain nombre de caractère. Mais dans ma requete, j'ai déjà un LIMIT pour qu'il affiche les 5 dernière News...

Voila ma requete
SELECT * FROM news ORDER BY id DESC LIMIT 0, 5
Ça peut paraitre une question facile pour certain, mais moi les requetes, c'est vraiment un problème pour moi lol... J'ai essayer de après ma requete
'contenu LIMIT 0, 255'
, mais je sais même pas sur qu'on peut mettre deux LIMIT dans une requete.

Voila mon problème...

Merci d'avance !

Mammouth du PHP | 19672 Messages

04 janv. 2006, 00:32

La clause LIMIT comporte 2 paramètres : la ligne de départ et le nombre de lignes : donc LIMIT 0, 255 va afficher les 255 premières lignes (ou moins) correspondant aux champs correspondant aux autres clauses de tri.

Si tu ne veux qu'une partie du texte, tu as deux méthodes;
- La première consiste à récupérer les données complètes via ta requête SQL et ensuite à tronquer les textes par programmation en PHP pour l'affichage;
- La seconde consiste à tronquer les texte lors de la requête SQL. Il existe des fonctions dans MySQL pour ça : vsi ton champ contenant le texte est du type BLOB ou TEXT, tu peux faire :

Code : Tout sélectionner

SELECT SUBSTRING(nom_du_champ, 1, 255)...
Ce qui te retournera les 255 premiers caractères de la chaine contenue dans le champ.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 janv. 2006, 00:34

Salut,

tu veux utiliser une fonction pour couper la news depuis la requete dans ce cas il faut utiliser SubString() LIMIT est reservé pour le nombre de lignes de données revoyées par la requete.

Par contre du sera obligé de refaire une requete pour afficher le reste de la news.

EDIT: Lucky Cyrano :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 104 Messages

04 janv. 2006, 01:21

Merci tout les deux, j'ai un text de type TEXT alors je vais essayer en changent ma requete. Mais avec la nouvelle requete, il faut tu mettre le nom de la table ou qu'on veut se connecter, avant ou après... ou encore il faut faire la requete en deux parties...

J'ai essayer de remettre la suite après la ligne, mais sa marche pas... aussi sur le lien de Truc après les SUBSTRING entre les parenthèse les nom on tu de l'importance, ou c'est juste pour dure leur fonction ?

Mammouth du PHP | 19672 Messages

04 janv. 2006, 01:25

Non, tu peux faire ça en une seule requête du style:

Code : Tout sélectionner

SELECT SUBSTRING(nom_du_champ, 1, 255) FROM ta_table LIMIT 0, 10
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 104 Messages

04 janv. 2006, 01:56

J'ai essayer cette requete
SELECT SUBSTRING(contenu, 1, 255) FROM news ORDER BY id DESC LIMIT 0, 5
et dans ma page, il a des erreurs partout du style

Code : Tout sélectionner

Notice: Undefined index: titre in c:\documents and settings\mes documents\test\index.php on line 24
Tout les lignes ou c'est des infos d'un base de donné...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 janv. 2006, 02:08

certainement que tu veux faire appel au contenu du champ "titre" alors que tu ne l'as pas séléctionné dans la requete.
SELECT SUBSTRING(contenu, 1, 255) as txt ,titre FROM news ORDER BY id DESC LIMIT 0, 5
j'ai aussi ajouté un alias (as txt) pour faciliter la récupération du contenu:

apres un
$variable = mysql_fetch_array()

$variable['txt']; //contient la news coupée
$variable['titre']; //contient le titre

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 246 Messages

04 janv. 2006, 02:11

Salut ! Pour couper ta news d'après les caractère regarde ce lien http://www.phpscripts-fr.net/portions/portion.php?id=28

tu peux faire que cest coupé après le mot, plus 3 ptit point.

Eléphant du PHP | 104 Messages

04 janv. 2006, 02:46

Merci a tous :wink: