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

Langage PHP Discussion :

[Tableaux] formatage de chaine


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut [Tableaux] formatage de chaine
    Bonjour à tous et toutes,

    Je n'arrive pas à insérer des <br> automatique.
    J'affiche le contenu d'une table qui contient des mots-clefs sous la forme mot1,mot2,mot3 etc...
    Or ils s'affichent comme ils sont dans le champ de la table. Sans formatage aucun.

    Comment faire pour qu'un <br> remplace une virgule tous les 10 mots, par exemple ?

    Merci pour le coup de main !

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tu peux remplacer toutes les virgules par <BR> avec http://fr3.php.net/manual/fr/function.str-replace.php

    Pour remplacer toutes les dix virgules, il va falloir coder, parcourir la chaîne et compter les virgules pour remplaçer la dixième.

  3. #3
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    donne nous le code d'extraction et d'affichage, et on s'occupera de toi

    Va falloir jouer vraissemblablement avec les modulos et un compteur...

  4. #4
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    merci de vos réponses rapides ! cool ! Voici mon bout de code qui ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $sql = mysql_query("SELECT nom,  mots_clefs FROM config_pages order by nom") or die("erreur");
    $ligne = "";
    $ligne .= "<table>";
    $ligne .= "<tr><td>Nom</td><td>Mots-clefs</td></tr>";
     
    while($row = mysql_fetch_row($sql))
    {
    $virgule = explode("," , $row[1]);
    $count = count($virgule);
    if(($count == 5)||($count == 10)||($count == 15)||($count == 20)||($count == 25))
      {
      $row[1] = str_replace(",","<br>",$row[1]);
      }
    $ligne .= "<tr><td>".$row[0]."</td><td>".$row[1]."</td>";
    }
    $ligne .= "</tr></table>";
     
    echo $ligne;

  5. #5
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Heuuu c'est normal !
    En faisant un explode(',', $row[1]) ; tu les supprime les virgules !
    Donc si tu remplaces qqchose qui n'existe pas par un <br>, ton br ne s'affichera jamais

    Ta variable $virgule est en fait un tableau dont chaque case correspond à un mot clé.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $sql = mysql_query("SELECT nom,  mots_clefs FROM config_pages order by nom") or die("erreur");
    $ligne = "";
    $ligne .= "<table>";
    $ligne .= "<tr><td>Nom</td><td>Mots-clefs</td></tr>";
    $cpt = 0 ;
    while($row = mysql_fetch_row($sql))
    {
      $cpt++
      if ($cpt == "10" ){
             $cpt=0 ;
             echo '<br>' ;
       }
    echo  "<tr><td>".$row[0]."</td><td>".$row[1]."</td>";
    }
    echo '</table>';
    ca devrait marcher j'ai pas esséyé (on pourrai tester avec un modulo le compteur ca eviterai de le remettre a 0)

  7. #7
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Heuuu par contre ton html est carrément faux !

    On ne met pas un <br> entre 2 <tr> comme tu le fais !

  8. #8
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    oui tu as raison Sylvain71 ! je crois que je suis en surchauffe...
    Halukard...merci, mais le br ne s'affiche tjrs pas...

  9. #9
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Le br ne s'affiche pas parce que ton html est pas bon
    Fais un html correct et ça devrait marcher.

  10. #10
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ce n'est pas un prob de HTML, il est ok, j'ai mis le <br> dans le <td>après la variable $row[1]...
    Pour vérif j'ai fait afficher un Z à la place du <br> et mis le compteur à 5. Le Z s'affiche bien, mais à la fin du 5ème tour de la boucle while...
    Arggg !

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par Sylvain71
    Heuuu par contre ton html est carrément faux !

    On ne met pas un <br> entre 2 <tr> comme tu le fais !
    oui je sais j'ai hesité a mettre juste une case du tableau vide pour faire l'espace.

    essais de faire un echo du compteur pour voir se qu'il affiche si ca se trouve ya une erreur dans la boucle.

  12. #12
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    le $cpt affiche 5 en fin de chaine tous les 5 tours de boucle while

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $sql = mysql_query("SELECT nom,  mots_clefs FROM config_pages order by nom") or die("erreur");
    echo "<table border=1>".
    "<tr><td>Nom</td><td>Mots-clefs</td></tr>";
    $cpt = 0 ;
     
    while($row = mysql_fetch_row($sql))
    {
      $cpt++ ;
      if ($cpt == "10" ){
             $cpt=0 ;
     echo  "<tr><td colspan=2></td>";
       }
    echo  "<tr><td>".$row[0]."</td><td>".$row[1]."</td>";
    }
    echo '</table>';
    j'ai esséyé en local chez moi avec celui la et ca fonctionne bien sur une table avec a peu pret 500 enregistrement.

    tu veu afficher qque chose de special entre t enregistrement ou juste un blanc?

  14. #14
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    ben c'est dingue que ça fonctionne chez toi...parce que chez moi, pas du tout...ça ne fait qu'ajouter un <td>vide tous les 5 tours de la boucle while...ce qui est somme toute logique. Moi, je veux, dans le second td qui contient les mots-clefs, mettre un <br>tous les 5 mots. Et c'est pas gagné...

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($cpt % "10" ){
             echo  "<tr><td colspan=2></td>";
       }

    dans t enregistrement tu as que du texte tu as pas des caracteres speciaux qui pourrais bloquer le chargement.

  16. #16
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    non, ce ne sont que des mots-clefs sans caractères spéciaux séparés par des virgules. Mais je ne pige pas une chose: comment ton code pourrait ajouter un saut de ligne tous les 10 mots, au lieu d'ajouter une ligne de tableau toutes les 10 lignes ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 144
    Points
    144
    Par défaut
    ben a part fermer le tableau et en ouvrir un autre en laissant un espace entre les deux je pense pas qu'on puisse intégré un saut de ligne au milieu d'un tableau (entre deux ligne, entre deux <tr></tr>) il me semble

  18. #18
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    merci Hakulard, de m'avoir bien mis sur la voie...
    j'ai trouvé la soluce, en piochant ça et là sur les forums à partir de ton idée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $chaine = explode(",",$row[1]); 
    $i=0; //$val=''; 
    	while (isset($chaine[$i])) 
                { 
    	$ligne .= $chaine[$i]; 
    	if ($i%10==0 && $i>0) { $ligne .='<br \>'; } else {$ligne .= ',';}
    	$i++; 
    	}
    Bonne soirée !

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

Discussions similaires

  1. [Tableaux] tableau de chaine de caractere
    Par Tempotpo dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2006, 14h54
  2. [Tableaux] Décomposer une chaine de caratères
    Par bianconeri dans le forum Langage
    Réponses: 8
    Dernier message: 06/03/2006, 16h43
  3. Formatage du chaine suivant un masque
    Par AlexB59 dans le forum Langage
    Réponses: 1
    Dernier message: 07/02/2006, 11h31
  4. [Tableaux] decouper une chaine de caractères
    Par pekka77 dans le forum Langage
    Réponses: 12
    Dernier message: 03/12/2005, 20h08
  5. [Tableaux] pb de chaine de caracteres
    Par R@IZER dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 18h17

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