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 :

[Tableaux] Récupération des valeurs d'un tableau avec $_GET


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut [Tableaux] Récupération des valeurs d'un tableau avec $_GET
    Bonjour,

    j'ai un souci lorsque je veux récupérer les valeur d'un tableau avec un $_GET.

    Je vais vous mettre le code pour mieux comprendre.

    Code planning.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    ...
    while($row = mysql_fetch_object($result))
    {
    $nom = $row->nom;
    $prenom = $row->prenom;
    
    $tabnom[$j] = $nom." ".$prenom; // $j est initialisé
    $j++;
    ...
    <form name='form' method='POST' action='apercu.php?tab=$tabnom'>
    <input type='submit' value='Aperçu'>
    </form>
    ?>


    Code apercu.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $tab = $_GET['tab'];
    for ($i=0 ; $i<strlen($tab) ; $i++) {
    echo $tab[$i]; // sa m'affiche Array et non les valeur du tableau
    }
    ?>

    Merci d'avance pour votre aide.

  2. #2
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne suis pas sûre que ta méthode soit la plus efficace L'intérêt d'un formulaire avec method post, c'est de pouvoir récupérer les champs avec des variables $_POST, alors utiliser un $_GET...

    Je propose plutot de passer ton tabnom par un champ caché dans le formulaire et de le récupérer par $_POST['tab']

    fichier planning.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name='form' method='POST' action='apercu.php'>
    <input type='hidden' name='tab' value=$tabnom>
    <input type='submit' value='Aperçu'>
    </form>
    fichier apercu.php :
    ________________________________________
    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]

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    le problème sera exactement le même, tu peux pas envoyer un tableau directement en HTTP. Tu peux utiliser une session ou alors le sérialiser avant de l'envoyer, si tu le sérialises il vaut effectivement mieux le passer dans un hidden, en post pour éviter la limite de caractères en get.
    Vive les roues en pierre

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    J'ai testé avec le <input type='hidden'...> mais sa ne change rien.
    Lorsque je veux afficher les valeurs du tableau sa me met toujours Array.

    Désolé, mais je ne m'y connais pas tellement en session ou sérialisation donc je ne comprends pas comment il faudrait que je m'y prenne.

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    En fait ta variable tabnom est un tableau, ce n'est pas une simple variableµ. C'est un type un peu plus complexe. Donc celui-ci ne peut pas être affiché/transmis de cette façon.

    Il faut pour cela le transformer ou le stocker ailleurs

    serialize()

    les sessions
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    le problème sera exactement le même, tu peux pas envoyer un tableau directement en HTTP.
    Je ne savais pas... C'est toujours bon à apprendre

    Je suppose que tu as besoin du contenu du tableau pour autre chose que l'affichage... sinon, le plus simple serait encore de faire la requête et l'affichage directement dans la page apercu
    Si en revanche tu as besoin du tableau pour autre chose dans plusiers pages, je te conseille également les sessions. http://php.developpez.com/cours/sessions/
    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 du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    La solution avec les sessions à l'air de fonctionner.
    Maintenant je ne sais pas comment faire pour avoir la taille du tableau.

    J'ai écrit dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    for($i=0 ; $i<strlen($_SESSION['tab'][$i] ; $i++) //je me doute que le [$i] ne doit pas etre bon mais sa m'affiche quand meme les 15 premières valeurs
    {
    echo $_SESSION['tab'][$i]."<br>";
    }
    ?>

  8. #8
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Faudrait un peu parcourir la documentation.

    Pour la taille d'un tableau c'est sizeof($_SESSION['tab']) ou count()

    Voilà
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Points : 68
    Points
    68
    Par défaut
    Désolé pour la dernière question, c'est une erreur que je n'aurais jamais du faire.

    Sinon merci à vous pour la solution, j'arrive maintenant à afficher toutes les valeurs du tableau.

    Encore merci et à une prochaine fois.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2007, 19h28
  2. Réponses: 3
    Dernier message: 12/06/2006, 12h04
  3. Réponses: 5
    Dernier message: 14/02/2006, 18h52
  4. [Tableaux] récuperer des valeurs d un tableau
    Par student007 dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2006, 22h27
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41

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