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 :

valeurs de tableaux (array) vers une represantation en json + undefined offset


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut valeurs de tableaux (array) vers une represantation en json + undefined offset
    Bonjour,

    Je récupère les valeurs qui se trouvent dans 2 tableaux (array).
    Ensuite, je veux afficher dans le format json :
    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
    // un article :
    
    {
    "numero":123456789,
    "article":[
    { "titre":"", "type":"mobile", "date":"2015-07-31", "couleur":"rouge" }
    ]
    }
    
    // plusierus articles
    '{
    "numero":123456789,
    "article":[
    { "titre":"", "type":"mobile", "date":"2015-07-31", "couleur":"rouge" },
    { "titre":"", "type":"mobile", "date":"2015-07-29", "couleur":"bleu" },
    { "titre":"", "type":"articule", "date":"2015-07-30", "couleur":"blanc" }
    ]
    }
    Alors je fais comme cela :
    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
    //...
    	$numero_article = $array_data_brut['id_numero'];
     
    	$txt_depart = '{"numero":' . $numero_article . ',
    				"article":[';
     
     
    	foreach ($array_data as $vlrs_array_data)
    		{
    			$trouver = explode('N',$vlrs_array_data['price'], 2); // trouver N
     
    			$type_array_data = $trouver[0]; // avant N, tous ce qu'il y a 
    			$couleur_array_data = $trouver[1]; // apres N ...                           // ligne 13  Undefined offset:!!!!!
    			$date_facture = date("Y-m-d",$date_array[1]);
     
    			$txt_contenu = '{"titre":"", 
    							   "type":"' . $type_array_data	. ',
    							   "date":"' . $date_facture	. '", 
    							   "couleur":"' . $couleur_array_data	. '" }';
     
     
     
    		}
     
    	$txt_fin = ']}';
     
    	$text = $txt_depart + $txt_contenu + $txt_fin;
    	echo $text;
    	exit();
    Problème 1 :
    J'obtiens :

    {"numero":25783,
    "article":[{ "titre":"",
    "type":"",
    "date":"2015-07-31",
    "couleur":"" }

    ]}

    Comme vous voyez, ci-desus, es variables ($type_array_data et $couleur_array_data) sont vides donc les champs sont vides ("type" et "couleur")
    Pourqoui je n'ai pas pu récupérer les valeurs ?

    Problème 2 :
    j'ai un message
    " Notice: Undefined offset: 1 in afficher_json.php on line 13"
    Que je dois faire ?


    S'il y a plus d'articles, par exemple 2 ou 3 etc :
    Problème 3

    Comment je peux mettre une virgule entre deux accolades (} , {) lorsqu'il y a plusiers articles ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $vlrs_array_data['price'] ne contient pas de 'N' donc le explode ne donne pas 2 élements.
    Contrôle ce que contient la variable.

    Pour le fond, construit un tableau PHP et utilise json_encode(), ne fait pas ton json à la main.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Fious Sabotage,

    Merci pour cela...
    J'ai les valeurs de mes variable.... problème 1 a été reglé

    Alors je vais voir la reste en faisant un autre array... et en utilisant fonction 'json_encode' et je vais revenir pour donner les nouvelles....
    Merci encore

  4. #4
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Salut Sabotage,
    Citation Envoyé par sabotage Voir le message
    Pour le fond, construit un tableau PHP et utilise json_encode(), ne fait pas ton json à la main.
    J'ai avancé pas mal :
    Voici mon 1er array ($array_data_brut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (
        [0] => Array
            (
                [id_numero] => 25783
                [variant] => 0012722133
                [name] => Inconnu
              )
     
    )
    Voici mon 2e array ($array_data)
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    (
        [0] => Array
            (
                [typclr] => articule__blanc
                [titre] => inconnu
                [taille] => 000
                [nom] => inconnu
                    (
                    )
                [taxes] => Array
                    (
                    )
     
            )
     
        [1] => Array
              (
                [typclr] => mobile__bleu
                [titre] => inconnu
                [taille] => 000
                [nom] => inconnu
                    (
                    )
                [taxes] => Array
                    (
                    )
     
            )
     
        [2] => Array
            (
                [typclr] => mobile__rouge
                [titre] => inconnu
                [taille] => 000
                [nom] => inconnu
                    (
                    )
                [taxes] => Array
                    (
                    )
     
            )
     
    )
    Si je ne trompe pas, il faudrait que mon array pour json_encode soit comme cela :

    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
    35
    36
    Array
    (
        [0] => Array
            (
                [numero] => 25783
            )
     
        [article] => Array
            (
                [0] => Array
                    (
                        [titre] => 
                        [type] => articule
                        [date] => 2015-05-28
                        [couleur] => blanc
                    )
     
            [0] => Array
                    (
                        [titre] => 
                        [type] => mobile
                        [date] => 2015-05-28
                        [couleur] => bleu
                    )
     
           [0] => Array
                    (
                        [titre] => 
                        [type] => mobile
                        [date] => 2015-05-28
                        [couleur] => rouge
                    )
     
            )
     
    )
    Alors ce que je fais :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    $myNewArray_numero = array(); //  C’est pour la 1re partie qui englobe les articles....
    $myNewArray_pour_json = array();  // c'est pour json_encode
    																			//$myNewArray_numero = ('numero' => $array_data_brut['id_numero']);               //Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW)
    $myNewArray_numero = array('numero' => $array_data_brut['id_numero']);
    //print_r($myNewArray_numero);
    //exit();	
     
     
     
     
    $myNewArray_articles = array(); ////  C’est pour les articles qui sera dans la 1re partie où il y a 'numero'.
    foreach ($array_data as $vlr_array_data)
    {
     
    	$trouver = explode('__',$vlr_array_data['typclr'], 2); 
    	$type_array_data = $trouver[0]; 
    	$couleur_array_data = $trouver[1]; 
     
     
     
    	$myNewArray_articles = array('titre' => '','type' => $type_array_data,'date' => $date_facture,'couleur' => $couleur_array_data);
    	//print_r($myNewArray_articles);
     
    	//$myNewArray_numero = array_merge($myNewArray_numero, $myNewArray_articles);
    		//print_r($myNewArray_numero);
     
    /*	
    	$myNewArray_pour_json = array( array($myNewArray_numero),
    						    	   array('article' => $myNewArray_articles));
     
    */
     
     
     
    	$myNewArray_pour_json = array($myNewArray_numero, 'article' => array( $myNewArray_articles));
     
     
     
     
     
    	print_r($myNewArray_pour_json);
     
    }
     
    exit();
    Mais je n’obtiens pas comme dans l'exemple ci-dessus.
    Voici ce que j'obtiens :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Array
    (
        [0] => Array
            (
                [numero] => 25783
            )
     
        [article] => Array
            (
                [0] => Array
                    (
                        [titre] => 
                        [type] => articule
                        [date] => 2015-05-28
                        [couleur] => blanc
                    )
     
            )
     
    )
    Array
    (
        [0] => Array
            (
                [numero] => 25783
            )
     
        [article] => Array
            (
                [0] => Array
                    (
                        [titre] => 
                        [type] => mobile
                        [date] => 2015-05-28
                        [couleur] => bleu
                    )
     
            )
     
    )
    Array
    (
        [0] => Array
            (
                [numero] => 25783
            )
     
        [article] => Array
            (
                [0] => Array
                    (
                        [titre] => 
                        [type] => mobile
                        [date] => 2015-05-28
                        [couleur] => rouge
                    )
     
            )
     
    )
    Alors je n'arrive pas mettre les articles ($array_data) dans la 1re ($array_data_brut) : "numero", c"est répété au lieu d'un seul fois au début de ....

    Que je dois faire ?
    Merci et bonne soirée

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut faire simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $result = array();
    $result['numero'] = $array_data_brut['id_numero'];
     
    foreach ($array_data as $value) {
    	$explode = explode('__',$vlr_array_data['typclr'], 2); 
     	$result['articles'][] = array('titre' => '','type' => $explode[0], 'couleur' => $explode[1], 'date' => $date_facture);
    }
     
    print_r($result);
    exit();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Excellent Sabotage...

    Merci et bonne journée

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

Discussions similaires

  1. Array vers une table SQL
    Par cnaboul dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/12/2008, 13h37
  2. garder les valeurs d'un array pour une pagination
    Par berti dans le forum Langage
    Réponses: 4
    Dernier message: 08/07/2008, 20h04
  3. Réponses: 7
    Dernier message: 30/01/2008, 18h39
  4. Réponses: 6
    Dernier message: 10/03/2007, 12h42
  5. Réponses: 1
    Dernier message: 19/02/2007, 16h05

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