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 :

Convertir tableau php en jQuery


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut Convertir tableau php en jQuery
    Bonjour, bonsoir,

    Je bute sur une syntaxe...

    J'aimerais convertir un tableau jQuery comme celui ci dessous...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var listel = [
     
    	"Types = 1;Ingrédients = 2",
    	"Côtés = 1;Champs = 2;Surfaces = 3"
     
    ];
    En tableau php comme ci-dessous...
    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
     
    <?php
    $categories = array(
     
    	array(
     
    		'nom_cat_1' => 'Types',
    		'nom_cat_2' => 'Ingrédients'
     
    	),
    	array(
     
    		'nom_cat_1' => 'Côtés',
    		'nom_cat_2' => 'Champs',
    		'nom_cat_3' => 'Surfaces'
     
    	),
     
    );
    ?>
    Pour pouvoir afficher avec une boucle dans un echo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $n =1;
    foreach( $categories as $categorie => $value ) :
     
    	echo '"' . $value . ' = ' . $n . ';",';
     
    	$n++;
     
    endforeach;
    ?>
    Pour l'instant avec le echo ci-dessus il m'affiche -> "Types = 1;","Ingrédients = 2;","Cotés = 3;","Champs = 4;","Surfaces = 5;",

    Donc il met des guillemets et virgule en trop
    Mais il me faut :
    "Types = 1;Ingrédients = 2",
    "Côtés = 1;Champs = 2;Surfaces = 3",

    Je ne sais pas si je suis assez clair mais je l'espère.

    Dans l'attente de vos lumières, je vous souhaite une bonne nuit.

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    J'ai relu 4 fois avec plein de bonne volonté... rien compris.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Salut,

    Me disait bien que bordéliques mes explications.

    Au fait c'est l'inverse de ce que je disais que je souhaite

    Donc en gros, j'ai un tableau PHP comme ceci :
    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
     
    <?php
    $tabCat = array(
     
        array( // Catàgories 1
     
            'Types',
            'Ingrédients'
     
        ),
        array( // Catégories 2
     
            'Côtés',
            'Champs',
            'Surfaces'
     
        )
     
    );
    ?>
    Et je souhaite le covertir en tableau jQuery comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    var tabCat = [
     
        "Types = 1;Ingrédients = 2",
        "Côtés =1; Champs = 2;Surface = 3"
     
    ];
    </script>
    Désolé pour le smilblick... j'espère que c'est plus clair et merci pour toute l'aide qu'on pourra m'apporter.

    Bonne journée.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,


  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Je rebondis sur le sujet pour dire...

    Donc au final dans le script jQuery faudrait une boucle foreach php du genre :
    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
     
    <script type="text/javascript">
     
    var tabCat = [
     
        <?php
        $tabCat = array(
     
            array(
     
                'Types',
                'Ingrédients',
     
            ),
            array(
     
                'Côtés',
                'Champs',
                'Surfaces',
     
            )
     
        );
     
        foreach( $tabCat as $cat => $value ) :
     
            // Ici la concaténation pour obtenir le tableau voulu
     
            // "Types = 1;Ingrédients = 2",
            // "Côtés =1; Champs = 2;Surface = 3"
     
            echo ... 
     
        endforeach;
        ?>
     
    ]
    </script>
    3 jours que je galère

  6. #6
    Invité
    Invité(e)
    Par défaut
    1- Soit coté PHP :
    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
    <?php
    foreach( $tabCat as $index => $categorie )
    {
    	$tabCat_js[$index] = [];
    	foreach( $categorie as $idx => $elt )
    	{
    		$tabCat_js[$index][$idx] = $elt.'='.($idx+1).';'; // de la forme 'Types=1;'
    	}
    	$tabCat_js[$index] = implode('',$tabCat_js[$index]); // on concatène
    }
    ?>
    <script>
    var tabCat = <?php echo json_encode($tabCat_js); ?>;
    console.log( tabCat );
    </script>
    2- Soit coté JavaScript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <script>
    var tabCat_json = <?php echo json_encode($tabCat); ?>;
     
    var tabCat = [];
    tabCat_json.forEach( function(categorie,index){
    	tabCat[index] = [];
    	categorie.forEach( function(elt,idx){
    		tabCat[index][idx] = elt+'='+(idx+1)+';'; // de la forme 'Types=1;'
    	});
    	tabCat[index] = tabCat[index].join(''); // on concatène
    });
    	console.log( tabCat );
    </script>
    Au choix.

    Dans les 2 cas, on obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array [ "Types=1;Ingrédients=2;", "Côtés=1;Champs=2;Surfaces=3;" ]
    Dernière modification par Invité ; 06/11/2018 à 12h31.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Bonsoir à tous,

    Tout d'abord, Merci pour ta réponse jreaux62 !

    Malheureusement je n'ai pas réussi, du moins ça ne marche pas avec ta méthode, ou j'ai raté un truc mais j'ai retourné la chose dans tout les sens et rien à faire.

    Au départ j'ai retranscris ton code comme tu la dis dans ma boucle, en fonction de celle-ci donc, et non.. bon c'est une boucle dans Wordpress, peut-être et même sûrement qu'i y a un truc qui ne joue pas...

    Bref cela dit, j'ai réussi avec à obtenir le même résultat que le tien avec la fonction php join() et c'est exactement ça ce que je veux à un détail près.

    Je te montre la boucle que j'ai 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
     
    <?php		
    $n = 1;
     
    echo '"';
     
    foreach( $taxonomies as $taxonomy => $tax ) :
     
    	if( $tax->object_type[0] == $cpt ) :
     
    		$cats = array( $tax->labels->name . ' = ' . $n++ . ';' );
     
    		echo join( '', $cats );
     
    	endif;
     
    endforeach;
     
    echo '"';
    ?>
    Bon je te l'accorde c'est un peu primaire mais ça fonctionne et c'est le principal.

    Le tout petit problème que je disais est qu'il affiche un ; (point virgule) à la fin du dernier item... "Types = 1; Ingrédients = 2;"... comme avec ta méthode...
    Au fait tout ça me remplit un <select><option> et il se sert des ;comme séparateurs pour rajouter une balise <option> et comme il y en a un à la fin, ben du coup il met à la fin un <option> vide !

    J'ai essayé de supprimer les derniers ; de chaque item avec un str_replace() et une autre fonction trouvée sur le net qui détecte le dernier item d'un tableau mais en vain... ou il enlève tous les ; de tous les items ou ça ne marche simplement pas... si tu as une piste ou une solution, je suis preneur.

    Dans tous les cas, je te remercie pour ton aide.

    PS. Je regarderai sans faute plus en profondeur ta méthode.

  8. #8
    Invité
    Invité(e)
    Par défaut

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Alors j'ai essayé avec implode() et même avec les deux combinés implode() et join() mais toujours le même résultat... "Types = 1;Ingrédients = 2;" (sacré dernier point virgule )

    De plus je me suis rendu compte qu'il ne prend qu'une catégorie en compte. Je m'explique.

    Le tableau en dur est comme ceci :

    "Types = 1;Ingrédients = 2", // bloque de catégories 1
    "Côtés = 1;Champs = 2;Surfaces = 3", // bloque de catégories 2

    Et le tableau final n'affiche que le premier bloque de catégories (première ligne) -> "Types = 1;Ingrédients = 2;"... il zappe les autres bloques

    Disons que le soucis du point virgule est secondaire mais le fait qu'il n'affiche pas tous les bloques de catégories, me pose vraiment problème. Serait-ce à cause du join() ou son alias implode() ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    OK.
    Je n'avais pas vu qu'il n'y avait pas de ; à la fin.

    Il suffit de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    foreach( $tabCat as $index => $categorie )
    {
    	$tabCat_js[$index] = [];
    	foreach( $categorie as $idx => $elt )
    	{
    		$tabCat_js[$index][$idx] = $elt.'='.($idx+1).';'; // de la forme 'Types=1;'
    	}
    	$tabCat_js[$index] = implode('',$tabCat_js[$index]); // on concatène
    }
    ?>
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    foreach( $tabCat as $index => $categorie )
    {
    	$tabCat_js[$index] = [];
    	foreach( $categorie as $idx => $elt )
    	{
    		$tabCat_js[$index][$idx] = $elt.'='.($idx+1); // de la forme 'Types=1'
    	}
    	$tabCat_js[$index] = implode(';',$tabCat_js[$index]); // on concatène avec le ; comme séparateur
    }
    ?>
    Et j'obtiens le résultat attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array [ "Types=1;Ingrédients=2", "Côtés=1;Champs=2;Surfaces=3" ]

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Merci encore jreaux !

    Je n'ai pas le temps ce soir mais regarderai tout ça demain de plus près et surtout ta version json_encode().

    Bonne soirée !

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Bonsoir à tous,

    Bon jreaux j'ai réussi à faire marcher ton bout de code, et il fonctionne nickel... en front-end.

    Comme je disais, je travaille avec Wordpress et lorsqu'il s'agit de sauvegarder (un widget) en back-end.. ben là nan.

    J'ai passé mes 16 dernières heures de sommeil à var_dumper

    Bref je vais creuser d'autres pistes (dans 3 jours au moins) et je verrais bien.

    En tous cas un grand merci à toi, ça m'aura permis de mieux comprendre json.

    Bonne soirée !

  13. #13
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour,
    Honnêtement je rejoins l'avis (bien que bref ^^) de jreaux62 pour la conversion de données contenues dans un tableau PHP pour le faire passer en Javascript.
    Vouloir parcourir ton tableau pour concaténer tes données et souvent long et fastidieux.
    Je te conseille plutôt la méthode json_decode().
    Exemple :
    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
    <?php
    // Içi ton script PHP qui contient tes données.
    $tabCat = array(
        array(
            'cat1' => 'Types',
            'cat2' => 'Ingrédients'
        ),
        array(
            'cat1' => 'Côtés',
            'cat2' => 'Champs',
            'cat3' => 'Surfaces'
        )
    );
     
    // Là tu inverses tes clés avec tes données pour placer tes catégories comme valeur
    // Attention ce parcours de tableau ne fonctionne que pour les tableaux avec 2 dimensions.
    foreach($tabCat as &$value)
    {
        $value = array_flip($value);
    }
    Du coté de ta vue HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    	var data = <?php echo json_encode($tabCat); ?>;
    	// La tu peux manipuler tes données je js
    	data.forEach(function(element) {
    		console.log( element );
    		if(element.hasOwnProperty('Types')) {
    			alert(element.Types); // = cat1
    		}
    	});
    </script>
    Bon courage

Discussions similaires

  1. Convertir tableau php vers JavaScript
    Par vinkey_33 dans le forum AJAX
    Réponses: 2
    Dernier message: 19/06/2017, 12h05
  2. Convertir un tableau jquery en tableau php
    Par djoufouf dans le forum jQuery
    Réponses: 10
    Dernier message: 16/11/2015, 17h57
  3. [PostgreSQL] Convertir un PostgreSQL tableau en un PHP tableau
    Par franc82 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/06/2009, 14h06
  4. [PHP-JS] convertir tableau php en tableau javascript
    Par stecale dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2006, 18h09
  5. convertir tableau d'entier en char[]
    Par nin47 dans le forum C
    Réponses: 20
    Dernier message: 12/10/2005, 21h03

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