กดปุ่มบันทึกระบบแจ้งerror iconv() ทั้งๆที่หน้าอื่นไม่แจ้งอัพได้ปกติ สาเหตุเพราะอะไรหรอคะ??
พอกดปุ่ม บันทึก แล้วมันจะขึ้นแจ้งว่า Warning: iconv() expects parameter 3 to be string, array given in C:\AppServ\www\systemdoc\asbuit.php on line 9 อยู่ข้างบนฟอร์มเลยค่ะ ทั้งๆๆที่หน้าอื่นๆมีโค้ด iconv() ก็ไม่แจ้งเออเร่ออะไรอัพไฟล์ได้ปกติค่ะ มันเป็นเพราะอะไรหรอคะ??
Code (PHP)
<?php
session_start();
header('Content-Type: text/html; charset=UTF-8');
include("db/connect.php");//เรียกใช้ไฟล์connect.php
error_reporting (E_ALL ^ E_NOTICE); //ดัก noticeออกไป
if($_POST["Save"]){
$date_asbuit_up = date("Y-m-d H:i:s");
$file_asbuit='".$_FILES["file_asbuit"]["name"]."';
$fileName_tis620 = iconv("utf-8", "tis-620", $_FILES["file_asbuit"]["name"]);
$fileName_utf8 = iconv("tis-620", "utf-8", $fileName_tis620);
if(move_uploaded_file($_FILES["file_asbuit"]["tmp_name"], "upload/technical/asbuit/" . $fileName_tis620))
{
//select pro_name
$sql_pname = "SELECT pro_name as province_name FROM province WHERE pro_id = '$pro_id' ";
$db_query_pname=mysql_query($sql_pname);
$result_pname = mysql_fetch_array($db_query_pname);
$province_name=$result_pname[province_name];
//insert into asbuit(pro_name)
$str=" insert into `asbuit`
(`asbuit_id`,`zone_asbuit`,`asbuit_name`,`file_asbuit`,`date_asbuit_up`,`asbuit_description`,`show`,`tech_id`,`p_id`,`pro_id`,`pro_name`) values ( '$asbuit_id' , '$zone_asbuit' , '$asbuit_name' ,'".$_FILES["file_asbuit"]["name"]."', '$date_asbuit_up', '$asbuit_description', 'y', '$tech_id', '$p_id', '$pro_id', '$province_name') " ;
mysql_query($str) or die (mysql_error());
//echo $str;
echo "<script type='text/javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว')</script>";
echo "<meta http-equiv ='refresh'content='0;URL=show_asbuit.php'>";
}
}
?>
Tag : PHP, MySQL
Date :
2017-03-08 13:56:00
By :
nachon
View :
1025
Reply :
7
echo $fileName_tis620;
ลองดูว่ามันได้ตามที่ต้องการไหม?? ว่าค่าที่ต้องการมาจริงไหม
Date :
2017-03-08 15:05:54
By :
apisitp
เราถามว่า echo ได้ค่าอะไร เราไม่ได้ถาม Error
เราอยากรู้ว่าชื่อมันถูกส่งมาจริงไหม
การ echo ค่าตัวแปร มันเป็นการเช็คว่าค่าที่เราส่งมามีจริงไหม ตรงกับ Concept ที่เราคิดไหม
ฉนั้นอะไรที่เป็นตัวแปรลอง echo มาเช็ค ว่ามันเป็นจริงอย่างที่เราคิดไหม
Go to : PHP File ($_FILES,$HTTP_POST_FILES)
จริงๆ ผมก็สงสัยล่ะ
$_FILES["file_asbuit"]["name"]
ค่าที่ได้มันเป็น ชื่อ.นามสกุลไฟล์ มันไม่น่าจะมา iconv คุณต้องแยกชื่อออกจากนามสกุลก่อน
แต่การแยกชื่อออกจากนามสกุลโดยมาตรฐาน เข้าจะแยกโดยใช้ . เป็นหลัก
แต่ปัญหามันก็มีถ้าสมมุติ ชื่อไฟล์เป็น "รายงานคะแนน ป.4.doc"
ถ้าจับแยก เจอจุด ชื่อไฟล์คุณจะได้เป็น "รายงานคะแนน ป" นามสกุลไฟล์ ".4.doc" จบเห่ครับ
ฉนั้นเขียนโปรแกรมอัพโหลดไฟล์ที่เป็นภาษาไทย มันก็ไม่ยาก แต่ทั้งหมดทั้งมวล
ถ้า user ไม่ปรับตัวให้ระบบเขียนเป็นล้านก็ตอบโจทย์การทำงานไม่ได้ครับ
ฉนั้น ถ้าเอาความง่ายของ user มาเป็นหลักในการเขียนโปรแกรม ตายสถานเดียวครับ
ลองเอาไปปรับใช้ดูครับ
Date :
2017-03-09 09:04:22
By :
apisitp
ตอบความคิดเห็นที่ : 5 เขียนโดย : mr.win เมื่อวันที่ 2017-03-09 09:54:36
รายละเอียดของการตอบ ::
ขอบคุณค่ะตอนนี้มันไม่ warning แล้วค่ะ แต่ว่ามันไม่บันทึกค่ะ คือ พอกดบันทึก มันเด้งกลับมาหน้าเดิมข้อมูลที่กรอกไปก่อนหน้ากดบันทึกก็หายไปค่ะ
ปล. ช่วยอธิบายหน่อยค่ะว่าใส่ @ ไปแล้วมันไม่ warning เพราะอะไรหรอคะ??
Code (PHP)
<?php
session_start();
header('Content-Type: text/html; charset=UTF-8');
include("db/connect.php");//เรียกใช้ไฟล์connect.php
error_reporting (E_ALL ^ E_NOTICE); //ดัก noticeออกไป
if($_POST["Save"]){
$date_asbuit_up = date("Y-m-d H:i:s");
$file_asbuit='".$_FILES["file_asbuit"]["name"]."';
@$fileName_tis620 = iconv("utf-8", "tis-620", $_FILES["file_asbuit"]["name"]); //error
$fileName_utf8 = iconv("tis-620", "utf-8", $fileName_tis620);
if(move_uploaded_file($_FILES["file_asbuit"]["tmp_name"], "upload/technical/asbuit/" . $fileName_tis620))
{
//select pro_name
$sql_pname = "SELECT pro_name as province_name FROM province WHERE pro_id = '$pro_id' ";
$db_query_pname=mysql_query($sql_pname);
$result_pname = mysql_fetch_array($db_query_pname);
$province_name=$result_pname[province_name];
//insert into asbuit(pro_name)
$str=" insert into `asbuit`
(`asbuit_id`,`zone_asbuit`,`asbuit_name`,`file_asbuit`,`date_asbuit_up`,`asbuit_description`,`show`,`tech_id`,`p_id`,`pro_id`,`pro_name`) values ( '$asbuit_id' , '$zone_asbuit' , '$asbuit_name' ,'".$_FILES["file_asbuit"]["name"]."', '$date_asbuit_up', '$asbuit_description', 'y', '$tech_id', '$p_id', '$pro_id', '$province_name') " ;
echo $fileName_tis620;
mysql_query($str) or die (mysql_error());
//echo $str;
echo "<script type='text/javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว')</script>";
echo "<meta http-equiv ='refresh'content='5;URL=show_asbuit.php'>";
}
}
?>
Date :
2017-03-09 10:00:01
By :
nachon
ถ้าไม่มีค่า แสดงว่าได้ค่าว่าง ส่งค่าว่างไปเข้า iconv มันเลยเกิด Error มั้ง
Date :
2017-03-09 17:39:00
By :
apisitp
Load balance : Server 03