exportation base de données en excel via php/mysql
Posté : 13 oct. 2014, 11:09
j'ai un fichier ou on fait le choix de un ou plusieurs numeros à extraire de la base de données sous format excel (.csv)
choixNumeros.php
export3.php
mon problème est que quand je fais le choix d'un seul numéro le fichier excel est crée avec les informations voulu mais si je choisis 2 ou plusieurs numéros le fichier est crée avec seulement le nom des colonnes deja predefinis et les lignes en dessous restent vident
choixNumeros.php
<?php
@$uuser=$_GET['user'];
require('pages/base.php');
echo '<form method="post">';
//$select = "SELECT * FROM commande WHERE user='$uuser' ";
//afficher uniquement les commandes n'ayant pas été traités c-a-d etat=0
// connection à la DB user='$uuser' AND
$link = mysql_connect ($host,$user,$password) or die ('Erreur : '.mysql_error() );
mysql_select_db($bd) or die ('Erreur :'.mysql_error());
$select = "SELECT * FROM commande WHERE traiter=1";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
while($row=mysql_fetch_assoc($result))
{
echo '<input type="checkbox" name="commandes['. $row['num_com'].']" value="'.$row['num_com'].'" />'. $row['num_com'] . ' | ';
}
;
//soumission du formulaire puis exécution de la requête update
//if( isset( $_POST['commandes'] ) ){
// $ids="('".implode(',',$_POST['commandes']) ."')";
// $sql ="UPDATE commande SET traiter=1 WHERE num_com IN $ids ";
// $result = mysql_query($sql,$link) or die ('Erreur : '.mysql_error().$sql );
// echo $sql;
//}
?>
le fichier qui recupère les numéros pour les exporté en un fichier excel (.csv)export3.php
<?php
//ce fichier montre un exemple permettant de generer un fichier excel (on peut remplacer le .csv par .xls)
//parametres de connexion a la bdd
//include("config.php");
require('pages/base.php');
$link=mysql_connect("$host","$user","$password") or die('<font color=red>Erreur de connnection</font><br> '.mysql_error() );
// selectionner la base des données
mysql_select_db("$bd") or die('<font color=red>Base inexistante</font><br> '.mysql_error() );
//Premiere ligne = nom des champs (si on en a besoin)
$csv_output = "numero;commande;patient;type prothèse";
$csv_output .= "\n";
//$ids=array();
if( isset( $_POST['commandes'] ) ){
foreach( $_POST['commandes'] as $val ){
//$ids[] = $val;
$ids="('".implode(',',$_POST['commandes']) ."')";
//Requete SQL
//$traiter='1';
$compt=count($ids);
for($i=0;$i<$compt;$i++){
$query = "SELECT * FROM commande WHERE num_com IN $ids ";
$result = mysql_query($query)
or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
} //fin boucle for
}//fin grang if
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
$csv_output .= "$row[id_com];$row[num_com];$row[patient];$row[type_proth];$ids\n ";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=Expedition_".$ids.".". date("Ymd").".csv");
header("Content-Type: text/csv; charset=utf-8");
print $csv_output;
exit;}
?>
mon problème est que quand je fais le choix d'un seul numéro le fichier excel est crée avec les informations voulu mais si je choisis 2 ou plusieurs numéros le fichier est crée avec seulement le nom des colonnes deja predefinis et les lignes en dessous restent vident