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] Transmettre un tableau 2D ? [Fait]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut [Tableaux] Transmettre un tableau 2D ?
    Bonjour !

    Je désirerais faire passer dans un champ hidden un tableau 2D. Je sais que des tableaux ne se transmettent pas ainsi par formulaire, aussi il faudrait passer par les fonctions explode/implode ou serialize/unserialize.

    Voilà mes soucis : Pour explode/implode, je n'arrive pas à les appliquer sur un tableau 2D, je sais que pour un tableau $tab[$i][$j] il faudrait d'abord linéariser $tab[$j] pour chaque $j, puis après linéariser le tout ensemble, mais je ne sais vraiment pas comment procéder.

    Serialize me semblait bien plus simple d'accès, le seul problème est qu'il me génère une chaîne comprenant des { }et des ; , ce qui est certes utile à unserialise pour pouvoir reconstruire les données, mais malheureusement est une galère sans nom à passer dans un formulaire (malgré tous les échappements de caractères spéciaux que j'aie pu faire).

    Je suis assez désespérée, cela fait quelques heures déjà que je cogite sur ce problème, sans trouver de solutions.

    Quelqu'un saurait-il m'aider ?

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Bonjour
    une autre solution serait de passer ton tableau dans la session, comme ca plus de problème d'encodage. apres tu as plusieurs possibilités
    soit tu le stockes avec un id et tu passes l'id en paramètre (comme ca tu peux le réutiliser plusieurs fois et plusieurs en meme temps)
    soit tu le stockes toujours avec le même id, si tu ne veux utiliser qu'un seul tableau ou l'utiliser qu'une fois.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci Bebel de ta réponse rapide
    Le souci est que je ne travaille pas avec des sessions (c'est une petite appli utilisée en interne)

    Je commence à trouver quelque chose à force de bidouilles...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $taille=count($tab);
    for($j=0;$j<$taille;$j++)
    {
       $lineaire.='#';
       $lineaire.=implode('|', $tab[$j]);
    }
    C'est certes un peu du bricolage, mais j'arrive à le transmettre par ce biais. Maintenant, à l'attaque de la transformation de chaîne en tableau... Si ça marche, je vérifierai une loi qui est rarement fausse pour moi : c'est souvent dans les 5 minutes suivant ton appel à l'aide sur un forum que tu trouves solution à ton problème

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    C'est une solution aussi, en fait tu réinvente un peu le serialize a ta sauce. Mais je ne vois pas pourquoi, meme si c'est une appli en interne tu ne peux pas utiliser les sessions.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Eliness
    Serialize me semblait bien plus simple d'accès, le seul problème est qu'il me génère une chaîne comprenant des { }et des ; , ce qui est certes utile à unserialise pour pouvoir reconstruire les données, mais malheureusement est une galère sans nom à passer dans un formulaire (malgré tous les échappements de caractères spéciaux que j'aie pu faire).
    Ah, qu'avez-vous essayé ? urlencode et urldecode, justement pour faire passer la forme sérialisée ?
    Transmission :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form ...>
        <input type="hidden" name="nom_champ" value="<?php echo urlencode(serialize($tab)); ?>" />
    </form>
    Récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tab = unserialize(urldecode($_POST['nom_champ']));
    print_r($tab);


    Les sessions sont effectivement ce qui a de plus transparent et vous permettent en plus de cacher les données (elles n'apparaissent pas dans la source ou dans l'URL). Vous me direz, cela vous importe peu si c'est une application interne ...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Urlencode, oui, c'est ce que je cherchais !

    J'ai trouvé entre temps comment faire l'affichage à force de boucles et de remplacements, sur le même principe que j'avais utilisé pour convertir le tableau en chaîne.

    Je vais tout de même utiliser serialize et urlencode, ça gagnera en clarté de code.

    Merci à vous deux de vos conseils et réponses rapides

  7. #7
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    De rien, mais juste un conseil si ton tableau peut etre très grand ou contenir beaucoup de données évite de passer en get dans certains cas, tu pourrais perdre des données.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Je suis habituée à passer les données en post dans la mesure du possible

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut mais encore
    Bonjour. Je sais que le post est vieux maintenant mais je continue avec mon problème.

    Je suis obligé de passer par des webservices.
    j'ai une fonction sur un serveur
    qui me retourne un tableau en 2D $table[$i][$j]
    je suis obligé de passer par un tab à 2D car j'ai une liste d'enregistrement à rappatrier

    $i=0;
    while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
    $retour[$i][0] = $row[0];
    $retour[$i][1] = $row[1];
    $retour[$i][2] = $row[2];
    $retour[$i][3] = $row[3];
    $i++;
    }
    return $retour;


    seulement à l'appel de cette fonction

    $result = ma.fonction() le résultat est inséré dans un table[1]

    comment puis je récupérer le résultat sous forme de tableau 2D également ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/11/2008, 18h32
  2. [Tableaux] transmettre tableau via un formulaire
    Par calitom dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2006, 20h30
  3. [Tableaux] submit un tableau de donnee
    Par naourass dans le forum Langage
    Réponses: 6
    Dernier message: 09/11/2005, 11h05
  4. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 14h46
  5. Réponses: 3
    Dernier message: 26/09/2005, 23h24

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