Extraire une partie d'un texte

Toutes les questions et les aides qui concernent le langage PHP
Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Extraire une partie d'un texte

Messagepar ColdFusion le Lun Déc 31, 2007 1:34 am

Bonjour(soir). Alors je voudrai qu'à partir d'un paragraphe, je puisse extraire 3 lignes pour servir de description à ce texte en question. En fait je veux que chaque lien ai sa propre description à partir de son propre contenu donc voila ... en espérant avoir été compris ...

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 1:41 am

Salut, je pense qu'il est possible d'obtenir un extrait d'un texte en précisant le nombre de caractères ! Mais je doute qu'il soit possible d'en récupérer un certain nombre de lignes !

Ca t'interesse toujours pour par exemple les 200 premiers caractères ?
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 1:45 am

wai ... 200 premiers caractère devrait suffire :)

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 2:05 am

Oue c'est même largement assez il me semble ^^

Alors c'est simple, il va falloir utiliser la fonction substr() qui va t'être très utile ici :p

Cette fonction substr va te permettre d'obtenir un morceau de ton texte après un certain nombre de caractères. C'est ce que tu veux en gros :D mais j'en connais pas pour les lignes

Alors voila une version toute simple, si tu veux celle avec fonction dit le !

Code: Tout sélectionner
<?php
//Variable contenant le nombre maximum de caractères dans l'extrait que tu veux récupérer
$max=20;

//Variable contenant ton texte à couper :)
$texte='Bonjour, je suis yoyo et je suis un gentil garçon lol';

//Condition qui teste que le texte est bien plus grand que la phrase à couper, sinon ca sert à rien de la couper :D
if (strlen($texte) > $max)
{  
    
//Fonction qui récupère la position du premier espace à partir de la position $max pour éviter de couper un mot en plein milieu
    
$espace strpos($texte,' ',$max);

    
//Fonction qui récupère l'extrait jusqu'à l'espace préalablement cherché auquel on ajoute "..."
    
$morceau substr($texte,0,$espace).'...';
}

echo 
$morceau;
?>


Voila, alors qu'est-ce t'en pense ? :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 2:21 am

Donc dans ma page avec mon code ca devrait donner:
Code: Tout sélectionner
<?php
   mysql_connect
($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);

$max=200;

$reponse mysql_query("SELECT*FROM tuto WHERE categorie='effet texte' ORDER BY id DESC LIMIT 0, 30");
if (
strlen($reponse) > $max)

 
$espace strpos($reponse,' ',$max);
 
$morceau substr($texte,0,$espace).'...';
}
while (
$donnees mysql_fetch_array($reponse) )
{
echo 
'<p><strong><a href="tutoview.php?id='$donnees['id'] .'">' $donnees['titre'] .'</a></strong><br />'$donnees['contenu'] .'</p><br />';
}
mysql_close();
?>

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 2:23 am

Non faut mettre ça dans la boucle

Code: Tout sélectionner
<?php
   mysql_connect
($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);

$max=200;

$reponse mysql_query("SELECT*FROM tuto WHERE categorie='effet texte' ORDER BY id DESC LIMIT 0, 30");

while (
$donnees mysql_fetch_array($reponse) )
{
if (
strlen($donnees['contenu']) > $max)
{
 
$espace strpos($donnees['contenu'],' ',$max);
 
$morceau substr($donnees['contenu'],0,$espace).'...';
}
echo 
'<p><strong><a href="tutoview.php?id='$donnees['id'] .'">' $donnees['titre'] .'</a></strong><br />'$morceau.'</p><br />';
}
mysql_close();
?>


Plutôt ça non ? lol
Vive les tutomakers ;)

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 2:34 am

Voila une petite version en fonction :)

Tu mets ceci dans ton fichier contenant toutes tes fonctions:

Code: Tout sélectionner
<?php

function Extraire($texte,$max)
{

   if (
strlen($texte) > $max)
   { 
       
$espace strpos($texte,' ',$max);
       
$morceau substr($texte,0,$espace).'...';
   }
   else
   {
       
$morceau $texte;
   }

   return 
$morceau;

}
 


Et dans ton code, tu utiliseras cette fonction comme ceci:

Code: Tout sélectionner

// J'ai donc mon texte dans une variable. Note que ton texte peut provenir d'une base de données évidemment ;)

$montexte 'Bonjour, je suis yoyo et je suis un gentil garçon lol'

echo 
'Premiere Version: '.Extraire($montexte,20); 
// ou alors
$morceau Extraire($montexte,20); 
echo 
'<br />Deuxieme Version: '.$morceau;

// $montexte est la variable contenant ton texte à couper et 20 est le nombre maximum de caractères que tu veux :)

?>


