txtbased database naar XLS exporteren
Ik heb het volgende script gevonden via het net, echter kom ik er nog niet helemaal uit hoe ik hem werkend krijg met mijn txtbased database. Erbij heb ik gepost een stukje php hoe ik normaliter mijn variabelen uit mijn database echo.
EDIT:
Het gaat vooral om het bovenste stuk, waar hij de mysql query wilt gebruiken. Daar moet ik mijn stukje code in kwijt, ik weet alleen niet hoe en foutloos... :$
### export.php (van het net) ###
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?PHP
$query = "SELECT u_lidnr AS Lidnummer, u_jaar AS Jaar,u_status AS Status, u_aanhef AS Aanhef, u_titel AS Titel, u_initialen AS Initialen, u_voornaam AS Voornaam, u_achternaam AS Achternaam, u_adres AS Adres, u_postcode AS Postcode, u_woonplaats AS Woonplaats, u_land AS Land, u_tel AS Telefoon, u_telmob AS Mobiel, u_email AS Email, u_eetgez AS Eetgezelschap, u_studie AS Studie, u_beroep AS Beroep, u_functie AS Functies, u_erelid AS Erelid, u_finstand AS Finstand, u_finstand_opm AS Fin_Opm FROM u ORDER BY Jaar, Achternaam ASC;";
$result = mysql_query($query);
$count = mysql_num_fields($result);
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($result, $i)."\t";
}
while($row = mysql_fetch_row($result)){
$line = '';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
# important to escape any quotes to preserve them in the data.
$value = str_replace('"', '""', $value);
# needed to encapsulate data in quotes because some data might be multi line.
# the good news is that numbers remain numbers in Excel even though quoted.
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
# this line is needed because returns embedded in the data have "\r"
# and this looks like a "box character" in Excel
$data = str_replace("\r", "", $data);
# Nice to let someone know that the search came up empty.
# Otherwise only the column name headers will be output to Excel.
if ($data == "") {
$data = "\nno matching records found\n";
}
# This line will stream the file to the user rather than spray it across the screen
header("Content-type: application/octet-stream");
# replace excelfile.xls with whatever you want the filename to default to
header("Content-Disposition: attachment; filename=leden_export.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $header."\n".$data;
?>
$query = "SELECT u_lidnr AS Lidnummer, u_jaar AS Jaar,u_status AS Status, u_aanhef AS Aanhef, u_titel AS Titel, u_initialen AS Initialen, u_voornaam AS Voornaam, u_achternaam AS Achternaam, u_adres AS Adres, u_postcode AS Postcode, u_woonplaats AS Woonplaats, u_land AS Land, u_tel AS Telefoon, u_telmob AS Mobiel, u_email AS Email, u_eetgez AS Eetgezelschap, u_studie AS Studie, u_beroep AS Beroep, u_functie AS Functies, u_erelid AS Erelid, u_finstand AS Finstand, u_finstand_opm AS Fin_Opm FROM u ORDER BY Jaar, Achternaam ASC;";
$result = mysql_query($query);
$count = mysql_num_fields($result);
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($result, $i)."\t";
}
while($row = mysql_fetch_row($result)){
$line = '';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
# important to escape any quotes to preserve them in the data.
$value = str_replace('"', '""', $value);
# needed to encapsulate data in quotes because some data might be multi line.
# the good news is that numbers remain numbers in Excel even though quoted.
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
# this line is needed because returns embedded in the data have "\r"
# and this looks like a "box character" in Excel
$data = str_replace("\r", "", $data);
# Nice to let someone know that the search came up empty.
# Otherwise only the column name headers will be output to Excel.
if ($data == "") {
$data = "\nno matching records found\n";
}
# This line will stream the file to the user rather than spray it across the screen
header("Content-type: application/octet-stream");
# replace excelfile.xls with whatever you want the filename to default to
header("Content-Disposition: attachment; filename=leden_export.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $header."\n".$data;
?>
### Mijn stukje PHP ###
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
include('loginbox.php');
if($member_db[1] == '1'){
$file = file("data/users.db.php");
foreach ($file as $line)
{
if (strstr($line,"<?PHP"))
{}
else
{
$array = explode("|",$line);
echo "$array[10] $array[12] $array[11]<br />";
echo "$array[16] $array[17]$array[18]<br />";
echo "$array[19]$array[20] $array[21]<br />";
echo "$array[22]<br /><br />";
}
}
} else { echo (''); }
?>
Alvast bedankt als iemand me een klein beetje op weg kan helpen. Volgens mij is export.php al vrij goed af, echter lukt 't me nog niet, mijn variabelen erin goed te laten echo-en. THNX!
include('loginbox.php');
if($member_db[1] == '1'){
$file = file("data/users.db.php");
foreach ($file as $line)
{
if (strstr($line,"<?PHP"))
{}
else
{
$array = explode("|",$line);
echo "$array[10] $array[12] $array[11]<br />";
echo "$array[16] $array[17]$array[18]<br />";
echo "$array[19]$array[20] $array[21]<br />";
echo "$array[22]<br /><br />";
}
}
} else { echo (''); }
?>
Alvast bedankt als iemand me een klein beetje op weg kan helpen. Volgens mij is export.php al vrij goed af, echter lukt 't me nog niet, mijn variabelen erin goed te laten echo-en. THNX!
Gewijzigd op 01/01/1970 01:00:00 door Zelf Weten
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
Wat moet dat script precies doen?
Omdat ik ben begonnen met Cutenews, txtbased database, en van daaruit ben ik begonnen met werken. Vandaar dat ik daar nu nog mee werk. Het werkt prima en het moet toch mogelijk zijn? Hetgeen wat ik hierboven probeer? Toch? I hope ... ^_^
Het script moet een aantal variabelen uit een rij van users.db.php halen en deze vervolgens in een excel bestand onder elkaar zetten. Zo heb ik bijvoorbeeld de variabelen voornaam, tussenvoegsel, achternaam, emailadres, etc. in een rij van een persoon staan, te bereiken met array[nummer] etc. Logisch.
Nu wil ik deze gewoon netjes onder elkaar printen.
Dus
jan1 de1 boer1
jan2 de2 boer2
jan3 de3 boer3
jan4 de4 boer4
jan5 de5 boer5
Met het 1e stuk, wil ik het excel bestand maken, maar die werkt nog met een mysql ophaal-include-echo-script-stuk. Het zou dus moeten werken met dat tweede stukje code, zoals ik normaliter een lijst print, of andere variabelen uit een rij van een persoon.
Zelf Weten schreef op 19.08.2008 11:59:
... een aantal variabelen uit een rij van users.db.php halen ...
En hoe definieer je die rij?
Geef een voorbeeld van hoe je bestand er uit ziet waar de gegevens in zitten.
@Emmanuel Delay
8973249|0|Michiel|de|Boer|Amsterdam|2006|||[email protected]|065431526| etc.
En dan op elke rij staat een nieuw persoon.
*bump*
Waarom in godsnaam het jezelf zo moeilijk maken? SQL ftw!
txtbased database bestaat niet. Dat is gewoon een textfile, niets meer, niets minder.
@Henk; ben er mee bezig.
@beide, geen oplossing voor me? :-)
Voorbeeld:
db.txt
Code (php)
1
2
3
2
3
8973249|0|Michiel|de|Boer|Amsterdam|2006|||[email protected]|065431526|
8973248|0|John||Dewilde|Brugge|8000|||[email protected]|003265431527|
8973247|0|Guy||Verhofstadt|Brussel|1000|||[email protected]|065431522|
8973248|0|John||Dewilde|Brugge|8000|||[email protected]|003265431527|
8973247|0|Guy||Verhofstadt|Brussel|1000|||[email protected]|065431522|
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$gegevens = getGegevens('db.txt') ;
// weergave
foreach ($gegevens as $row)
{
echo '<li>'. $row['voornaam'] .' '. $row['tussenvoegsel'] .' '. $row['achternaam'] .'</li>';
}
function getGegevens($filename)
{
$filecontent = file_get_contents ( $filename );
$rows = explode("\n", $filecontent);
$rijen = count($rows);
$resultaat = array();
foreach ($rows as $record)
{
if ( trim($record) == "" )
continue;
$gegevens = explode("|", $record);
$rij = array(
'id' => $gegevens[0],
'onbekend_veld1' => $gegevens[1], // vul zelf maar de veldnaam in
'voornaam' => $gegevens[2],
'tussenvoegsel' => $gegevens[3],
'achternaam' => $gegevens[4],
'postcode' => $gegevens[5], // of is dit iets anders?
'onbekend_veld2' => $gegevens[6],
'onbekend_veld3' => $gegevens[7],
'emailadres' => $gegevens[8],
'telefoonnummer' => $gegevens[9]
);
$resultaat[] = $rij;
}
return $resultaat;
}
?>
$gegevens = getGegevens('db.txt') ;
// weergave
foreach ($gegevens as $row)
{
echo '<li>'. $row['voornaam'] .' '. $row['tussenvoegsel'] .' '. $row['achternaam'] .'</li>';
}
function getGegevens($filename)
{
$filecontent = file_get_contents ( $filename );
$rows = explode("\n", $filecontent);
$rijen = count($rows);
$resultaat = array();
foreach ($rows as $record)
{
if ( trim($record) == "" )
continue;
$gegevens = explode("|", $record);
$rij = array(
'id' => $gegevens[0],
'onbekend_veld1' => $gegevens[1], // vul zelf maar de veldnaam in
'voornaam' => $gegevens[2],
'tussenvoegsel' => $gegevens[3],
'achternaam' => $gegevens[4],
'postcode' => $gegevens[5], // of is dit iets anders?
'onbekend_veld2' => $gegevens[6],
'onbekend_veld3' => $gegevens[7],
'emailadres' => $gegevens[8],
'telefoonnummer' => $gegevens[9]
);
$resultaat[] = $rij;
}
return $resultaat;
}
?>
Daarmee is het uiteraard nog niet in een excell bestand gezet.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
De oplossing ligt bij SQL (PostgreSQL, MySQL(v5, strictmode, InnoDB) en als je geen relaties hebt SQL Lite vodoet dan ook wel).