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 :

affichage tableau json dans une page


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut affichage tableau json dans une page
    Bonjour,

    Je vais essayer d'expliquer mon problème le plus clairement possible:

    Sur une première page j'ai créer un arbre permettant d'afficher toute l'arborescence à partir d'un dossier:

    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
    <?php
    function affiche($dir){
    	echo "<ul>";
    	$dossier = opendir($dir);
    	while ($fichier = readdir ($dossier)){   
    		if ($fichier != "." && $fichier != ".."){           
    			$chemin = $dir.'/'.$fichier;           
    			if(is_dir($chemin) ){
    				echo "<li>$fichier</li>";   
    				affiche($chemin);
    			}else{
    				echo '<li><a href="javascript:charger(\''.$chemin.'\')">'.$fichier.'</a></li>';  
    			}	
    		} 
    	}
    	closedir ($dossier);    
    	echo "</ul>";   
    }
    ?>
    <form name="f1" action = "arrive.php" method="post">
    	<input type = "hidden"   name = "nom"/>
    <?php
    affiche('C:/developpement/mon_chemin/source');
    ?>
    </form>
    <script type="text/javascript">
    function charger(p1){
    	document.forms["f1"].nom.value = p1;
    	f1.submit();
    }
    </script>
    Ceci me permet de cliquer sur les fichiers .js ou .json qui sont contenu dans tous les sous-dossiers et par la suite de pouvoir afficher le chemin dans la page redirigée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     	echo "Vous avez sélectionner le fichier: ";
    	echo"<br>";
    	echo $_POST['nom'];
    ?>
    et donc de récupérer mon chemin.

    Mon soucis et que je n'arrive pas à afficher le json sous forme de tableau =x
    Et la seul chose que j'arrive a afficher c'est mon chemin <help_me> </help_me>
    j'ai déjà fait pas mal de recherche mais rien trouver de concluant ...
    (pour info mes fichier json font au minimum 200 lignes et peuvent avoir toute dimension)

    merci pour votre aide

  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
    Par défaut
    Transforme ton contenu json en array PHP avec json_decode et ensuite parcoure le avec des boucles foreach.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut
    Et bien mon malheur est que si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo $_POST['nom'];
    echo "<br>";
    $json = $_POST['nom'];
    var_dump ($json);
    ça me renvoie:
    " C:/developpement/.../mon_chemin/.../source/nom_dossier/un_fichier.json
    string 'C:/developpement/.../mon_chemin/.../source/nom_dossier/un_fichier.json' (length=59) "

    et si j'utilise json_decode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $jsonDecode = json_decode($json);
    var_dump ($jsonDecode);
    ça me renvoie:
    " null "

    à croire que mon code se fout de moi

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu as le chemin pour accéder au fichier, tu peux donc le lire (par exemple avec file_​get_​contents)
    Tu passes ensuite le contenu du fichier dans json_decode pour obtenir ton tableau et tu boucles sur ce tableau pour faire l'affichage
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut
    Voila j'arrive désormais à récupérer mon fichier json (belle avancée , j'avais une erreur qui s'affichait jusqu'à ce que je change la couleur de mon background ... je chercherais cette réponse plus tard ... ).

    Mais voila, quand on lance un boomerang, faut savoir le rattraper ..
    Et je ne vois pas encore de solution pour pouvoir afficher un fichier json (qui peut avoir n'importe quel dimension, clé et valeur)

    j'illustre:

    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
     
    var inconnue = {
    	"application.title": "[en]Costing",
     
    	"general.modify": "[en]Modifier",
    	"general.datePattern.L": "MM/DD/YYYY",
     
    	"menu.costingRecord": "[en]Fiche costing",
    	"menu.admin": "[en]Administration",
    	"menu.admin.rawMaterialType": "[en]Type de matière première",
    	"menu.admin.rawMaterial": "[en]Matière première",
    	"menu.admin.rapprochementMatiere": "[en]Rapprochement matière première",
    	"menu.admin.devise": "[en]Devise",
     
             // 400 lignes plus loin ...
     
            "propurchaser.title": "[en]Lien Propurchaser",
    	"propurchaser.level.PUBLIC": "[en]Public",
    	"propurchaser.level.PRIVATE": "[en]Privée",
    	"propurchaser.region": "[en]Régions",
    	"propurchaser.category": "[en]Catégories",
    	"propurchaser.commodity": "[en]Marchandise",
     
    	"currency.admin.title": "[en]Administration des devises",
    	"currency.addCurrency": "[en]Ajouter une devise",
    	"currency.currency": "[en]Devise",
    	"currency.libelleCourt" : "[en]Libellé court",
    	"currency.libelleLong": "[en]Libellé long",
    	"currency.header.propurchaser": "[en]Lien Propurchaser",
    	"currency.error.same": "[en]Il existe déjà une devise avec le même libellé court"
    };


    m'enfin là il est pas trop dur mais je dois pouvoir en faire pour des json de ce genre la aussi
    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
     
    {
        "glossary": {
            "title": "example glossary",
    		"GlossDiv": {
                "title": "S",
    			"GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
    					"SortAs": "SGML",
    					"GlossTerm": "Standard Generalized Markup Language",
    					"Acronym": "SGML",
    					"Abbrev": "ISO 8879:1986",
    					"GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
    						"GlossSeeAlso": ["GML", "XML"]
                        },
    					"GlossSee": "markup"
                    }
                }
            }
        }
    }

    bref si vous auriez juste un ou deux petit conseils ça serait sympa

    PS: merci pour les conseils précédents, très utile

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Personnellement j'utiliserais le 2e paramètre json_encode pour convertir l'horrible chaine en tableau et ensuite un affichage HTML à coup de foreachs récursifs. Pour la tête de l'affichage HTML, là par contre je sèche.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut
    L'idéal serait que je puisse afficher sous forme de chemin, par exemple si je reprend le deuxième json que j'ai afficher, obtenir:
    "Glossary/GlossDiv/GlossList/Accronyme" et afficher la valeur "SGML".

    Si je peux expliquer un peu plus en détail le but de ce développement, c'est de pouvoir permettre à un utilisateur/traducteur de sélectionner un fichier(json) qui correspond à tout les textes affichés sur des applications/sites (fichiers json à traduire stockés dans le dossier "source")(ce que j'ai déjà fait)...
    ... Pour afficher clairement la valeur que doit traduire le traducteur (comme dans l'exemple précédent avec "SGML") ainsi qu'afficher le chemin pour qu'il n'y ait pas d’ambiguïté dans le cas ou la valeur serait la même mais avec un chemin et donc une clé différente (ex: Glossary/GlossDiv/GlossList/GlossEntry/Acronym/SGML \\ Glossary/GlossDiv/GlossList/GlossEntry/SortAs/SGML) (ce que j'essaye en ce moment de faire )...
    ... pour ensuite afficher le chemin et une zone d'écriture à valider dans un second tableau pour créer un second json (avec la valeur traduit en anglais/chinois/...) qui sera stocké dans un dossier "destination" avec la même arborescence que dans le fichier "source" pour permettre aux dev de récupérer le fichier et de tout traduire d'un coup d'un seul! (ce que je vais devoir faire après)(et oui j'ai prévu de quoi m'amuser encore un peu )...

    voili voilou

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut
    au sujet de mon var_dump qui renvoyait "null", le problème était juste que le fichier json ne doit rien contenir avant ou après ses crochets { }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $jsonFile = file_get_contents($jsonPost);
    $str = $jsonFile;
    $pos = strpos($str, '{');
    $newStr = substr($str, $pos);
    $json_corrige = rtrim ($newStr, ";. .\n.\t.\r.\0.\x0B.'");
    $jsonDecode = json_decode($json_corrige, true);
    var_dump($jsonDecode);
    Mais bon ça me donne toujours pas de solution pour pouvoir afficher le fichier
    Pour le code y a moyen de le réduire mais je préfère avoir une structure assez explicite pour le moment.

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

Discussions similaires

  1. [Excel] Cellules d'un tableau Excel dans une page Web
    Par orphen_7 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/05/2008, 11h57
  2. Tableau Excel dans une page web
    Par JmL40 dans le forum Excel
    Réponses: 1
    Dernier message: 25/06/2007, 11h07
  3. Imprimer un tableau présent dans une page php
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/07/2006, 09h08
  4. Affichage d'un tableau perl dans une page HTML
    Par Jim_Nastiq dans le forum Web
    Réponses: 7
    Dernier message: 13/04/2006, 11h27
  5. Affichage de donnée dans une page
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 21/02/2006, 17h54

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