PDA

View Full Version : مشکل با اکسپورت به ExL



smile.alireza
یک شنبه 03 بهمن 1389, 11:12 صبح
سلام به همه دوستان
من یه اسکریپ یافتم اما با هاش به مشکل خوردم
کارش اینه هرچی تو دیتابیس تو یه تیبل اکسپورت می کنه EXL
مشکل اینه که داده های من فارسی هست و خوب نشون نمی ده موقع اکسپورت UFT-8 نیست هر چی ام با هاش ور رفتم نشد که نشد




<?php
// Edit the $Host, $User $Password, $DBName and $TableName vars only! //
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "taxi";
$TableName = "user";

// DO NOT EDIT BELOW HERE //
$link = mysql_connect ($Host, $User, $Password) or die('Could not connect: ' . mysql_error());
mysql_select_db($DBName) or die('Could not select database');

$select = "SELECT * FROM `".$TableName."`";
$export = mysql_query($select);
$fields = mysql_num_fields($export);

for ($i = 0; $i < $fields; $i++) {
$csv_output .= mysql_field_name($export, $i) . "\t";
}

while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);

header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=database_dump.xls charset=utf-8");
header("Pragma: no-cache");
header("Expires: 0");
print $csv_output."\n".$data;
exit;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd charset=utf-8">
<html xmlns="http://www.w3.org/1999/xhtml charset=utf-8" lang="fa">
<head>
<title>Download MySQL Table Code</title>
</head>
<body>

</body>
</html>

tbebest
یک شنبه 03 بهمن 1389, 11:39 صبح
سلام، بعد از خط:
$select = "SELECT * FROM `".$TableName."`";
اینو بنویس ببین فرقی می کنه:

mysql_query("SET NAMES utf8");mysql_set_charset("utf8");

smile.alireza
یک شنبه 03 بهمن 1389, 13:04 عصر
نه دوست عزیز کدی که دادی تغییری ایجاد نکرد
این کد کار ساز نیست چون می یاد تیبل رو می کنه UTF-8 در صورتی که هست
اما ما وقتی کوری می گیریم داد ها رو UTF-8 نیست

MMSHFE
یک شنبه 03 بهمن 1389, 13:13 عصر
با سلام، دستوري كه گفتن رو قبل از اجراي Query (قبل از فراخواني تابع mysql_query) بنويسيد.
ضمناً وقتي از رشته با گيومه جفت استفاده ميكنيد، ديگه نيازي به جداكردن نيست:


$select = "SELECT * FROM `$TableName`";

ضمناً بررسي كنيد و مطمئن بشين كه فايل PHP شما هم UTF-8 without BOM ذخيره شده باشه.
اميدوارم مشكلتون برطرف بشه. موفق و مؤيد باشيد.

smile.alireza
یک شنبه 03 بهمن 1389, 14:05 عصر
دوستان من یه فایل از ذخیره ای که به من می ده ضمیمه می کنم

کد من :



<?php
// Edit the $Host, $User $Password, $DBName and $TableName vars only! //
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "taxi";
$TableName = "user";
// DO NOT EDIT BELOW HERE //
$link = mysql_connect ($Host, $User, $Password) or die('Could not connect: ' . mysql_error());
mysql_select_db($DBName) or die('Could not select database');

$select = "SELECT * FROM `".$TableName."`";
mysql_query("SET NAMES utf8");mysql_set_charset("utf8");
$export = mysql_query($select);
$fields = mysql_num_fields($export);

for ($i = 0; $i < $fields; $i++) {
$csv_output .= mysql_field_name($export, $i) . "\t";
}

while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
header("Content-Type: application/vnd.ms-excel;");
header("Content-Disposition: attachment; filename=database_dump.xls");
header("Pragma: no-cache");
header("Expires: 0");
print $csv_output."\n".$data;
exit;
?>

smile.alireza
دوشنبه 04 بهمن 1389, 21:16 عصر
سلام به همه دوستان مشکل من حل نشد هنوز درست نشون نمی ده فارسی را در بالا هم ضمیمه کردم

tbebest
چهارشنبه 06 بهمن 1389, 07:30 صبح
سلام, میشه collation جدول (حتی در حد فیلد اگر متفاوتند)و collaton بانک رو دقیقا بذاری.با تشکر.

smile.alireza
چهارشنبه 06 بهمن 1389, 12:50 عصر
سلام, میشه collation جدول (حتی در حد فیلد اگر متفاوتند)و collaton بانک رو دقیقا بذاری.با تشکر.
یعنی چی ؟؟؟؟
من خود دیتابیس هم می زارم

tbebest
چهارشنبه 06 بهمن 1389, 14:44 عصر
phpmyadmin->operations->table option->collation:utf8_persian_ci

دوست عزیز اینو امتحان کن .
راستی ! تو یه پستی خوندم که collation مناسب برای هر زبانی قابل set شدنه. با تشکر

smile.alireza
چهارشنبه 06 بهمن 1389, 17:11 عصر
phpmyadmin->operations->table option->collation:utf8_persian_ci

دوست عزیز اینو امتحان کن .
راستی ! تو یه پستی خوندم که collation مناسب برای هر زبانی قابل set شدنه. با تشکر
دوست عزیز چک کردم همین بودcollation:utf8_persian_ci
بازم خوب نشون نمی دهد