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 :

[PHP-JS] Peut on incrémenter dans un echo ? Merci


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut [PHP-JS] Peut on incrémenter dans un echo ? Merci
    Bonjour le forum,

    Juste une petite question, j'ai un PB d'application d'une incrementaion, voici un debut de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC))
    { 
    $href = $ligne["href"];
    $src = $ligne["src"];
    $i = 0;
    $i = $i++;
    echo "aB[$i] = new twB('$href','$src','');";
    }
    le pb est que j'obtiens toujours un $i a 0, alors que je voudrais que l'incrementation fontionne dans l'echo, je précise que j'ai essayé une boucle for du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=0;
    $i=$i++;){
    echo "...";
    }
    mais pareil pas d'incrementaion...


    Voila ce que j'obtiens :
    aB[0] = new twB('www.toto.com,'image de TOTO','');
    aB[0] = new twB('www.tata.com,'image de TATA','');
    aB[0] = new twB('www.titi.com,'image de TITI','');

    et j'aurai aimé obtenir ça :

    aB[0] = new twB('www.toto.com,'image de TOTO','');
    aB[1] = new twB('www.tata.com,'image de TATA','');
    aB[2] = new twB('www.titi.com,'image de TITI','');

    Merci a tout le monde de prendre le temps de me lire.
    et trés bonne journée

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    $i++ est l'abréviation de $i = $i + 1

    Je soupçonne la syntaxe $i = $i++ d'insérer la valeur vraie dans $i au final car c'est comme si tu écrivais : $i = ($i = $i + 1) et donc i contiendrait le résultat de l'opération.

    Remplace $i = $i++ par un simple $i++.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Votre démarche est complétement erronée puisque vous remettez tout d'abord dans votre boucle while, à chaque tour, la variable $i à la valeur 0

    La boucle for est également mal utilisée puisque la deuxième partie de cette boucle accueille une condition à remplir pour satisfaire la boucle.

    Enfin l'incrémentation est également mal utilisée : $i++ équivaut à $i = $i + 1 (ou encore $i+=1) il n'y a donc aucun besoin de faire une affectation. De plus, pourquoi obtenez vous 0 ainsi : tout simplement parce que la post-incrémentation (signes ++ après le nom de la variable) est effectuée après le reste de l'instruction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $i = 0;
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $href = $ligne["href"];
        $src = $ligne["src"];
        echo "aB[$i] = new twB('$href','$src','');";
        $i++;
    }
    Par ailleurs, il n'est pas nécessaire de passer par une variable pour créer un tableau dynamiquement partant de l'index 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $aB = array();
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $aB[] = new twB($ligne["src"],$ligne["href"],'');
    }

    Julp.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    j'ai modifié mon code car effectivment j'avais commis une erreur, mais ce la ne marche mieux mais c'est toujours pas ça :

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC))
    { 
    $href = $ligne["href"];
    $src = $ligne["src"];
    for ($i=0;$i<3;$i++)
     {
    echo "aB[".$i."] = new twB('$href','$src','');";
    }
    }
    voici le resultat :

    aB[0] = new twB('www.toto.com,'image de TOTO','');
    aB[1] = new twB('www.toto.com,'image de TOTO','');
    aB[2] = new twB('www.toto.com,'image de TOTO','');

    aB[0] = new twB('www.tata.com,'image de TATA','');
    aB[1] = new twB('www.tata.com,'image de TATA','');
    aB[2] = new twB('www.tata.com,'image de TATA','');

    aB[0] = new twB('www.titi.com,'image de TITI','');
    aB[1] = new twB('www.titi.com,'image de TITI','');
    aB[2] = new twB('www.titi.com,'image de TITI','');

    On s'en approche je pense mais Je précise qu'en faisant une recherche dans ce forum, j'ai trouvé quelqu'un qui a eyu un probleme similaire mais la réponse qui lui avait été donnée ne foncitonne pas chez moi : http://www.developpez.net/forums/sho...rement%E9+echo

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $i = 0;
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC))
    { 
    $href = $ligne["href"];
    $src = $ligne["src"];
    echo "aB[".$i."] = new twB('$href','$src','');";
    $i++;
    }
    Tu faisais un for à l'intérieur de ton while en partant de 0 à 2 dans les indices de ton tableau, ca semble logique qu'il affiche 3 fois chaque enregistrement

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Citation Envoyé par julp
    Votre démarche est complétement erronée puisque vous remettez tout d'abord dans votre boucle while, à chaque tour, la variable $i à la valeur 0

    La boucle for est également mal utilisée puisque la deuxième partie de cette boucle accueille une condition à remplir pour satisfaire la boucle.

    Enfin l'incrémentation est également mal utilisée : $i++ équivaut à $i = $i + 1 (ou encore $i+=1) il n'y a donc aucun besoin de faire une affectation. De plus, pourquoi obtenez vous 0 ainsi : tout simplement parce que la post-incrémentation (signes ++ après le nom de la variable) est effectuée après le reste de l'instruction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $i = 0;
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $href = $ligne["href"];
        $src = $ligne["src"];
        $i++;
        echo "aB[$i] = new twB('$href','$src','');";
    }
    Par ailleurs, il n'est pas nécessaire de passer par une variable pour créer un tableau dynamiquement partant de l'index 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $aB = array();
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $aB[] = new twB($ligne["src"],$ligne["href"],'');
    }

    Julp.
    Merci pour cette réponse, j'avais fais également quelques corrections de lecture dans mon script, par contre je ne veux pas faire de tableau dynamique, mais juste affihcer un echo qui reste une partie d'un code de javascript.

    Par contre j'ai qd meme un pb avec votre code car malgrés un $i=0, mion echo m'affiche un 1 au départ, ne vaudrait il mieux pas mettre $i++, aprés la fin du while?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci a vous tous de vos conseils trés aiguisés, mais voici le bon code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $i = 0;
    while($ligne = mysql_fetch_array($res, MYSQL_ASSOC)) {
        $href = $ligne["href"];
        $src = $ligne["src"];
         echo "aB[$i] = new twB('$href','$src','');";
      $i++;
    }

    car si $i++ est avant l'echo dans ce cas, j'ai deja une incrémentation a 1 alors qu'en le mettant aprés l'echo mon compteur commence bien a 0.

    Merci a tous et bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2007, 14h26
  2. propriété width zappée dans un echo php
    Par skyangel20 dans le forum Langage
    Réponses: 2
    Dernier message: 15/10/2007, 11h30
  3. [PHP-JS] Peut on mettre ce code dans une variable?
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 17h04
  4. Réponses: 1
    Dernier message: 11/04/2007, 22h45
  5. [Tableaux] Code PHP dans un echo
    Par flOZ dans le forum Langage
    Réponses: 7
    Dernier message: 24/05/2006, 09h40

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