Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Web » PHP / ASP » Limiter le nombre de caratére dans une requete

sasuke83
ProgBoarder
Citer Windows XP Firefox 2 - Posté le 27/03/2007 à 09:37
Bonjour a tous! (sourire)

je vous écris car je cherche un moyen simple d'afficher un résumer de mes news dans ma page d'admin.

J'utilise le php pour écrire des news, elle sont donc stockés dans ma base.

Et sur mon tableau d'admin, je voudrais afficher mes news les une en dessous des autres (jusque la ok), mais je voudrais limiter le nombre de carctére a afficher.

car je voudrais simplement un aperçu de ma news, pour savoir si c bien celle là que je veux modifier, et si j'affiche la news en entier, ça géne, c'est trop gros, et ça ne met pas utile...

Voici ma page index ou il y a mes news:

http://animes-load.fr

et voici ma page d'admin:
http://www.animes-load.fr/admin.php


petite précision, ma table se nome "news", et le champ ou sont stocké mes news s'appel aussi "news". (ça ne pose pas de problème pour la saisie et l'affichage).

____________________________

j'ai essayer de 2 façons:

1er: avec substring:
SUBSTRING


Wall (113) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


ça ne marche pas...., je ne sais pas si c'est parce que c'est du php 5.0 et que mon hebergeur ne le supporte peut etre pas...

_____________________________________

J'ai essayer une deuxieme methode,

voir le tuto içi:
http://www.expreg.com/lire-Chaines-script

mon code (qui ne marche pas).


Wall (114) : Afficher le code source - Ouvrir dans une nouvelle fenêtre


_________________________________________


Je n'arrive a me servir d'aucune des 2 solutions !

Pourriez vous m'aider svp ?

Je n'y arrive vraiment pas ...
Mazzu
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 27/03/2007 à 10:12
Pour la seconde méthode je ne vois pas quel est le problème, si tu pouvait donner le message d'erreur que tu as ça pourrais aider.

Sinon pour la première méthode, le problème est dans ta requête :
SELECT id, pseudo, date, heure, minute, substring(news,1,10)
FROM news
ORDER BY id DESC
LIMIT 10

Là, la dernière colonne de ton résultat de requête s'appele substring(news,1,10) et pas news comme tu t'attends à avoir.

Il faut donc utiliser un alias pour lui redonner un nom, ce qui donnerait ça :
SELECT id, pseudo, date, heure, minute, substring(news,1,10) AS 'news'
FROM news
ORDER BY id DESC
LIMIT 10


Edit :
J'ai peut être trouver le problème de la seconde solution, c'est juste une erreur de typo à la ligne 15, il manque un 'e' à $donnee :
$chaine = $donnes['news'];
==>
$chaine = $donnees['news'];

Edité par Mazzu ( 27/03/2007 10:25:29 )
sasuke83
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 27/03/2007 à 13:51
CA MARCHE (exclamation)!! (sourire)

Merci beaucoup Mazzu !

Effectivement, avec le 'e' en plus, ça marche !

_________

j'ai compris pour la première méthode, je vais essayer.

une question, pour l'alias, il faut qu'il soit entre '' ? est-ce que je pe mettre l'alias que je veux ? j'ai besoin de la declarer quelque part avant ?

ça donnerais ça par exemple:

SELECT id, pseudo, date, heure, minute, substring(news,1,10) AS 'text_couper'
FROM news
ORDER BY id DESC
LIMIT 10

et en bas, je fais un ; echo donnees ['text_couper'];

c'est bien ça (question)?


UN TRES GRAND MERCI (exclamation)! (sourire)
neamar
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 27/03/2007 à 13:54
C'est ca !
C'est aussi comme ca quand tu veux par exemple compter le nombre d'enregistrements :


SELECT COUNT(*) AS 'compteur' FROM `BigBrother` WHERE IP LIKE '%.80.%'


Renvoie toutes les ip avec 80 à l'intérieur.
Before you criticize someone, you should walk a mile in their shoes. That way when you criticize them, you are a mile away from them and you have their shoes.

