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 :

revoir l'organisation d'un array (index, association)


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut revoir l'organisation d'un array (index, association)
    Bonjour,

    je vous ecris car j'ai un problème sur lequel je suis et qui me tue !!
    J'avais deja fai un post a ce sujet mais en fait l'approche que je vous ai présenté n'était pas bonne =( aussi j'ai tout refais !!
    J'espere vraiment qu'on pourra m'aider faute de quoi je devrais abandonner mon projet =(

    Voila j'ai un array "$info" avec plusieurs dimensions que j'ai formaté avec la fonction suivante
    Code php : 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
    35
     
    function afficher_tableau($tableau) 
        {
        // on fait une boucle qui lit les éléments du tableau
        foreach ($tableau as $cle=>$valeur) 
            {
            // si l'un des éléments est lui même un tableau
            // alors on applique la fonction à ce tableau
            if(is_array($valeur)) 
                {
                // on affiche le nom de la clé et
                // le début d'une liste pour
                //  décaler le contenu vers la droite
                echo $cle.' : <ul>'; 
     
                // ici se réalise la récursivité
                // c'est à dire qu'on applique la fonction
                // à l'élément en cours car c'est lui aussi un tableau
                trim(afficher_tableau($valeur)); 
     
                // on ferme la liste
                echo '</ul>'; 
                }
     
            // si ce n'est pas un tableau
            // alors on affiche le contenu de l'élément
            else
                {
                echo $cle.' = '.$valeur.' <br>';  
                }
            } 
        } 
     
     
      afficher_tableau($info);

    En sortie "afficher_tableau($info)" donne ca :
    0 :

    0 = Diagonale 40" - écran large
    1 = Technologie Matrice active TFT
    2 = Résolution 1920 x 1080
    3=......

    1 :

    0 = Diagonale
    1 = Technologie
    2 = Résolution
    3=......

    2 :

    0 = 40" - écran large
    1 = Matrice active TFT
    2 = 1920 x 1080
    3=......
    Mon but est le suivant : insérer que certaines infos dans ma table .
    D'un point de vue algo cela donnerai :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayTitreAccepte = ('diagonale','resolution','...');
    si [1:]titre ==> est dans mon array, j'insère dans ma table la valeur contenu dans [2:]valeur.
    Cf le tableau plus haut.

    Donc cela implique que je "revois" l'organisation de mon array, et de ses index =(
    Car mon titre est dans la partie "1:" et la valeur associé au meme niveau dans le "2:" (je ne sais pas si je suis assez claire)

    Et le je ne saiss absolument pas comment faire ca, j'ai passé tout mon dimanche a cherché en vain =(
    On m'avais proposé ca mais le resultat au moment de l'insert n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $values = array();
    foreach($info as $cle => $val)
      $values[] = "('".$info[$cle][0]."', '".$info[$cle][2]."')";
    $sql = "INSERT INTO jeux (`diagonale`,`resolution`) VALUES ".implode(',', $values);
    ?>

    s'il vous plait, si quelqu'un peut m'aider =( sans vous et votre aide je n'ai plus qu'a abandonner mon projet =(

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    Explique-nous plutôt ce que tu aimerais faire. Parce que là c'est assez difficile de t'aider même si j'ai plus ou moins compris ton problème.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    bonjour,

    en fait j'essaye d'alimenter une table qui contient des infos sur des tv.
    A la base j'ai travaillé avec un flux produit qui n'était pas complet.

    Je n'avais pas les infos relatives à la resolution, taille, frequence....

    J'ai pu obtenir ces infos en exploitant les urls de redirections de mes produits.
    Le array que tu vois en est le resultat.

    le problème c'est que je dois mettre a jour ma table et les champs suivants que je list dans cet array :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrayTitreAccepte = ('diagonale','resolution','...');

    si [1:]titre ==> est dans mon array, j'insère dans ma table la valeur contenu dans [2:]valeur.

    Le pb c'est que je n'arrive pas a exploiter mon array pour avoir le resultat escompté= (


    j'espere avoir été plus clair =(

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    tu devrais revoir l'organisation de ton tableau avec en clé tes titres et la description en valeur

  5. #5
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Tu devrais alors faire un tableau de ce style :

    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
    $produits = array(
        array( // Premier produit
            array(
                'titre' =>'Diagonale',
                'valeur' =>'40" - écran large'
            ),
            array(
                'titre' =>'Technologie',
                'valeur' =>'Matrice active TFT'
            ),
            array(
                'titre' =>'Résolution',
                'valeur' =>'1920 x 1080'
            )        
        ),
        array( // Deuxième produit etc...
            array(
                'titre' =>'Diagonale',
                'valeur' =>'38" - écran large'
            ),
            array(
                'titre' =>'Technologie',
                'valeur' =>'Plasma'
            ),
            array(
                'titre' =>'Résolution',
                'valeur' =>'1920 x 1080'
            )      
        )
    );
    Ensuite tu peux parcourir ton tableau comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($produits as $produit)
    {
        echo '<ul>';
        foreach($produit as $valeur)
        {
            echo '<li>' . $valeur['titre'] . ' = ' . $valeur['valeur'] . '</li>';
        }
        echo '</ul>';
    }
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    Le problème c'est que j'ai ce tableau en sortie =(

    je ne suis pas responsable de sa construction =(
    comment faire pour le modifier ? car pour le moment j'ai que ça snif

  7. #7
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Bah à partir du tableau que tu récupères (celui dont tu n'es pas responsable de sa création) tu en recréés un bien formaté comme te l'as montré Yoteco.

    Pas possible?

  8. #8
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Voilà qui devrait t'aider :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $entree = array(); // ton tableau déjà créé
    $sortie = array();
     
    $entree[] = array('Diagonale 40" - écran large', 'Technologie Matrice active TFT', 'Résolution 1920 x 1080', 'une valeur sans titre');
    $entree[] = array('Diagonale', 'Technologie', 'Résolution');
     
    foreach($entree[0] as $cle=>$valeur){
    	if(!isset($entree[1][$cle]))
    		continue;
     
    	$sortie[] = array('titre'=>$entree[1][$cle], 'valeur'=>$valeur);
     
    }

  9. #9
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    Désolé j'ai oublié de le préciser mais je suis novice en la matière =(

    techniquement comment ça se passe pour reconstruire un tableau?
    c'est a base de foreach???

  10. #10
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Je pars du principe que seules les clés 0 et 1 t'intéressent puisque tu ne parles que d'elles. Ensuite, pour avoir un couple (titre, valeur), il faut que le couple (n, n) existe où n est l'indice de tes sous tableaux d'indices 0 et 1. Donc si ce couple existe, on le stocke dans un tableau de sortie joliment nommé $sortie ^^

    Pour t'en convaincre, exécute ce code en remplaçant $entree par $info et fait :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<pre>';
    print_r($sortie);
    echo '</pre>';

    tu verras comment ce tableau est construit

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/08/2008, 18h27
  2. [array & index] retrouver index
    Par ZaaN dans le forum C#
    Réponses: 3
    Dernier message: 08/01/2008, 13h14
  3. Index associé a chaque combobox
    Par User dans le forum Delphi
    Réponses: 2
    Dernier message: 24/04/2007, 17h07
  4. [Struts]Bean populate & array index out of bound
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/11/2006, 11h03
  5. [Débutant]pb de fichier - array index out of bounds exception
    Par TheBlue dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 12/06/2006, 20h24

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