Salut,

Je suis entrain d'essayer un systeme d'input infinie, par exemple l'utilisateur puisse ajouter des champs comme il le souhaite je m'explique.

Formulaire 1

De base il y a 2 champs Nom,prenom en suite j'ai pa possibilite d'ajouter d'autre champ par exemple ville, adresse etc.

J'enregistre le tout dans ma table "multis" qui elle contient id, et value j'enregistre le tout sous format json

Voici ma methode d'enregistrement:

    public function add()
    {
        if($this->request->is('post'))
        {
            $insert = json_encode($this->request->data);
            $data = [];

            $data['Multi']['value'] = $insert;
            $this->Multi->save($data);
        }
    }

L'enregistrement se passe bien, par contree l'affiche c'est une autre histoire, je peux afficher que mon array en json depuis fonction debug comme ici:


    public function index()
    {

        $fetchValue = $this->Multi->find('all');
        foreach($fetchValue as $items)
        {
            $jsonSrc = $items['Multi']['value'];
            $jsonData = json_decode($jsonSrc,true);
            debug($jsonData);

        }
    }

Et voila les informations retournee:

object(stdClass) {
    Multi => object(stdClass) {
        key => array(
            (int) 0 => 'Input 1',
            (int) 1 => 'Input 2',
            (int) 2 => 'Input 3'
        )
        value => array(
            (int) 0 => 'Valeur input 1',
            (int) 1 => 'Valeur input 2',
            (int) 2 => 'Valeur input 3'
        )
    }
}

Mon objectif c'est d'essayer d'afficher les donnees correctement par exemple:

<label>Input 1</label>
<p>Valeur input 1</p>
etc
J'espere que j'etais precis dans mes explications et vous remercie pour l'aide. :)

4 réponses


Grafikart
Réponse acceptée

foreach($jsonData->Multi->key as $k => $v){
    echo $v . " > " . $jsonData->Multi->value[$k];
}

Une petite boucle foreach ne suffit pas ?

donny
Auteur

En fait j'arrive a recuperer depuis mon foreach mais pour la transformation des donnees j'ai un peu de mal a affichier par exemple
<label> Input 1></label>
<p>Valeur 1</p>

C'est au moment du decode du json que je bloque

PS: desole du temps de reponse.

donny
Auteur

J'ai resoulu le probleme, merci pour l'aide @Grafikart :)