http://neamar.free.fr
Ou le portail général : http://neamar.fr
Mazzu
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 27/03/2007 à 14:12
Je viens de faire quelques tests et je constate qu'avec MySQL (je suppose que c'est ce que tu utilises), toutes ces requêtes sont équivalentes :


SELECT 1 AS 'test' -- avec des simple quote
SELECT 1 AS "test" -- avec des double quote
SELECT 1 AS `test` -- avec des back quote
SELECT 1 AS test -- sans quote et sans caractères particuliers (espace, saut de ligne, virgule, ...)



Toutes retournent une seule ligne d'une colonne qui contient 1 et que tu peux afficher en php en faisant :


echo $donnees['test']; // avec simple quote
echo $donnees["test"]; // avec double quote



Edité par Mazzu ( 27/03/2007 14:15:28 )
neamar
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 27/03/2007 à 14:23
Humm.en php, l'utilisation des guillemets est fortement déconseillée, car leur structure est 10 fois moins rapide que les apostrophes (en fait, c'est du à la possibilité de faire des trucs comme ca :


echo "Salut $_POST['Nom']";


Le système doit parser la chaine, ce qui est extrêmement long
Before you criticize someone, you should walk a mile in their shoes. That way when you criticize them, you are a mile away from them and you have their shoes.

http://neamar.free.fr
Ou le portail général : http://neamar.fr
sasuke83
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 29/03/2007 à 22:55
Merci pour vos réponses ! (sourire)

J'ai réessayer en renplancer mes 'news' par des 'texte_couper', mais ça n'a pas marché...

Je retenterais en faisant plus attention au code, j'ai essayer en copiant le code de mon wall 113, et en remplaçant

$reponse = mysql_query("SELECT id, pseudo, date, heure, minute, substring(news,1,10) FROM news ORDER BY id DESC LIMIT 10");

par

$reponse = mysql_query("SELECT id, pseudo, date, heure, minute, substring(news,1,10) FROM 'texte_couper' ORDER BY id DESC LIMIT 10");


et le:
<td width="449" class="Style1"><?php echo $donnees['news']?></td>

par

<td width="449" class="Style1"><?php echo $donnees['texte_couper']?></td>


j'ai peut être fais une erreur ailleurs...

En tout cas la deuxième méthode de mon premier post marche super !

Merci (héhé

Edité par sasuke83 ( 29/03/2007 22:56:35 )
Mazzu
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 30/03/2007 à 10:13
Là, le problème vient de ton premier remplacement. Je crois que tu confonds un peu les tables et leurs colonnes.

Il aurait fallu remplacer :

$reponse = mysql_query("SELECT id, pseudo, date, heure, minute, substring(news,1,10) FROM news ORDER BY id DESC LIMIT 10");



par :

$reponse = mysql_query("SELECT id, pseudo, date, heure, minute, substring(news,1,10) AS 'texte_couper' FROM news ORDER BY id DESC LIMIT 10");



Tu tapes toujours dans la même table table donc le " FROM ... " ne change pas
mais il faut toujours que tu renommes ta colonne " substring(news,1,10) " avec un " AS qqch "
C'est ce qui te permet de récupérer ta news tronquée dans $donnees['texte_couper'] si tu as fait un " AS 'text_couper' " par exemple.

Edité par Mazzu ( 30/03/2007 10:14:12 )
sasuke83
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 02/04/2007 à 21:45
Merci mazzu, mais je ne comprend pas ...

c'est peut etre parce que dans ma table "news", j'ai un champ "news".

je suis obliger de faire un FROM news .

et pour moi mon
"substring(news,1,10) AS 'texte_couper' "

veut dire que je prend les 10 premiéres lettres de mon champ "news", et que je les met dans "text_couper".

Et donc je fais un $donne["texte_coupe"]


Je ne comprend pas ce que tu essais de m"expliquer ....

Merci (sourire)

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,040 s - Crédits - Stats
1 connecté