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 :

Enregistrement "direct" d'un export (Excel)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut Enregistrement "direct" d'un export (Excel)
    Bonjour,

    Voilà j'ai tenté un reverse engineering sur l'export de phpMyAdmin, j'ai récupéré pas mal d'informations pour arriver à ce que je veux. Mais je bloque et les tuto qu'on trouve ici, enfin celui que j'ai vu, n'explique pas ce problème précis.

    J'aimerais qu'une fois mon formulaire rempli et soumi, la navigateur me propose d'enregistrer mon excel...
    Je précise donc que j'arrive déjà à faire du MySQL vers du Excel, ce qui me manque c'est l'enregistrement directement proposé après la soumission du formulaire. Comment fait-on ça ?

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de BrYs
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 014
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 014
    Par défaut
    C'est juste un problème de header ça !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=le_nom_de_ton_fichier.xls");
    header("Pragma: ");
    header("Cache-Control: ");
    un truc du style doit marcher

  3. #3
    Membre éclairé Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    Merci BrYs mias j'ai déjà ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    header('Content-Type: application/vnd.ms-excel');
    header('Expires: Thu, 12 Oct 2006 10:20:12 GMT');
    header('Content-Disposition: attachment; filename="sms_transactions.xls"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    l'algo ressemblerait vaguement à ça :

    mon formulaire html

    si (formulaire soumi) {
    proposer l'enregistrement
    }


    Donc on voit tout de suite un problème, y'a déjà du html dans cette page, donc pour la fonction header... je sais pas...
    Dans phpMyAdmin, y'a bien un formulaire (on choisit l'option "transmettre") et quand on clique sur "exporter" ben hop le navigateur il propose d'enregistrer le fichier en local...

  4. #4
    Rédacteur
    Avatar de BrYs
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 014
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 014
    Par défaut
    Citation Envoyé par Huntress
    Merci BrYs mias j'ai déjà ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    header('Content-Type: application/vnd.ms-excel');
    header('Expires: Thu, 12 Oct 2006 10:20:12 GMT');
    header('Content-Disposition: attachment; filename="sms_transactions.xls"');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    l'algo ressemblerait vaguement à ça :

    mon formulaire html

    si (formulaire soumi) {
    proposer l'enregistrement
    }


    Donc on voit tout de suite un problème, y'a déjà du html dans cette page, donc pour la fonction header... je sais pas...
    Dans phpMyAdmin, y'a bien un formulaire (on choisit l'option "transmettre") et quand on clique sur "exporter" ben hop le navigateur il propose d'enregistrer le fichier en local...
    et pourquoi tu fais pas ça :


    si (formulaire soumi) {
    proposer l'enregistrement
    }

    mon formulaire html



  5. #5
    Membre éclairé Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    Hum hum je devais être dans mon 1/4 d'heure débile
    Ca ne me paraissait pas évident qu'il m'ouvrirait ma boite de téléchargement.

    Merci BrYs

  6. #6
    Membre éclairé Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    Bon c'est plus qu' 1/4 heure
    En fait ça marche toujours pas.

    Donc je vais expliquer ce que je fais (ce qui est donc "ce qu'il ne faut pas faire")
    Une fois le formulaire soumis
    je fais ma requête,
    je mets le résultat sous forme de tableau HTML
    je le stocke dans une variable,
    et après je fais un fwrite dessus,
    bien sûr je fais un fopen et toutes les vérifs d'usage,
    je n'ai pas de réelles erreurs.

    Le soucis c'est qu'au lieu de mettre ce que je lui dis de mettre dans mon fichier il me met ma page HTML avec mon formulaire...

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    if(isset($_POST['exporter'])) {
    	/*
    	echo '<pre>';
    	print_r($_POST);
    	echo '</pre>';
    	*/
    	if(
    		!empty($_POST['deb_jour']) && !empty($_POST['deb_mois']) && !empty($_POST['deb_annee']) &&
    		!empty($_POST['fin_jour']) && !empty($_POST['fin_mois']) && !empty($_POST['fin_annee'])
    	) {
     
    		if(
    			is_numeric($_POST['deb_jour']) && is_numeric($_POST['deb_mois']) && is_numeric($_POST['deb_annee']) &&
    			is_numeric($_POST['fin_jour']) && is_numeric($_POST['fin_mois']) && is_numeric($_POST['fin_annee'])
    		) {
     
    			if(
    				mktime(0, 0, 0, $_POST['deb_mois'], $_POST['deb_jour'], $_POST['deb_annee']) <= 
    				mktime(0, 0, 0, $_POST['fin_mois'], $_POST['fin_jour'], $_POST['fin_annee'])
    			) {
     
     
    				$date_debut = $_POST['deb_annee'].'-'.sur2car($_POST['deb_mois']).'-'.sur2car($_POST['deb_jour']);
    				$date_fin   = $_POST['fin_annee'].'-'.sur2car($_POST['fin_mois']).'-'.sur2car($_POST['fin_jour']);
     
    				$requete = 'SELECT * FROM sms_transactions WHERE date_trans>="'.$date_debut.' 00:00:00" AND date_trans<="'.$date_fin.' 23:59:59"';
     
    				if($resultat = mysql_query($requete)) {
     
    					$fichier = 'sms_'.date('Ymd').'.xls';
    					if(file_exists($fichier)) unlink($fichier);
     
    					if($resource = fopen($fichier, 'x+')) {
     
    						$sortie = '
    							<table border="1">
    								<tr>
    				<th>Id transaction</th>
    ...
    									<th>Prix TTC</th>
    								</tr>
    						';
    						while($enreg = mysql_fetch_assoc($resultat)) {
    							$sortie .= '
    								<tr>
    															<td>'.$enreg['id_trans'].'</td>
    ...
    			<td>'.$enreg['prix_ttc'].'</td>
    								</tr>
    							';
    						}
     
    						$sortie .= '</table>';
     
    						header('Content-Type: application/vnd.ms-excel');
    						header('Expires: Thu, 12 Oct 2006 10:20:12 GMT');
    						header('Content-Disposition: attachment; filename="'.$fichier.'"');
    						header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    						header('Pragma: public');
     
    						fwrite($resource, $sortie);
    					}
    					else
    						$erreur_fopen = 1;
    				}
    				else
    					$erreur_sql = mysql_error();
    			}
    			else
    				$erreur_coherence = 1;
    		}
    		else
    			$erreur_format = 1;
    	}
    	else 
    		$erreur_completude = 1;
    }
    Je sais pas si je suis débile aujourd'hui mais je voudrais juste qu'il me mette mon résultat dans mon fichier xls

    BrYs... ? Tu as une idée de ce qui va pas... ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/09/2008, 20h23
  2. Réponses: 5
    Dernier message: 29/09/2005, 13h55

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