IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Coupage de chaine et affichage de la suite.. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut Coupage de chaine et affichage de la suite..
    Bonjour à tous, je vais essayer d'être clair pour mon soucis méga chi@^$!

    j'ai une base de données dans laquelle se trouve un champs "description".
    Cependant, sur ma page, je voudrais afficher les 100 premiers caractères de Description, puis quelques lignes en dessous, la fin de description.

    ainsi, si dans ma BDD, description vaut 189, je veux afficher les 100 premier, puis dans un second temps les 89 derniers.
    Jusque ici tous va bien

    pour afficher les 100 premiers (et sans coupé en mot, et en finissant par "..."), j'utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function cleanCut($string,$length,$cutString = '...')
    {
    	if(strlen($string) <= $length)
    	{
    		return $string;
    	}
    	$str = substr($string,0,$length-strlen($cutString)+1);
    	return substr($str,0,strrpos($str,' ')).$cutString;
    }
    et dans ma page j'ai donc ceci :
    cleanCut($row->description, 100)
    là ça fonctionne.. le soucis et quand je veux afficher la suite.
    la logique voudrait que je mette :
    substr(nl2br($row->description), 101)
    c'est là que ca coince... je me retrouve de temps en temps (selon la ligne de la BDD) avec des caractères en trop (c'est a dire une répétition de la 1ere partie) ou alors des caractères en moins... (c'est a dire que il manque des caractère entre la premiere et deuxieme parti)

    PISTE : j'ai l'impression que c'est mon substr qui pose problème et qui ne me compte que les caractères et pas les sauts de ligne dans la BDD.

    j'ai testé du coup cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $string1 = str_replace ( "\n \\'", "", cleanCut($row->description, 100))
    puis pour afficher la deuxieme partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(nl2br($row->description), $string)
    bin ca marche pas j'ai toujours des résultats bizarres...

    Si ce n'est pas claire, dites moi...

    Merci d'avance à tous et bonne soirée

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    pourquoi tu fais pas ton nl2br après plutôt qu'avant le substr?

  3. #3
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Tu fais ton nl2br que dans un des 2 cas, du coup t'as plus le même nombre de caractères dans ta description entre le moment où tu prends les 100 premiers et le moment où tu prend les suivants....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Par défaut
    C'est bon j'ai compris d'où viens le problème.

    ex de chaine : "voici une courte description qui devrait faire 49"

    lorsque je fais mon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cleanCut($row->description, 25)
    il m'affiche "voici une courte..."

    et lorsque je veux afficher la deuxième partie, je fais substr(nl2br($row->description), 25)

    qui m'affiche : "ion qui devrait faire 49"

    le soucis est que la fonction cleancut me fais un coupage propre, et ne prend donc pas 25 caractère mais un peu moins.

    pour que cela marche (car ca marche maintenant il fallait que je prenne coupe la chaine au niveau du nombre de caractère renvoyé par la fonction cleancut.

    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var1 = nl2br(cleanCut($row->description, 75));
    $string1 = strlen($var1) - 3;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr(nl2br($row->description), intval($string1))
    Merci pour vos réponses en tous cas
    Bon dimanche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/07/2007, 10h27
  2. Lien dynamique avec affichage en dessous (suite)
    Par tchoukapi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/07/2006, 19h55
  3. [MySQL] Affichage de données suite à un update
    Par Sandara dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 20/06/2006, 12h38
  4. transcrire une chaine de caractères en une suite d'entiers
    Par marineaure dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/04/2006, 16h32
  5. affichage page erreur suite exception
    Par pram dans le forum XMLRAD
    Réponses: 1
    Dernier message: 20/09/2005, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo