Aller au contenu

Sujets conseillés

Posté

Hello,

Bon troisième question en deux jours :)

Je fais une requête SQL via une page php et je voudrais limiter le nombre de ligne à la sortie.

Ex : le contenu de mon champ fait 277 lignes de texte, je voudrais que seul les 20 premières ressorte.

J'ai fait mes petites recherches et apparemment il y aurait une histoire de ROWNUM, mais je dois dire que les gens n'ont pas l'air vraiment d'accord sur son utilisation.

Pouvez vous m'éclairez là dessus ?

Merci d'avance à ceux qui me répondront

Kwent'

Posté

Tu veux limiter le nombre de résultats de la requête? Il faut utiliser LIMIT pour ça: http://dev.mysql.com/doc/refman/5.5/en/select.html#id826477

Si c'est le nombre de lignes de texte d'un résultat, ça va être plus subtil, parce que ça dépend de la largeur d'affichage, de la taille du texte, etc. En général on limite plutôt à un certain nombre de caractères, et on se débrouille pour couper au niveau d'un mot.

Si ce n'est aucun des deux que tu veux, il va falloir être plus précis, avec un exemple peut-être...

Jacques.

Posté

Hello Jacques,

Merci beaucoup pour ta réponse :)

Alors ce que je veux, c'est exactement ce que tu me cite après ton exemple de LIMIT.

En gros j'ai un champ de type TEXT qui fait :

"Youpi youpla j'aime le chocolat les chips la bière et les amandes"

Et sur ma page php je voudrais juste afficher "Youpi Youpla j'aime le chocolat" et mettre un lien "Lire plus" juste en dessous qui renvoie vers la page ou le texte en entier est affiché.

Donc ce dont j'ai besoin c'est surement de limiter le résultat a un certain nombre de caractères ... si tu as une piste pour moi j'en serait ravi !!

Merci encore

Kwent'

Posté

Si tu veux limiter "bêtement" à un certain nombre de caractères, alors substring en SQL (http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_substring) ou substr en php (http://php.net/manual/en/function.substr.php) sont tes amis.

Si tu veux faire un peu plus intelligent et couper entre deux mots plutôt que n'importe où, tu peux utiliser:

- substring_index en sql (substring_index(texte,' ',100) pour avoir les 100 premiers mots par exemple)

- strrpos en php pour chercher le dernier espace (et couper ensuite, donc ça donne substr($texte,0,strrpos($texte,' ',1000)) pour couper avant 1000 caractères par exemple)

- des regex en php

- tout plein d'autres méthodes probablement.

Jacques.

Posté

En fait je connais la méthode en php avec "strlen" et "strstr" mais la je fait une sélection au hasard avec une image un titre et un texte, sachant que "strlen" ne prend que des chaines de caractères en compte pas les tableaux (j'ai utilisé un "array_rand") ... donc pour etre tout a fait clair je cherche le moyen de le faire dans la requete SQL. ..

Ooooops je n'avais pas vu ta réponse ....

Merci bien je teste ça tout de suite, ça devrait marcher !!

Posté

Euh... Tu veux forcément le faire sur du texte, qui va être un élément d'un tableau...

Au passage, si tu cherches "couper du texte" sur Google, tu vas avoir droit à plein de méthodes...

Jacques.

Posté

Je vais encore t'emmerder tant que je t'ai sous la main , mais je vois pas a cause d emon putain de tableau comment insérer ça (je suis vraiment pas bon en code !!)

J'ai ça :

$reponse = $bdd->query("SELECT * FROM artistes WHERE nom='" . $tabTotal[$tabKeys[$i]] . "' ");

Ta méthode "(substring_index(texte,' ',100)" me semble la bonne, mais je peux la placer où ??

Posté

Ben dans ton select:


SELECT substring_index(nom_de_la_colonne_a_couper,' ',100) AS nom_que_tu_vas_utiliser_pour_retrouver_ce_champ,autres_colonnes_que_tu_veux FROM artistes etc.

Il est temps d'aller lire la doc :-)

Jacques.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...