Generation fichier .Csv sans données (PHP/SQL) [Résolu]

- 17 oct. 2018 à 16:01 - Dernière réponse :
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 18 oct. 2018 à 10:57
Bonjour,

Je programme une site web et j'ai un tableau que je voudrais exporter en .csv j'utilise donc fputcsv mais il me genere un fichier csv vide sans donnée !
Je cherche depuis 3-4 heure en vain je vien donc vers vous !

voici mon code :
 <input type="submit" name ="valider3" value ="Exporter" style="border-radius: 5px"/>
        <?php 

          if(isset($_REQUEST['valider3'])){
            if($_POST['valider3'] == "Exporter"){
           
              $mat = $_POST['matricule1'];
              $mat=substr($mat,0,50);
                  
              $bdd = mysqli_connect('localhost', 'root','','rhtab');
             
              $query = 'SELECT * FROM typeabsencetab where MATRICULE = "'.$mat.'"';
              
              $result = mysqli_query($bdd,$query) or die(mysqli_error());
              $fp = fopen('tests.csv', 'w');
        
              while($row = mysqli_fetch_array($result))
              {
                fputcsv($fp, $row);

              }

              fclose($fp);
              exit;
            }
          }
        ?>


EDIT : Ajout des balises de code

Sachant que la requette fonctionne correctement.

cordialment
Afficher la suite 

Votre réponse

4 réponses

Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 17 oct. 2018 à 17:49
0
Merci
Bonjour,

As tu fais un print_r de ta variable $row pour voir ce qu'elle retourne ?

et dans l'idéal, appliques les conseils donnés ici :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Sans oublier, pour tes prochains messages, comment utiliser les BALISES DE CODE pour poster ton code sur le forum :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 17 oct. 2018 à 17:50
Fais nous également un echo de ta variable $query au passage.
Commenter la réponse de jordane45
- 18 oct. 2018 à 09:45
0
Merci
Bonjour jordane, merci de ta réponse !

le print($query) me renvoie la bonne requete ( tester sur ma base de donnée ) et renvoie donc des données

par contre le var_dump($row) ou print_r($row) ne renvoie rien
Commenter la réponse de RemyLeNulenPhp
Messages postés
23273
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2018
- Modifié par jordane45 le 18/10/2018 à 10:58
0
Merci
Essaye ça
nb: Place le code PHP AVANT tout code html....

<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// Connexion à la bdd
$bdd = mysqli_connect('localhost', 'root','','rhtab');

// Check connection
if (mysqli_connect_errno()){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  exit();
}

//récupération PROPRE des variables AVANT de les utiliser
 $mat = !empty($_POST['matricule1']) ? substr($_POST['matricule1'],0,50) : NULL;
 


if(isset($_POST['valider3'])){
  if($_POST['valider3'] == "Exporter"){
 
    if($mat){
   
        $query = 'SELECT * 
                  FROM typeabsencetab 
                  WHERE MATRICULE = "'.$mat.'"';
      
        $result = mysqli_query($bdd,$query); 
        if(!$result){
          echo("Erreur dans la requête: " . mysqli_error($bdd));  
          exit();
        }
      
        $fp = fopen('tests.csv', 'w');

        while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
        {
          echo "<pre>";
          print_r($row);
          echo "</pre>";
          fputcsv($fp, $row);
        }

        fclose($fp);
        exit;
     
    }else{
      echo "Aucun Matricule à traiter...";
    }
  }
}


Cordialement, 
Jordane                                                                 
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.