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 :

array boucle while mots clé [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut array boucle while mots clé
    Bonjour ça fait 1 heure que je tourne en rond sur un code, en faite j'ai un champ dans ma DB mot_cle (qui sont des mots clé "un, deux, trois, etc"), je découpe tout les mots séparé d'une virgule avec un explode, j'aimerai ensuite pouvoir tous les afficher l'un a la suite de l'autre.

    en gros passer de champ 1 ("mot un, mot deux, mot trois"), champ 2 ("coucou, salut, test"), etc

    à

    "mot un","mot deux","mot trois","coucou","salut","test"


    voici mon code que j'ai pour le moment qui ne fonctionne bien sur 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
    <?php 
     
    while ($aff = mysql_fetch_array($resultat2)) 
    { 
    	$chaine = $aff["mot_cle"];
    	$donnee=explode(",",$chaine);
     
    }
     
    echo '<br/><strong>"'.$donnee[0].'"</strong>';
    echo '<br/><strong>"'.$donnee[1].'"</strong>';
    echo '<br/><strong>"'.$donnee[2].'"</strong>';
    echo '<br/><strong>"'.$donnee[3].'"</strong>';
    echo '<br/><strong>"'.$donnee[4].'"</strong>';
    echo '<br/><strong>"'.$donnee[5].'"</strong>';
    echo '<br/><strong>"'.$donnee[6].'"</strong>';
    echo '<br/><strong>"'.$donnee[7].'"</strong>';
    ?>
    d'avance merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Tu peux le faire avec array_merge(), regarde la doc et apprends par toi même

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    salut IGstaff je vois bien le array merge mais je ne vois pas comment je pourrais l'utiliser dans mon cas

    ici j'ai deux problème, le premier c'est que dès que je sort de la boucle il ne prend en compte que le premier résultat, le second, j'aimerai rendre dynamique l'echo pour afficher le résultat final, je patauge...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    En fait, j'ai mal compris ton problème car il y a un défaut dans ton explication qui m'empeche d'être sûr sur un point (ou peut etre est ce moi...).

    En fait, de ce que j'ai compris, tu as un champs `mot_cle` et plusieurs ENTREES (ou enregistrements mais pas champ)

    je ne sais pas sous quelle forme tu veux afficher tes données car ce que tu as montré ici est illogique.
    En effet, $donnee contient le résultat de l'explode du dernier enregistrement sélectionné par ta requete.

    Mais je vais quand même te propose cela.
    Avant ta boucle while:
    Et dans ton while:
    $donnee = array_merge($donnee, explode(",",$chaine));

    Enfin, il ne te reste plus qu'à lire ton tableau avec un FOREACH ou si t'es un gros flemmard qui n'en a rien à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<strong>"'.implode("\"</strong><br/>\n<strong>\"", $donnee).'"</strong><br/>'
    J'ai déplacé le <br/> car il n'était pas logiquement placé.

    NB: Je n'ai pas testé ce script donc il peut y avoir des petites erreurs ponctuelles.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    c'est exactement ça IGstaff, les BR STRONG c'est pour mes echo que je m'y retrouve voilà le code final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test = '"'.implode("\",\n\"", $donnee).'"';
    je cherche a mettre un ltrim a chaque infos maintenant..

    merci a toi, effectivement avec le array avant la boucle c'est plus facile

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Après ton WHILE, juste avant d'afficher il faut que tu traites tes données avec trim() si j'ai bien compris.
    A toi d'utiliser une fonction qui applique une fonction dite callback à tous les éléments du tableau, pour cela il existe array_map() qui ne traite que les éléments et pas les clés.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    Un grand merci a toi IGstaff pour tes infos qui m'ont éclairée

    j'ai su trimmer mon array grâce a une fonction toute simple reprise sur us3.php.net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    function trim_value(&$value) 
    { 
        $value = trim($value); 
    }
     
    $fruit = array('apple','banana ', ' cranberry ');
    var_dump($fruit);
     
    array_walk($fruit, 'trim_value');
    var_dump($fruit);
     
    ?>

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Avec array_map() c'est plus simple ici...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $fruit = array('apple','banana ', ' cranberry ');
    var_dump($fruit);
     
    $fruit = array_map('trim', $fruit );
    var_dump($fruit);
     
    ?>

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

Discussions similaires

  1. [PostgreSQL] Parcours d'array et boucle while
    Par Pathoche dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/10/2012, 23h11
  2. Incrémenter un Array par une boucle While
    Par Misoss dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2010, 21h38
  3. multiples array dans un, combiner avec boucle while
    Par leymiris dans le forum Langage
    Réponses: 2
    Dernier message: 27/07/2010, 16h19
  4. Réponses: 6
    Dernier message: 27/05/2010, 10h48
  5. [PHP 5.3] Parcourir deux array à la manière de deux boucle while
    Par jflorence dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2010, 17h35

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