Hieronder tref je stuk code die data uit een tabel exporteert naar csv bestand. Dit werkt op een kleinigheid na perfect voor mij.... Echter één van de velden bevat een nummer. Dat nummer zou altijd 6 karakters moeten zijn en indien nodig voorafgaan met voorloopnullen. Maar dit is niet zo eenvoudig als het lijkt te zijn.
De code:
<?php
// Database Connection
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xxxxxxxxxxx";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
if(isset($_GET['export'])){
if($_GET['export'] == 'true'){
$query = mysqli_query($conn, 'select * from m2r'); // Get data from Database from demo table
$delimiter = ",";
$filename = "significant_" . date('Ymd') . ".csv"; // Create file name
//create a file pointer
$f = fopen('php://memory', 'w');
//set column headers
$fields = array('Pers.nr', 'Rol', 'Mutatie');
fputcsv($f, $fields, $delimiter);
//output each row of the data, format line as csv and write to file pointer
while($row = $query->fetch_assoc()){
$lineData = array($row['personeelsnummer'], $row['uniekKenmerkRol'], $row['mutatie']);
fputcsv($f, $lineData, $delimiter);
}
//move back to beginning of file
fseek($f, 0);
//set headers to download file rather than displayed
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
//output all remaining data on a file pointer
fpassthru($f);
}
}
?>
Nu dacht ik van.. he, dat is simpel op te lossen met printf maar helaas.
ik heb de code:
$lineData = array($row['personeelsnummer'], $row['uniekKenmerkRol'], $row['mutatie']);
fputcsv($f, $lineData, $delimiter);
proberen aan te passen naar:
$lineData = array( printf("%06d", $row['personeelsnummer']), $row['uniekKenmerkRol'], $row['mutatie']);
fputcsv($f, $lineData, $delimiter);
Maar dit is dus te simpel gedacht..
Klaarblijkelijk werkt dit niet in een array. Maar een andere methode ken ik niet. Dus ik zou het niet weten. Hoe kan ik dit aanpassen? wie weet hierin de oplossing?