Page 1 sur 1

Requete SQL "LIMIT"

Posté : 04 janv. 2006, 00:23
par Jade
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 !

Posté : 04 janv. 2006, 00:32
par Cyrano
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.

Posté : 04 janv. 2006, 00:34
par Truc
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:

Posté : 04 janv. 2006, 01:21
par Jade
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 ?

Posté : 04 janv. 2006, 01:25
par Cyrano
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

Posté : 04 janv. 2006, 01:56
par Jade
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é...

Posté : 04 janv. 2006, 02:08
par Truc
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

Posté : 04 janv. 2006, 02:11
par Nico128
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.

Posté : 04 janv. 2006, 02:46
par Jade
Merci a tous :wink: