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 :

passage variable d'un formulaire à un autre


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut passage variable d'un formulaire à un autre
    (débutant)

    Bonjour,

    Je tente la manip d'enregistrer un fichier csv en cliquant sur un bouton. Le fichier csv contient le résultat d'une requête.

    Un premier formulaire affiche le résultat de la requête dans un tableau.
    Un bouton pemet(trait) d'exporter le résultat en csv.
    L'extrait du premier formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php...
    echo "
    			<form name='export' action='export.php' method='POST' >
    		<button type='submit' class='btn btn-info'>Exporter le résultat en CSV</button>" ;
    		$listope = pg_fetch_all($marequete) ;
    		"<input type='hidden' value="; echo $listope; "name='listope'>
    			</form>" ;
    		} 
    ?>
    Je stocke le résultat de la requête dans et dans un champ caché. renvoie bien le résultat.
    L'idée est ensuite d'envoyer le traitement de l'export dans le formulaire export.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
    16
    17
    <?php
    //prolongation session
    session_start() ;
    //importation config.php
    require('./require/config.php');
     
    //Generate the CSV file header
    header("Content-type: text/csv; charset=UTF-8");
    header("Content-disposition: attachment; filename=donnees.csv");
     
    // create a file pointer connected to the output stream
    $output = fopen("php://output", "w");
     
    foreach ($listope as $line) {
    		fputcsv($output, $line);
    		} ;
    ?>
    Ici la variable $listope est vide avec comme message :
    <br />
    <b>Warning</b>: Invalid argument supplied for foreach() in <b>C:\ms4w\Apache\site\form_php\metadonnees\export.php</b> on line <b>19</b><br />
    Comment récupérer correctement la variable pour générer l'export ?
    MErci,

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    regarde ce que tu as écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($listope] as $line)
    y a pas un p'tit truc en trop par hasard ?

    D'après ce que tu as écrit, la valeur devrait être dans $_POST['listope']

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    echo "
    			<form name='export' action='export.php' method='POST' >
    		<button type='submit' class='btn btn-info'>Exporter le résultat en CSV</button>" ;
    		$listope = pg_fetch_all($marequete) ;
    		"<input type='hidden' value="; echo $listope; "name='listope'>
     
    			</form>" ;
    			//echo var_dump($listope) ; ok
    			echo var_dump($_POST['listope']) ;
    	} 
     
    ?>
    Le var_dump renvoie NULL et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($_POST['listope'] as $line) {
    		fputcsv($output, $line);
    		} ;
    ?>
    renvoie le même message d'erreur.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    il faut aussi que tu penses à regarder le code source de ta page web... (CTRL+u) pour y voir les boulettes.
    Déjà pg_fetch_all() te renvoie un tableau donc c'est pas affichable en l'état sans transformation, ensuite tu dois toujours échapper les valeurs que tu envoies au navigateur avec htmlspecialchars().
    Enfin tu peux grandement améliorer ton code en utilisant toutes les notations offertes par PHP (heredoc, nowdoc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $data    = pg_fetch_all($marequete);
    $listope = implode('', $data); // quelque chose dans ce genre
    $listope = htmlspecialchars($listope, ENT_QUOTE, utf-8);
     
    echo <<<html
    <form name="export" action="export.php" method="POST">
        <button type="submit" class="btn btn-info">Exporter le résultat en CSV</button>
        <input type="hidden" value="{$listope}" name="listope">
    </form>
    html;
    Il faut potasser un peu le PHP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut
    oula...
    ok merci pour l'éclairage.

Discussions similaires

  1. Passage du variable d'un formulaire à l'autre
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/08/2013, 11h35
  2. [AC-2010] Passage de variable d'un formulaire à l'autre
    Par sardaucar dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/07/2012, 13h25
  3. Réponses: 3
    Dernier message: 25/03/2007, 19h42
  4. Réponses: 3
    Dernier message: 15/12/2006, 12h23
  5. Pb Passage variable d'un formulaire
    Par boo64 dans le forum Langage
    Réponses: 13
    Dernier message: 11/05/2006, 16h29

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