Generation fichier .Csv sans données (PHP/SQL)

Résolu
RemyLeNulenPhp - Modifié le 17 oct. 2018 à 17:48
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 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

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
17 oct. 2018 à 17:49
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


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
17 oct. 2018 à 17:50
Fais nous également un echo de ta variable $query au passage.
0
RemyLeNulenPhp
18 oct. 2018 à 09:45
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
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié le 18 oct. 2018 à 10:58
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...";
    }
  }
}


0
Rejoignez-nous