Aide - Recherche - Membres - Calendrier
Version complète : Export Excel Oki, mais problème d'affichage :/
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Cut Here
Bonjour,

toujours moi et mes problèmes de débutants icon_redface.gif

Donc j'ai réussi a Exporter mes données au format Excel (cool smile.gif ).

Mais le problème vient de l'affichage et je ne vois pas comment me dépatouiller, je vois pas de solution en l'état actuel :/.

Je mets le code (dsl pour l'indigestion) dans le forum et aussi en fichier joint.





Code
<?php

//INCLUDES
require_once("../../includes/conf.php");
require_once("../../includes/fonctions.php");



//connexion au serveur
$db = mysql_connect("$serveur", "$login", "$pass_db") or die("Echec de
connexion au serveur");
//connexion à la base de données
mysql_select_db("$base",$db) or die("Echec de selection de la base");

//Requete SQL [sélection de l'utilisateur]
$sql=mysql_query("SELECT * FROM com_profil WHERE id_com=".$_SESSION["uid"]);
$ligne = mysql_fetch_array ($sql);


// Pour déterminer le nom de mon fichier de sortie
$annee = date("Y");
$mois = date("m");
$nom2=$ligne["login"]."-".$annee."-".$mois;



// Header pour que le type de fichier soit un fichier excel (.xls)
header("Content-type: application/force-download");
header("Content-Type: application/x-msexcel");
Header('Cache-Control: public');
header('Content-Disposition: attachement; filename="'.$nom2.'.xls"');


// J'initialise mon nbre de tabulations à 0
$nb_tab1 = 0;
$nb_tab2 = 0;
$nb_tab3 = 0;
$nb_tab4 = 0;


// Liste = Mon contenu séparé par des tabulation (\t) ou retour à la ligne (\n)
$liste="";



/* SELECTION FICHE [nom de la société]*/
$sql = "SELECT id_p, nom_p FROM fiche_prospect;";
$resultat = mysql_query($sql);

//fo que je recup le nbre de champ
$nb_tab1 = mysql_num_fields($resultat)-1;

// ( j'enlève -1 car je n'affiche pas id_p)



while( $data = mysql_fetch_array($resultat) )
{

$liste.=$data["nom_p"]."\t";


//requete infos complèmentaires
if ( isset($_POST["forme"]) || isset($_POST["effectif"]) )
{
$sql2 = "SELECT id_p";
 
 // Je sélectionne mes champs suivant ce que l'utilisateur a choisi sur le formulaire
 if( isset($_POST["forme"]) )
 {
  $sql2.=", formejuridique_p";
 }
 
 if( isset($_POST["effectif"]) )
 {
  $sql2.=", effectif_p";
 }


$sql2.=" FROM infos_prospect WHERE id_p ='".$data["id_p"]."';";
$resultat2 = mysql_query($sql2) or die ("Pb pr sélection");

$nb_tab2 = mysql_num_fields($resultat2)-1;


$i = mysql_num_rows($resultat2);

// Si j'ai un résultat pour les infos alors j'affiche
if ($i != 0)
{
 while($data2 = mysql_fetch_array($resultat2))
 {
 
  // J'affiche mes champs suivant ce que l'utilisateur a choisi sur le formulaire
  if( isset($_POST["forme"]) )
  {
   $liste.=$data2["formejuridique_p"]."\t";
  }
  if( isset($_POST["effectif"]) )
  {
   $liste.=$data2["effectif_p"]."\t";
  }
 
 }
}

// Si je n'ai pas de résultat alors j'affiche juste des tabulations
else
{

 if( isset($_POST["forme"]) )
 {
  $liste.="\t";
 }
 if( isset($_POST["effectif"]) )
 {
  $liste.="\t";
 }

}

} // FIN INFO COMPLEMENTAIRES







// SELECTION CONTACTS
if ( isset($_POST["nom_c"]) )
{
$sql3 = "SELECT id_c, nom_c, sexe_c FROM contacts_prospect WHERE id_p ='".$data["id_p"]."';";
$resultat3 = mysql_query($sql3) or die ("Pb pr sélection des contacts");

$nb_tab3 = mysql_num_fields($resultat3)-3;
// j'enleve -3 a mon bre de champs car dans le fichier excel, je concatène les 3 champs pour en faire qu'un

$hack1 = $nb_tab1 + $nb_tab2-1;

$j = mysql_num_rows($resultat3);

// Si j'ai une SEULE réponse
if ($j == 1)
{
 while($data3 = mysql_fetch_array($resultat3))
 {
  if( isset($_POST["nom_c"]) )
  {
   $liste.=$data3["nom_c"].", ".$data3["sexe_c"]."\t";
  }
 }
}


//SINON SI J'AI PLUSIEURS REPONSES
else if ($j > 1)
{

 // si j'ai qu'une réponse supérieure a 1, alors je parcours mon résultalt
 for ( $p = 1; $p <= $j; $p++ )
 {
  $data3 = mysql_fetch_array ( $resultat3 );
 
  // Si c'est mon premier résultat
  if($p==1)
  {
    $liste.=$data3["nom_c"].". ".$data3["sexe_c"]."\t";
    $liste.= "\n";
  }
 
  // pour les suivants
  else  if($p < $j)
  {
 
   // Après mon retour a la ligne, j'ajoute un nbre de tabulations défini par $hack qui me permet d'aligner les champs
   for ($a=0; $a <= $hack1; $a++)
   {
    $liste.="\t";
   }
   
   $liste.=$data3["nom_c"].", ".$data3["sexe_c"]."\t";
   $liste.="\n";
 
  }
 
  // Si c'est mon dernier résultat alors je ne mets pas un retour a la ligne (\n)
  else if ($p == $j)
  {
   for ($a=0; $a <= $hack1; $a++)
   {
    $liste.="\t";
   }
   
   $liste.=$data3["nom_c"].", ".$data3["sexe_c"]."\t";
  }
 }
}


// Si par exemple mon premier client a le nom de son contact mais que le second rien, j'ajoute une tabulation, toujours dans le but que mes champs soit aligné
else
{
 $liste.="\t";
}

} // FIN CONTACTS












//REQUETES TACHES
if ( isset($_POST["date_t"]) || isset($_POST["type_t"]) )
{
$sql4 = "SELECT id_p";
if( isset($_POST["date_t"]) )
{
 $sql4.=", date_t";
}

if( isset($_POST["type_t"]) )
{
 $sql4.=", type_t";
}


$sql4.=" FROM taches_prospect WHERE id_p ='".$data["id_p"]."';";
$resultat4 = mysql_query($sql4) or die ("Pb pr sélection");

$nb_tab4 = mysql_num_fields($resultat4)-1;

$hack2 = $nb_tab1 + $nb_tab2 + $nb_tab3-1;

$l = mysql_num_rows($resultat4);


// SI J'AI UNE SEULE RÉPONSE
if ($l == 1)
{
 while($data4 = mysql_fetch_array($resultat4))
 {
  if( isset($_POST["date_t"]) )
  {
   $liste.=$data4["date_t"]."\t";
  }
  if( isset($_POST["type_t"]) )
  {
   $liste.=$data4["type_t"]."\t";
  }
 }
}


//SI J'AI PLUS D'UNE RÉPONSE ALORS
else if ($l > 1)
{
 for ( $p = 1; $p <= $l; $p++ )
 {
  $data4 = mysql_fetch_array ( $resultat4 );
 
 
  //PREMIERE REPONSE : alignement normal des celulles
  if($p==1)
  {
   if( isset($_POST["date_t"]) )
   {
    $liste.=$data4["date_t"]."\t";
   }
   if( isset($_POST["type_t"]) )
   {
    $liste.=$data4["type_t"]."\t";
   }
   $liste.= "\n";
  }
 
  else  if($p < $l)
  {
 
   for ($a=0; $a <= $hack2; $a++)
   {
    $liste.="\t";
   }
 
   if( isset($_POST["date_t"]) )
   {
    $liste.=$data4["date_t"]."\t";
   }
   if( isset($_POST["type_t"]) )
   {
    $liste.=$data4["type_t"]."\t";
   }
   
   $liste.= "\n";
 
  }
 
  // Si c la derniere ligne alors je ne mets pas mon retour a la ligne qui sera effectué tout a la fin, au changement de client
  else if($p==$l)
  {
 
   for ($a=0; $a <= $hack2; $a++)
   {
    $liste.="\t";
   }
   
   
   if( isset($_POST["date_t"]) )
   {
    $liste.=$data4["date_t"]."\t";
   }
   if( isset($_POST["type_t"]) )
   {
    $liste.=$data4["type_t"]."\t";
   }
  }
 }
}




// Si pas de résultat je mets mes tabulations pr que ça soit aligné
else
{
 if( isset($_POST["date_t"]) )
 {
  $liste.=" \t";
 }
 if( isset($_POST["type_t"]) )
 {
  $liste.=" \t";
 }
}

}





// Nouvelle ligne car nouveau client
$liste.="\n";


}

mysql_close($db);
// J'affiche tout ça
echo $liste;

?>












J'ai mis aussi un zip avec 2 fichier xls, le premier ce que j'obtiens et le second ce que j'aimerai obtenir.

Comment arriver obtenir ça ?

J'ai voulu utiliser Biffwriter ainsi que PhpwriteExcel mais pour Biffwrite il fallait le décompilateur Zend (je crois) et pour PhpwriteExcel, pleins d'erreurs (je tourne sur Easyphp 1.7) du a des fonctions obsolètes a priori mais aussi d'autres...

Donc la je suis perdu (encore :/ )


MERCI

++
Julien
Cut Here
Petit UP en espérant que qqn pourra m'aider.

Merci

++
Julien
Cut Here
Hum en fait plutot que de chercher une solution avec Export Excel qui en soit, de façon sommaire wink.gif , marche.

J'ai mis à plat et peut etre que je pourrai trouver la solution du coté des tableaux multi dimensionnel mais c'est la grande inconnue pour moi.

J'ai compris le principe mais pour pondre le code, hu je n'ais pas la la logique nécessaire icon_rolleyes.gif

Je vais continuer de chercher mais si qqn voit comment me dépatouiller par rapport au code fourni ce dessus (juste le principe wink.gif ), je ne dis pas non
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.