Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2010, 08h03   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 39
Points : 0
Points : 0
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 :
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 :
Citation:
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 :
$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 :
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 =(
kairi084 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 08h37   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 24

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

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
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.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 08h58   #3
Invité de passage
 
Inscription : septembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 39
Points : 0
Points : 0
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 :
$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 =(
kairi084 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h00   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
tu devrais revoir l'organisation de ton tableau avec en clé tes titres et la description en valeur
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h17   #5
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 24

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

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Tu devrais alors faire un tableau de ce style :

Code :
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 :
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>';
}
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h24   #6
Invité de passage
 
Inscription : septembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 39
Points : 0
Points : 0
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
kairi084 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h26   #7
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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?
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h41   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Voilà qui devrait t'aider :

Code php :
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);
 
}
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h57   #9
Invité de passage
 
Inscription : septembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 39
Points : 0
Points : 0
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???
kairi084 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h02   #10
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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 :
1
2
3
4
 
echo '<pre>';
print_r($sortie);
echo '</pre>';

tu verras comment ce tableau est construit
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h15.


 
 
 
 
Partenaires

Hébergement Web