צפיות
תשובות
ייצוא אקסל עם PHP
יש לי סקריפט בPHP שמוציא את כל הניתונים באקסל.
אבל זה מוציא את כל הניתונים בעברית בג'יבריש
$filename = "test.xls";
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: text/x-csv; charset=windows-1255");
header("Content-Description: File Transfer");
header("Pragma: public");
session_cache_limiter("must-revalidate");
header("Content-type: application/vnd.ms-excel; charset=utf-8");
header('Content-Disposition: attachment; filename="' . $filename .'"');
$select = "select * from tables";
$export = mysql_query($select);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header .= 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);
if ($data == "") {
$data = "n(0) Records Found!n";
}
print "$headern$data";
11 תשובות
תנסה לשנות את ה charset
בשורה הבאה :
header("Content-type: application/vnd.ms-excel; charset=utf-8");
תחליף את utf-8 ב win-1255
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================
זה עדיין לא עובד
איך זה ש PHPMYADMIN יכול לעשות את זה
תנסה לבדוק האם הבעיה היא בדף עצמו
או בעת משיכת הנתונים מה DB .
תנסה לשים בהערה את כל הקוד ותדפיס אותיות בעברית למסך תראה אם זה יוצא בגיבריש .
אם יוצא תקין אז תנסה לבצע שאילתא אחת נוספת לפני זו שמבצעת את השליפה :
Mysql_query("SET NAMES `UTF8`);1
או HEBREW תלוי בקידוד של הדף .
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================
עשיתי את הבדיקה
עשיתי את הבדיקה ואפילו שהDB שלי במחשב והDB בהוסטינג הם אותו דבר, אצלי הוא מראה עכשיו את העברית אבל אצל ההוסטינג הוא עדיין גיבריש.
בדקתי את כל הקבצים והם זההים.
אני מניח שהבדיקה של קידוד
הדף ללא משיכת נתונים מה DB יצאה תקינה גם במחשב המקומי וגם בשטח אחסון .
אז אם ככה הבעיה היא ב COLLETIONS שונים בין ה DB
במחשב המקומי לבין המרוחק
כנראה שעל אחד מהם אתה עובד עם UTF-8 ובשני בעברית ( HEBREW ) .
תיכנס ל PHPMYADMIN ותנסה לראות אם רשום שם הקידוד של הטבלאות ב DB .
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================
עכשיו בדיקה עובד
או.קי הבדיקה עובד בשני השרתים.
עכשיו עדיין לא עובד שאני הופך אותו לקובץ אקסל. נסיתי עם SET NAMES אבל עדיין לא.
נסיתי גם:
header("Content-type: application/vnd.ms-excel; charset=win-1255");
תרשום פה מה ה COLLESION
של הטבלאות בשרת המרוחק שמהן אתה מושך את הנתונים .
(נראה לי שניתן לראות זאת דרך PHPMyAdmin )
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================
utf8_encode_ci לשני השרתים
אוקיי אז אתה צריך לעבוד עם UTF-8
בשניהם .
תרשום :
mysql_query("set names `utf8` ")1
ללא מקף ב UTF-8 .
(ב DB רושמים את זה אחרת מאשר בקוד ה PHP וה HTML )
ותוודא שגם ב HEADERS ה CHARSET מכוון ל UTF-8 .
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================
עדיין לא עובד.
נסיתי את כל האופציות
אבל הכי מתסכל שאני עושה ייצוא מPHPMYADMIN לאקסל זה כן עובד בסדר. אבל אני לא מצליחה להבין מהם עשו שזה עובד.
תנסה גם לבדוק מהו הקידוד הפיזי של הקובץ
תוודא שהוא גם UTF-8 .
ליתר ביטחון תשמור עותק בצד של הקובץ ותעשה לו SAVE AS בקידוד UTF-8 .
לאחמ"כ תנסה להדפיס כתיבה בעברית למסך (לא בשליפה מתוך DB )
וגם הדפסה למסך של שליפה מה DB (בלי ניסיון ליצור XL )
תכתוב הערה לצד כל פלט כך שתדע מה שייך למה .
ותרשום פה את התוצאות .
====================================
= שיתוף ידע בנושא תכנות באינטרנט
= http://roe25m.co.il
====================================