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 :

Assignation de valeurs dans un tableau lors d'une boucle qui ne sont pas identiques en dehors de la boucle [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut Assignation de valeurs dans un tableau lors d'une boucle qui ne sont pas identiques en dehors de la boucle
    Bonjour,

    Je suis sûr que c'est un problème simple mais je tourne en rond.

    Contexte : J'ai une table (extrait en pièce jointe) qui contient un champ titre2 qui peut contenir soit un titre soit une série de titres séparés par un ';'
    Le but est d'arriver à un tableau avec chaque titre sur une ligne.

    Voici le code : la requête donne le contenu de la pièce jointe et la class MachineClass est juste un objet pour porter les données.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    global $Site;
    $Site->Bdd->Phrase_SQL = "
        SELECT
            titre2_element.*
        FROM titre2_element
        WHERE titre2_element.ElementTable_Id = 3
        ORDER BY titre2_element.Id;
    ";
    $result = $Site->Bdd->Requete($Site->Bdd->Phrase_SQL);
    $i = 0;
    $TitreEl2 = array();
    while ($row = $result->fetch()) {
        $TitreEl2[$i] = new MachineClass(- 1);
        $TitreEl2[$i]->Titre2 = $row['Titre2'];
        $TitreElTab = explode(';', $TitreEl2[$i]->Titre2); //On éclate le titre2 pour obtenir les différents titres
        $Premier = 1;
        foreach ($TitreElTab as $TitreEL) { //On boucle sur les titres
            if ($Premier != 1) {
                array_push($TitreEl2,$TitreEl2[$i]); //Dans la version complète, il y a d'autres champs d'où la recopie complète de l'enregistrement
                $i ++;
            }
            else
            {
                $Premier = 0;
            }
            $TitreEl2[$i]->Titre2 = $TitreEL;
            echo '<br/>'.$i.' - '.$TitreEl2[$i]->Titre2; //ici chaque titre est bien assigné
        }
        $i ++;
    }
    foreach ($TitreEl2 AS $TitreEl)
    {
        echo '<br/>'.$TitreEl->Titre2; //pour chaque ligne avec plusieurs titres, seul le dernier apparaît dans toutes les lignes 
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Bonsoir,

    Au final, puisque les valeurs étaient bonnes dans la boucle, j'ai placé mes actions dans la boucle et tout fonctionne bien même si cela ne donne pas la raison du problème de départ.

    Bon courage à tous

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    j'ai essayé de comprendre tes explications, ton problème et surtout ton code et ben c'est chaud...
    Quand tu es confronté à un problème de cet acabit, schématise le pour avoir une vision d'ensemble, sinon tu vas avoir une cuisine de code qu'à la fin tu ne sauras plus ce qui se passe au début.

    Ce que j'ai compris : tu cherches à avoir qu'une seule machine avec pour titre le dernier titre de la liste des titres possibles.
    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
    global $Site;
    $Site->Bdd->Phrase_SQL = "
        SELECT
            titre2_element.*
        FROM titre2_element
        WHERE titre2_element.ElementTable_Id = 3
        ORDER BY titre2_element.Id;
    ";
    $result = $Site->Bdd->Requete($Site->Bdd->Phrase_SQL);
     
    $data = [];
    foreach ($result->fetchAll() as $v) {
        $parts = explode(';', $v['Titre2']); // liste des titres
        $titre = end($parts);   // extraction du dernier titre
        $machine = new MachineClass(-1);
        $machine->Titre2 = $titre;
        $data[]  = $machine;
    }
    J'ai joué aux devinettes, par contre l'utilisation du global est généralement à éviter.
    Euh : Phrase_SQL() c'est pour dire sql() ? Renomme-moi ça vite...

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

Discussions similaires

  1. ma variable change en dehors de ma boucle
    Par suzan_ dans le forum Débuter
    Réponses: 4
    Dernier message: 12/07/2011, 16h40
  2. problème access 2000 : champ qui change
    Par zineb_cerisette dans le forum Access
    Réponses: 2
    Dernier message: 30/06/2010, 11h04
  3. Réponses: 2
    Dernier message: 26/02/2009, 10h52
  4. Liens dans un tableau qui change le contenu d'un autre case da ce tableu
    Par maxtofurious dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/06/2007, 17h09
  5. [SQL] problème de variable tableau PHP contenant les données d'une jointure SQL
    Par Schpountz42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 05h59

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