/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Database til Excel skriver ikke ÆØÅ?
Fra : kbisgaard
Vist : 660 gange
300 point
Dato : 02-05-10 13:06

Hej alle
Jeg har en database med noget information som jeg gerne vil have udskrevet til et excel ark. Har fundet en kode på nettet som gør dette, men når jeg gør det bliver ÆØÅ skrevet som "ø", "Ã¥" osv.

Hvordan forhindrer jeg dette?

Her er min kode:
Kode
<?php

// DB TABLE Exporter
//
// How to use:
//
// Place this file in a safe place, edit the info just below here
// browse to the file, enjoy!

// CHANGE THIS STUFF FOR WHAT YOU NEED TO DO
$dato = date("d-m-Y");

$dbhost = "localhost";
$dbuser = "skjult";
$dbpass = "skjult";
$dbname = "skjult";
$dbtable = "medlemmer";

// END CHANGING STUFF


// first thing that we are going to do is make some functions for writing out
// and excel file. These functions do some hex writing and to be honest I got
// them from some where else but hey it works so I am not going to question it
// just reuse


// This one makes the beginning of the xls file
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

// This one makes the end of the xls file
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

// this will write text in the cell you specify
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}



// make the connection an DB query
$dbc = mysql_connect( $dbhost , $dbuser , $dbpass ) or die( mysql_error() );
mysql_select_db( $dbname );
$q = "SELECT familie, medlemsnr, navn, adresse, fodselsar, tlf, email FROM medlemmer WHERE status='1'";
$qr = mysql_query( $q ) or die( mysql_error() );


// Ok now we are going to send some headers so that this
// thing that we are going make comes out of browser
// as an xls file.
//
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

//this line is important its makes the file name
header("Content-Disposition: attachment;filename=medlemmer_$dato.xls ");

header("Content-Transfer-Encoding: binary ");

// start the file
xlsBOF();

// these will be used for keeping things in order.
$col = 0;
$row = 0;

// This tells us that we are on the first row
$first = true;

while( $qrow = mysql_fetch_assoc( $qr ) )
{
// Ok we are on the first row
// lets make some headers of sorts
if( $first )
{
foreach( $qrow as $k => $v )
{
// take the key and make label
// make it uppper case and replace _ with ' '
xlsWriteLabel( $row, $col, strtoupper( ereg_replace( "_" , " " , $k ) ) );
$col++;
}

// prepare for the first real data row
$col = 0;
$row++;
$first = false;
}

// go through the data
foreach( $qrow as $k => $v )
{
// write it out
xlsWriteLabel( $row, $col, $v );
$col++;
}
// reset col and goto next row
$col = 0;
$row++;
}

xlsEOF();
exit();
?>



Min umiddelbare første tanke var, at tilføje en header("Content-type: text/html; charset=UTF-8"). Men det virker ikke.

Håber der er nogen som gider hjælpe.

Venlig hilsen
Kasper Bisgaard

 
 
Kommentar
Fra : Stouenberg


Dato : 02-05-10 16:38
Kommentar
Fra : Stouenberg


Dato : 02-05-10 16:40
Kommentar
Fra : scootergrisen


Dato : 02-05-10 19:04

Når du oprettet databasen eller tables så kan du vist vælge tekst sættet.
Det kan være det er det som er ivejen.

Kommentar
Fra : Vektor


Dato : 27-07-10 21:39

Prøv at se på de to funktioner utf8_encode() og utf8_decode().
Meget nyttige hvis databasen har andet charset end ellers brugt (og omvendt).
De koder mellem utf8 og iso-8859-1.

Når du angiver charset, fortæller du hvordan det skal fortolkes. Men du skal også sørge for, der reelt er kodet i det angivne charset.

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177435
Tips : 31962
Nyheder : 719565
Indlæg : 6407985
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste