Bonjour,
Je cherche à faire un export .csv des champs situé dans une liste liée avec menu déroulant.
J'ai déja créé le code html pour créer le bouton "export" dans mon "index.html" et j'aimerais utiliser la fonction php "fputcsv" dans mon "traitement.php".
Comment feriez vous? Merci pour votre aide.
Structure de mon code:
Je dispose d'un fichier index.php qui récupère les champs d'une Base SQL via PDO->fetch et qui les affichent dans une liste avec menu déroulant.
Et j'ai un deuxième fichier traitement.php qui récupère en $POST un champ permettant de faire une 2eme requête SQL et qui affiche les résultats dans une 2eme liste liée .
<html>
<head>
<title>COMPTES</title>
<script type='text/javascript'>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('apprenant').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","include/traitement.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('GROUPE');
idgroupe = sel.options[sel.selectedIndex].value;
xhr.send("CODE_GROUPE="+idgroupe);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 1100px">
<label>Groupe</label>
<select name='GROUPE' id='GROUPE' onchange='go()'>
<option value='-1'>Choisir un Groupe</option>
<?php
/* Fetch records and display in a loop */
$pdo = new PDO("sqlsrv:Server=SRV-TEST\TEST_MSSQL,50000;Database=TESTDATA", "YP", "Pass");
if( $pdo ) {
echo "Connexion établie";
}else{
echo "La connexion n'a pu être établie.<br />";
die( print_r( sqlsrv_errors(), true));
}
$sql1="select dbo.groupe.code_groupe AS CODE_GROUPE,dbo.groupe.nom_groupe AS GROUPE,dbo.calendrier.date_deb AS DEBUT,dbo.calendrier.date_fin AS FIN
FROM dbo.GROUPE,dbo.FORMATION,dbo.CALENDRIER
WHERE calendrier.DATE_DEB > '20180101'
AND calendrier.code_calendrier = groupe.code_calendrier
AND groupe.code_formation = formation.code_formation
ORDER BY groupe.nom_groupe";
$result1= $pdo->query($sql1);
// echo $sql1;
while ($row=$result1->fetch() )
{
echo '<option value="'.($row['CODE_GROUPE']).'">'.$row['GROUPE']."$nbsp ----- du ".$row['DEBUT']."$nbsp au: ".$row['FIN'].'</option>';
}
?>
</select>
<label>Apprenants</label>
<div id='apprenant' style='display:inline'>
<select name='apprenant'>
<option value='-1'>Liste des Apprenants</option>
</select>
</div>
<div id='apprenant' style='display:inline'>
<button onclick="Export()" >Export CSV </button>
</div>
<script>
function Export()
{
var conf = confirm("Export users to CSV?");
if(conf == true)
{
window.open("include/traitement.php", '_blank');
}
}
</script>
</fieldset>
</form>
</body>
</html>
et le fichier traitement.php :
<?php
echo "<select name='apprenant'>";
if(isset($_POST["CODE_GROUPE"])){
$pdo = new PDO("sqlsrv:Server=SRV-TEST\TEST_MSSQL,50000;Database=TESTDATA", "YP", "Pass"");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result2= $pdo->query("select a.NOM_APPRENANT AS NOM_APPRENANT,a.PRENOM_APPRENANT AS PRENOM_APPRENANT,nu.nom_net_utilisateur AS NETUSER
FROM apprenant a
inner join INSCRIPTION i on (a.CODE_APPRENANT = i.CODE_APPRENANT)
inner join FREQUENTE f on (i.CODE_INSCRIPTION = f.CODE_INSCRIPTION)
inner join GROUPE g on (f.CODE_GROUPE = g.CODE_GROUPE)
inner join NET_UTILISATEUR nu on (a.code_apprenant = nu.code_ressource and nu.type_ressource = 7500)
WHERE g.code_groupe=".$_POST["CODE_GROUPE"]."");
while ($row=$result2->fetch() )
{
echo "<option value='".$row["CODE_APPRENANT"]."'>".$row["NOM_APPRENANT"]." ".$row["PRENOM_APPRENANT"]." ".$row["NETUSER"]."</option>";
}
}
echo "</select>";
?>
Modifié par avb (29 Oct 2019 - 10:30)