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 :

Dysfonctionnement de boucle for


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut Dysfonctionnement de boucle for
    Bonjour,

    Je suis bloquer sur une boucle for pour dupliquer un nombre défini via $_post.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ($i=1; $i<$nbs; $i++) {
    $shipping->skybillValue->productCode = $_POST['choix'];            
    $shipping->skybillValue->shipDate = date('c');          
    $shipping->skybillValue->shipHour = date('G');
    $shipping->skybillValue->weight = $_POST['poids'.$i.''];
    $shipping->skybillValue->service = '0';                 
    $shipping->skybillValue->objectType = $_POST['march'];  
    $shipping->skybillValue->bulkNumber = $nbs_f; 
    }
    Je ne vois pas comment défini un skybillValue1, skybillValue2, skybillValue3,...
    j'ai essayer :
    $shipping->skybillValue[$i]->service = '0';.
    $shipping->skybillValue." ".$i->service = '0';.
    mais rien ne marche.

    le but étant de dupliquer pour ensuite ajouter dans la page traitement.php le nombre de doublon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function __construct()
        {
            //$this->esdValue = new EsdValue();
            $this->headerValue = new HeaderValue();
            $this->shipperValue = new ShipperValue();
            $this->customerValue = new CustomerValue();
            $this->recipientValue = new RecipientValue();
            $this->refValue = new refValue();
            $this->skybillValue = new SkybillValue();
            $this->skybillParamsValue = new SkybillParamsValue();
        }
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 255
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 255
    Points : 8 548
    Points
    8 548
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i = 1; ...) {
        $this->{'skybillValue' . $i}->productCode = ...;
        ...
    }
    Mais c'est très mauvais, il vaut mieux passer par un tableau.

    Ton $_POST non plus n'a pas l'air très bon, tu peux également utiliser des tableaux dans ton formulaire HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="poids[]">

    Ou pour encore plus structurer la data :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="items[0][poids]">

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Merci Séb. cela fonctionne.
    Cependant pour ma function __construct(), je peux aussi faire un for ou il y a une meilleur façon de le faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function __construct()
        {
            //$this->esdValue = new EsdValue();
            $this->headerValue = new HeaderValue();
            $this->shipperValue = new ShipperValue();
            $this->customerValue = new CustomerValue();
            $this->recipientValue = new RecipientValue();
            $this->refValue = new refValue();
    // For à partir d'ici 
            $this->skybillValue = new SkybillValue();
    //fin for
            $this->skybillParamsValue = new SkybillParamsValue();
        }
    Merci,

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 255
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 255
    Points : 8 548
    Points
    8 548
    Billets dans le blog
    17
    Par défaut
    Oui même principe.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Je ne comprends pas, j'ai encore un souci sur le fichier.
    la boucle ce fait en fin de fichier et il y a encore skybillValue sans la prise en compte du $i.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     for ($i=1; $i<$nbs; $i++) {
    $shipping->{'skybillValue' . $i}->productCode = $_POST['choix'];           
    $shipping->{'skybillValue' . $i}->shipDate = date('c');          
    $shipping->{'skybillValue' . $i}->shipHour = date('G');
    $shipping->{'skybillValue' . $i}->weight = $_POST['poids'.$i.''];
    $shipping->{'skybillValue' . $i}->service = '0';
    }
    $shipping->skybillParamsValue->numberOFParcel = $_POST['nbs'];
    $shipping->skybillParamsValue->multiParcel = $parcel;
    Résultat print_r
    [skybillValue] => SkybillValue Object ( [bulkNumber] => [codCurrency] => EUR [codValue] => [content1] => [content2] => [content3] => [content4] => [content5] => [customsCurrency] => [customsValue] => [evtCode] => DC [insuredCurrency] => [insuredValue] => [objectType] => [portCurrency] => [portValue] => [productCode] => [service] => [shipDate] => [shipHour] => [skybillRank] => [weight] => [weightUnit] => KGM ) [skybillParamsValue] => SkybillParamsValue Object ( [mode] => PDF [numberOFParcel] => 4 [multiParcel] => Y ) [password] => [skybillValue1] => stdClass Object ( [productCode] => 44 [shipDate] => 2021-11-20T17:08:11+01:00 [shipHour] => 17 [weight] => 10 [service] => 0 [objectType] => MAR [bulkNumber] => 3 [skybillRank] => 1 [height] => 20 [length] => 10 [width] => 10 ) [skybillValue2] => stdClass Object ( [productCode] => 44 [shipDate] => 2021-11-20T17:08:11+01:00 [shipHour] => 17 [weight] => 15 [service] => 0 [objectType] => MAR [bulkNumber] => 3 [skybillRank] => 2 [height] => 20 [length] => 20 [width] => 7 ) [skybillValue3] => stdClass Object ( [productCode] => 44 [shipDate] => 2021-11-20T17:08:11+01:00 [shipHour] => 17 [weight] => 20 [service] => 0 [objectType] => MAR [bulkNumber] => 3 [skybillRank] => 3 [height] => 32 [length] => 25 [width] => 18 ) )
    La je ne comprends pas ce qui ce passe.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Je viens de trouver la solution.

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 108
    Points : 16 640
    Points
    16 640
    Par défaut
    Merci de la partager, cela serait sympathique pour la communauté.

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

Discussions similaires

  1. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  2. [VBS][Débutant] Problème syntaxe boucle For
    Par _alex_ dans le forum VBScript
    Réponses: 2
    Dernier message: 26/07/2006, 14h26
  3. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  4. [batch]inventaire réseau-problème de boucle "for"
    Par mathieu_r dans le forum Windows
    Réponses: 1
    Dernier message: 23/06/2006, 20h17
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

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