Donc pour toi ca donne quelque chose du genre:

Code: Tout sélectionner
<?php
   mysql_connect
($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);

$max=200;

$reponse mysql_query("SELECT*FROM tuto WHERE categorie='effet texte' ORDER BY id DESC LIMIT 0, 30");

while (
$donnees mysql_fetch_array($reponse) )
{
echo 
'<p><strong><a href="tutoview.php?id='$donnees['id'] .'">' $donnees['titre'] .'</a></strong><br />'Extraire($donnees['contenu'],$max).'</p><br />';
}
mysql_close();
?>


Alors, c'est pas joli ça ? :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:09 am

A la ligne 36 j'ai:

Code: Tout sélectionner
while ($donnees mysql_fetch_array($reponse) ) 


et ca me dit depuis que j'ai changer 200 en n'importe quelle autre valeur:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/d/r/dripikworld/site/effet.php on line 36

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:10 am

Bizarre ton erreur, faudrait voir les principaux morceaux de ton script !
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:12 am

Le script ne fait que ça:

Code: Tout sélectionner
<?php
$dbhost 
'imysql04';
$dblogin ''
$dbpassword '' ;
$dbname '' ;

   
mysql_connect($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);

$max=200;

$reponse mysql_query("SELECT*FROM tuto WHERE categorie='effet divers' ORDER BY id DESC LIMIT");

while (
$donnees mysql_fetch_array($reponse) )
{
if (
strlen($donnees['contenu']) > $max)
{
 
$espace strpos($donnees['contenu'],' ',$max);
 
$morceau substr($donnees['contenu'],0,$espace).'...';
}
echo 
'<p><strong><a href="tutoview.php?id='$donnees['id'] .'">' $donnees['titre'] .'</a></strong><br />'$morceau.'</p><br />';
}
mysql_close();
?>

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:16 am

Montre un peu à quoi ressemble la table, tes champs et un exemple de données de chaque please :)
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:29 am

Voici la table

Image

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:30 am

Et si tu fais un print_r($reponse); juste après la requête et avant while ($donnees = mysql_fetch_array($reponse) )

Ca donne quoi ?

NB: c'est une petite astuce pour debugguer :)
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:33 am

Ca dit

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/d/r/dripikworld/site/effet.php on line 37

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:34 am

Oue mais faut enlever ton code qui provoque l'erreur aussi lol. J'ui bête ^^

Met le en commentaires ça suffira :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:36 am

Pas de grand changement


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/d/r/dripikworld/site/effet.php on line 36

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:37 am

Ben fo virer ton code en dessous, je te dis !! Celui à la ligne 36 ! Et bien sure, ce qui est après et qui dépend directement de la ligne 36 ;)

En gros, fo virer tout le code jusqu'à pu avoir d'erreur :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:41 am

commence à me saouler ce bug ... mais si j(enlève tous ce qui est à partir de

while ($donnees = mysql_fetch_array($reponse) )

Il n'y aura plus de réponse car plus de requête SQL :roll:

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Messagepar Yoyo le Lun Déc 31, 2007 3:44 am

ben si tu laisses ta requete

$reponse = blabla..

print_r($reponse);

Et tu vires le restes en dessous qui plante par des commentaires, c'est pas compliqué ? :D
Vive les tutomakers ;)

Avatar de l’utilisateur
ColdFusion
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 56
Enregistré le: Mar Juin 26, 2007 5:43 pm
Localisation: Martinique

Messagepar ColdFusion le Lun Déc 31, 2007 3:47 am

Mais j'y reviens ! je n'ai pas de variable $reponse dans mon code, ça doit venir de ça :P

EDIT: problème résolus !!! script fiable à 100%:

Code: Tout sélectionner
   mysql_connect($dbhost,$dblogin,$dbpassword);
   
mysql_select_db($dbname);

$max=200;

$reponse mysql_query('SELECT * FROM tuto ORDER BY id DESC');
while (
$donnees mysql_fetch_array($reponse) )
{
if (
strlen($donnees['contenu']) > $max)
{
 
$espace strpos($donnees['contenu'],' ',$max);
 
$morceau substr($donnees['contenu'],0,$espace).'...';
}
echo 
'<p><strong><a href="tutoview.php?id='$donnees['id'] .'">' $donnees['titre'] .'</a></strong>Tutorial écrit le <strong>'.date('d/m/Y à H\hi'$donnees['timestamp']).'</strong><br />'$morceau.'</p><br />';
}
mysql_close();
 


MERCI LA CAVE :mrgreen: :D :) 8)
Modifié en dernier par ColdFusion le Lun Déc 31, 2007 3:57 am, modifié 2 fois.


Suivante

Retourner vers Langage PHP

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invités