Rechercher : dans
Par :

Recuperer chaine de caractères SQL/PHP

Dernière réponse le 26 jan 2008 à 12:22:31 Jean_2, le 24 jan 2008 à 12:15:07 
 Signaler ce message aux modérateurs

Bonjour,

Je voudrai recupérer les 20 premières lettres de mon champ contenu pour les afficher sur ma page.

Mon code :
<?php
$contenu = (nl2br(stripslashes($donnees['contenu']));
echo $contenu;
?>

J'ai (mal ?) essayé avec substr et left, et j'ai pas réussi.
Quelqu'un pour m'aider ???

merci à vous

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « recuperer chaine de caractères SQL/PHP » dans :
Il est possible de récupérer le code source PHP d'un site VoirMythe Un utilisateur peut récupérer le code source PHP d'un site web comme il peut récupérer le code HTML. Réalité FAUX Explications Les fichiers PHP (ASP, JSP, etc.) sont des fichiers interprétés côté serveur, ce qui signifie que le serveur...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

Jean_2, le 24 jan 2008 à 12:44:31

Et bizarrement, ce code là ne me renvoie rien (meme pas de message d'erreur)

<?php
$contenu = substr(nl2br(stripslashes($donnees['contenu'])),0,20);
echo $contenu;
?>

Répondre à Jean_2

2

Jean_2, le 24 jan 2008 à 13:29:53

Personne n'a d'idée ???

Répondre à Jean_2

3

Alain42, le 24 jan 2008 à 13:33:52

Fais d'abord un echo "Phrase origine: ".$donnees['contenu'];

pour voir si tu as bien une valeur la dedans.

Répondre à Alain42

4

Jean_2, le 24 jan 2008 à 13:37:53

Oui, j'ai bien une valeur, pas de soucis.
mais le substr ne marche pas (et le left me renvoie une erreur)
je précise que je travaille sur une base mysql

Répondre à Jean_2

5

Alain42, le 24 jan 2008 à 14:08:23

Essayes en faisant sans les autres fonctions et en changeant le nom de la variable $contenu :

 $contenu_mod = substr($donnees['contenu'],0,20);


a quoi te sert le nl2br à ce niveau là ?

Répondre à Alain42

6

Jean_2, le 25 jan 2008 à 10:12:19

Nl2br sert à rien...

Et j'ai simplifié au max (sans stripslashes ni nl2br)
J'ai aussi renommé

J'ai donc :
$contenu_mod = substr($donnees['contenu'],0,20);
echo $contenu_mod;

Résultat : avec substr ça ne marche pas...

Ya un soucis entre substr et Mysql ?

Franchement, je ne vois pas du out ce qui pourrait bugger...

Répondre à Jean_2

7

le père, le 25 jan 2008 à 10:21:26

Bonjour

Ya un soucis entre substr et Mysql ?
Non, il n'y a aucun souci entre substr et mysql.

Si tu fais
$contenu = substr($donnees['contenu'],0,20);
echo $contenu;
et qu'il y a bien quelque chose (texte non vide ou nombre) dans $donnes['contenu'], je te jure que ça affiche quelque chose

Au message 4, tu dis qu'il y a bien une valeur, pas de soucis. As-tu bien fait en echo pour en être sûr ?

Répondre à le père

8

Jean_2, le 25 jan 2008 à 10:30:57

Je suis retourné voir dans ma base :
contenu est de type text. je l'ai modifié en varchar (histoire de...), mais ça change rien, ça n'affiche rien.

Ca ca n'affiche rien (meme en remplaçant $contenu par $autre_nom :
$contenu = substr($donnees['contenu'],0,20);
echo $contenu;

Ca ca m'affiche le contenu du champ contenu sans pb :
$contenu = $donnees['contenu'];
echo $contenu;

Dois-je mettre un type précis ou pas ?

Et chez moi, je te jure que ça n'affiche rien. Je te jure aussi que je trouve ça incompréhensible.

...

Répondre à Jean_2

9

le père, le 25 jan 2008 à 10:34:03

Echo et substr n'ont AUCUN rapport avec mysql
As-tu bien fait echo $donnes['contenu'] pour voir s'il y a quelque chose dedans comme tu l'affirmes au message 4 ? La réponse à cette question est essentielle.

Répondre à le père

10

Jean_2, le 25 jan 2008 à 10:40:22

Oui oui, il y a bien qq chose, ça m'affiche sur ma page (simplifié bien sur) :
contenu_1_du_blabla
contenu_2_du_blabla
contenu_3_du_blabla
contenu_4_du_blabla

Le contenu n'est donc pas vide ça c'est sur sur sur je le vois sur ma page...
Contenu contient des espaces entre les mots (c'est des phrases quoi)
substr ne gérerai pas les espaces ?
..

Répondre à Jean_2

11

le père, le 25 jan 2008 à 10:52:34

Arrête de chercher des erreurs dans php ou mysql, 99,9999% de chances (et encore je suis gentil) que ce soit ton script. Peux tu montrer ce script ?

Répondre à le père

12

Jean_2, le 25 jan 2008 à 11:15:37

Sans pb, je te mets le script qui fonctionne (en gras, le pb)
En fait je souhaite faire afficher le début de ma news et qu'en cliquant dessus, on se retrouve sur ma page news...

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("db");
// On récupère la dernière news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 1');
while ($donnees = mysql_fetch_array($retour))
{
?>

<div id="derniere_news">
<h2>Dernière News</h2>
<A HREF="news.php">
<h3>
<?php echo $donnees['titre']; ?>
<em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>
<p>
<?php
$contenu = stripslashes($donnees['contenu']);
echo $contenu;
?>

</p>
</A>
</div>

<?php
}
mysql_close(); // Déconnexion de MySQL
?>

Répondre à Jean_2

13

le père, le 25 jan 2008 à 11:35:10

Il est où le substr qui te pose un problème ?
Si tu n'affiches rien avec ce script, c'est qu'il n'y a rien dans $donnees['contenu']
Peux-tu voir ce qu'il y a dans le champ contenu par phpmyadmin par exemple?
Le champ s'appelle-t-il bien 'contenu' tout en minuscules ?

Répondre à le père

14

Jean_2, le 25 jan 2008 à 11:41:57

le script précédent m'affiche bien mon champ pas de problème ça marche et donc dans php my admin, j'ai bien qqchose (j'ai vérifié).
le script suivant ne m'affiche pas les 20 1eres caractères de mon champ. Il ne m'affiche rien :

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("db");
// On récupère la dernière news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 1');
while ($donnees = mysql_fetch_array($retour))
{
?>

<div id="derniere_news">
<h2>Dernière News</h2>
<A HREF="news.php">
<h3>
<?php echo $donnees['titre']; ?>
<em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>
<p>
<?php
$contenu = substr(stripslashes($donnees['contenu']),0,20);
echo $contenu;
?>

</p>
</A>
</div>

<?php
}
mysql_close(); // Déconnexion de MySQL
?>

Répondre à Jean_2

15

le père, le 25 jan 2008 à 11:56:49

J'avoue que je commence à trouver ça mystérieux moi aussi.

mets dans le même script le echo avec et sans substr
<?php
$contenu =stripslashes($donnees['contenu']);
echo $contenu;
$contenu = substr(stripslashes($donnees['contenu']),0,20);
echo $contenu;
?>

Répondre à le père

16

le père, le 25 jan 2008 à 12:06:03
  • +1

Question très idiote : est-il possible que tes textes commencent systématiquement par des caractères invisibles (espaces, tab...)

<?php
$contenu =stripslashes($donnees['contenu']);
echo $contenu;
$contenu = substr(stripslashes($donnees['contenu']),0,20);
echo strlen($contenu),' ',$contenu;
?>

Répondre à le père

17

Jean_2, le 25 jan 2008 à 12:36:07

Réponse d'un idiot : oui... mdr (un rire jaune)
Bon, bah vraiment dsl de t'avoir fait perdre ton temps pour ça

bonne journée

Répondre à Jean_2

18

le père, le 25 jan 2008 à 13:22:47

dsl de t'avoir fait perdre ton temps
Pas de problème, si je suis ici c'est que je suis maso :-))
Pense à utiliser trim pour virer les espaces gênants

Répondre à le père

19

Jean_2, le 25 jan 2008 à 13:23:53

Ok, je fais une recherche google sur trim
merci à toi

Répondre à Jean_2
Collection CommentÇaMarche.net