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 :

Problème dans un While


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Problème dans un While
    Bonjour,

    J'ai un bout de code issue d'une requête SQL qui, à partir d'un while, écrit une chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // requête SQL
    
    while ($row = mysql_fetch_array($req)) {
    									
        $chaine= "[Date.UTC(".$annee.",".$mois.",".$jour."),".$indice."],";
        echo $chaine;
    
    }
    La problème concerne la virgule au bout de la chaîne (en rouge). Je me retrouve avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine1,chaine2,chaine3,
    La virgule est obligatoire pour séparer les chaines, mais j'aimerai qu'il n'y ait pas de virgule après la dernière chaîne, puisque de toute manière aucune autre chaine ne vient ensuite.

    Seulement je n'arrive pas à la traduire en code

    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Inscrit en
    juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 36
    Points : 38
    Points
    38

  3. #3
    Membre à l'essai
    Inscrit en
    décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    ça ne résout pas mon problème: substr enlève toutes les virgules entre les chaines. J'aimerai seulement enlever la virgule qui vient après la dernière chaine.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si c'est des données pour du JavaScript il faut faire du json

  5. #5
    Membre à l'essai
    Inscrit en
    décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    effectivement, c'est pour écrire du javascript, mais pourquoi un json ?

    J'ai juste l'impression de ne pas arriver à formaliser ma boucle comme je veux, mais en quoi un json pourrait m'y aider ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Catalyst Voir le message
    effectivement, c'est pour écrire du javascript, mais pourquoi un json ?

    J'ai juste l'impression de ne pas arriver à formaliser ma boucle comme je veux, mais en quoi un json pourrait m'y aider ?
    parce que le json c'est du javascript

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    16 724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 16 724
    Points : 33 776
    Points
    33 776
    Billets dans le blog
    14
    Par défaut
    En dehors de la pertinence ou non de faire du json, d'une manière plus générale, pour faire des listes de chaînes dans une boucle, il suffit de mettre une condition avant le complément de la chaîne pour ajouter la virgule :
    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
    // requête SQL
     
    $chaine = '';
     
    while ($row = mysql_fetch_array($req)) 
    {
     
    	if($chaine != '')
    	{
    		$chaine .= ', ';
    	}
    	$chaine .= "[Date.UTC(".$annee.",".$mois.",".$jour."),".$indice."],";
     
    }
    echo $chaine;
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    En dehors de la pertinence ou non de faire du json, d'une manière plus générale, pour faire des listes de chaînes dans une boucle, il suffit de mettre une condition avant le complément de la chaîne pour ajouter la virgule :
    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
    // requête SQL
     
    $chaine = '';
     
    while ($row = mysql_fetch_array($req)) 
    {
     
    	if($chaine != '')
    	{
    		$chaine .= ', ';
    	}
    	$chaine .= "[Date.UTC(".$annee.",".$mois.",".$jour."),".$indice."],";
     
    }
    echo $chaine;
    bof, plutôt mettre tout ça dans un tableau et utiliser implode

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    16 724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 16 724
    Points : 33 776
    Points
    33 776
    Billets dans le blog
    14
    Par défaut
    Aussi.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Membre à l'essai
    Inscrit en
    décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Merci CinePhil, j'ai adapté mon code avec tes ajouts et ça fonctionne (sauf que j'ai enlevé la virgule à la fin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine .= "[Date.UTC(".$annee.",".$mois.",".$jour."),".$indice."],";
    , autrement je me retrouvais avec 2 virgules entre chaque chaine).

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Ça reste de la bidouille, tu dois utiliser json_encode

  12. #12
    Membre à l'essai
    Inscrit en
    décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    C'est sûrement comme ça qu'on doit faire, mais il se trouve que ne connaissant pas cette fonction (étant plutôt débutant en PHP), j'ai bidouillé un truc comme tu dis, mais qui marche très bien.

    Donc je ne vais pas m'amuser à comprendre comment utiliser cette fonction et à changer toute mes boucles alors que j'ai déjà un code qui marche. En plus mon problème de virgule en trop gênait seulement IE8.

    En revanche je m'y intéresserait lorsque j'aurai à nouveau besoin de produire du javascript avec du PHP.

Discussions similaires

  1. Problème de bouton stop dans boucle while
    Par Simon et ulrich dans le forum LabVIEW
    Réponses: 4
    Dernier message: 04/08/2011, 10h59
  2. Problème avec position d'image dans un while()
    Par damigr dans le forum Langage
    Réponses: 1
    Dernier message: 08/04/2008, 00h46
  3. [MySQL] Problème pour récupèrer les champs d'un formulaire qui se trouve dans un while
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 21/03/2008, 14h59
  4. [FPDF] Problème avec un while dans un tableau
    Par nigg4z dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 15h13
  5. Problème avec if dans un while.
    Par rutabagas dans le forum C
    Réponses: 7
    Dernier message: 28/02/2007, 12h36

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