toujours moi et mes problèmes de débutants
Donc j'ai réussi a Exporter mes données au format Excel (cool
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;
?>
//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