ขอความช่วยเหลือหน่อยค่ะ เกี่ยวกับการค้นหา พอดีได้ดัดแปลงแล้วเกิดผิดพลาด
ลอง check ในฐานข้อมูล ว่ามี ฟิลด์ id ไหม
Date :
2013-11-14 16:41:08
By :
BabyDragon
แฮ่ๆ ผิดจริงด้วยคะ แต่พอแก้แล้วมี Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\help\rpt_all.php on line 221 คะ
Date :
2013-11-14 16:46:49
By :
NToo
แก้ได้แล้วคะส่วนที่เพิ่งโพสต์ แต่ติดที่ ที่เวลาเลือกเป็นวันที่ ประเภทรายงานแล้ว ไม่มีอะไรเกิดขึ้นคะ
Date :
2013-11-14 16:49:58
By :
NToo
Code (PHP)
mysql_free_result($str_det);
เอาออกครับ
Date :
2013-11-14 16:51:09
By :
itpcc
เอาออกแล้วค่ะไม่มีerrorแล้ว แต่พอเลือกครบแล้ว กดตกลง มันไม่แสดงอะไรแล้วค่ะ ว่างเปล่าเลยค่ะ ไม่รู้ว่าผิดตรงไหนค่ะ
Date :
2013-11-14 18:03:33
By :
NToo
จริงแล้วมันควรออกมาแบบนี้ค่ะดังรูป แต่ที่นี้ ตอนนี้มันไม่แสดงออกมาใดๆเลยค่ะ ช่วยหน่อยนะคะ
ประวัติการแก้ไข 2013-11-14 21:08:42
Date :
2013-11-14 19:05:49
By :
NToo
ขอบคุณทุกท่านที่ช่วยชี้แนะค่ะ ที่โพสต์ไว้ แก้ไขได้แล้วค่ะ แต่ยังมีข้อผิดพลาดอยู่ค่ะ ตรงที่เวลาเลือกประเภทรายงานตรงที่ทั้งหมดออกมาภูกต้อง แต่พอเลือกอย่างอื่น มันไม่แสดงออกมาค่ะ โค๊ดล่าสุดที่แก้ข้างล่างนะคะ
Date :
2013-11-14 21:07:24
By :
NToo
ขอความช่วยเหลือด้วยค่ะ
Date :
2013-11-15 09:01:23
By :
NToo
echo $query_report ดูครับ ว่ามันได้อะไรมาบ้าง
อีกข้อสังเกตน่ะครับ
$type="detail.status = '".$_POST['strtype']."' AND";
อันนี้ หา status หรือหา type กันแน่ครับ หรือว่า strtype คือค่าของ status ??
Date :
2013-11-15 14:12:10
By :
mangkunzo
ออกมาเป็นแบบนี้ค่ะ
Code (PHP)
SELECT noti_type.str_det,detail.status,detail.add_date,detail.address,detail.name,detail.name,detail.detail_compl FROM detail LEFT OUTER JOIN noti_type ON noti_type.str_id = detail.status WHERE detail.status = '1' AND detail.add_date BETWEEN '2013-11-01' AND '2013-11-15' ORDER BY detail.detail_id DESC
strtype คือค่าของ status ค่ะ คือในฐานเก็บเป็น คำว่า ยุติแล้ว ไม่ได้เก็บเป็นเลข 1 คะ ทำให้เวลาเลือกประเภทรายงาน พอเลือกเป็นคำว่ายุติแล้วมันจะไม่ออกมาค่ะ พอเข้าใจไหมคะ
Date :
2013-11-15 14:18:24
By :
NToo
ไม่มาเหมือนกันค่ะ จริงๆแล้วมี 3 สถานะนะคะ มี รอดำเนินการ อยู่ระหว่างดำเนินการ และยุติแล้วค่ะ เวลาเก็บลงฐานจะเก็บลงเป็นคำค่ะ ไม่ได้เป็นตัวเลขค่ะ
Date :
2013-11-15 14:42:57
By :
NToo
นี้คือฐาน noty_type ค่ะ
นี้คือฐาน detail เอาไว้เก็บค่ะ
Date :
2013-11-15 15:12:57
By :
NToo
แล้วทำไมไม่เก็บ str_id อะครับ เวลาเรียกใช้งานจะง่ายกว่าตัวอักษรเยอะมาก ทั้งในส่วนของการประมวลผลก็จะไวขึ้น การดึงข้อมูลมาใช้งาน(อย่างที่คุณกำลังมีปัญหาอยู่)ก็จะง่ายขึ้น ฯลฯ
อะลองดูครับว่าได้ป่าว
Code (PHP)
SELECT noti_type.*,detail.status,detail.add_date,detail.address,detail.name,detail.detail_compl
FROM detail
LEFT JOIN noti_type ON noti_type.str_id = detail.status
WHERE detail.status = '1' AND detail.add_date BETWEEN ('2013-11-01' AND '2013-11-15')
ORDER BY detail.detail_id DESC
ประวัติการแก้ไข 2013-11-15 15:30:41
Date :
2013-11-15 15:25:06
By :
arm8957
ยังไม่ได้ค่ะ พอ echo ออกมาเป็นแบบนี้ค่ะ ทั้งๆที่เลือกรอดำเนินการค่ะ
Code (PHP)
SELECT noti_type.str_det,detail.status,detail.add_date,detail.address,detail.name,detail.name,detail.detail_compl FROM detail LEFT OUTER JOIN noti_type ON noti_type.str_id = detail.status WHERE detail.status = 'ยุติแล้ว' AND detail.add_date BETWEEN '2013-10-01' AND '2013-11-15' ORDER BY detail.detail_id DESC
Date :
2013-11-15 15:33:53
By :
NToo
กลับไปดู table detail ฟิวด์ status เก็บอะไรแน่
Date :
2013-11-15 15:37:41
By :
mangkunzo
ยืนยันเก็บดังภาพค่ะ
Date :
2013-11-15 15:39:40
By :
NToo
ขอโทษด้วยครับ ผมผิดเอง แก้ตามนี้ครับ
Code (PHP)
if($_POST['strtype']==0){
//all type
$type='';
$name='ทั้งหมด';
}else
{
if($_POST['strtype']==1){
$type="detail.status = 'รอดำเนินการ' AND";
}else if($_POST['strtype']==2){
$type="detail.status = 'อยู่ระหว่างดำเนินการ' AND"; // แก้ด้วยน่ะ ถ้าของคุณ เป็นคำอื่น ที่ไม่ใช้ "ยังไม่ยุติ" อันนี้ผมเดาเอา
}else{
$type="detail.status = 'ยุติแล้ว' AND";
}
}
Date :
2013-11-15 15:43:06
By :
mangkunzo
ประวัติการแก้ไข 2013-11-15 15:44:40
Date :
2013-11-15 15:43:34
By :
arm8957
แก้อีกนิดครับ เห็น SELECT ซ้ำอยู่ตัวนึง หรือถ้าผมตาฝาดไปก็ขออภัย
$query_report = "SELECT noti_type.str_det,detail.status,detail.add_date,detail.address,detail.name,detail.name ,detail.detail_compl FROM detail LEFT OUTER JOIN noti_type ON noti_type.str_id = detail.status WHERE ".$type." detail.add_date BETWEEN '".$d1."' AND '".$d2."' ORDER BY detail.detail_id DESC";
Date :
2013-11-15 15:50:26
By :
arm8957
print_xls.php บรรทัด 53 กับ 54 มันคืออะไรครับ เอา code มาดูหน่อย
Date :
2013-11-15 17:01:36
By :
mangkunzo
..
Date :
2013-11-15 17:03:48
By :
NToo
ใส่โค้ดล้านล่างไว้บนสุดของเพจ
Code (PHP)
<?PHP ob_start(); ?>
แล้วก็เซ็ต charset เป็น utf8 ครับ
Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Date :
2013-11-15 17:04:17
By :
arm8957
ยังมี error เหมือนเดิมค่ะ
Date :
2013-11-15 17:07:14
By :
NToo
รบกวนสอบถามหน่อยคะ พอดีerror แบบนี้ค่ะ
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\help\print_xls.php:1) in C:\AppServ\www\help\print_xls.php on line 72
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\help\print_xls.php:1) in C:\AppServ\www\help\print_xls.php on line 73
โค๊ดค่ะ
Code (PHP)
<? ob_start();?>
<?php require_once('Connections/con_db.php'); ?>
<?
mysql_query('set names utf8');
require( 'thai_date.php' );
if($_GET['strtype']==0){
//all type
$type='';
$name='All';
}else
{
if($_GET['strtype']==1){
$name='รอดำเนินการ';
$type="detail.status = 'รอดำเนินการ' AND";
}else if($_GET['strtype']==2){
$name='อยู่ระหว่างดำเนินการ';
$type="detail.status = 'อยู่ระหว่างดำเนินการ' AND"; // แก้ด้วยน่ะ ถ้าของคุณ เป็นคำอื่น ที่ไม่ใช้ "ยังไม่ยุติ" อันนี้ผมเดาเอา
}else{
$name='ยุติแล้ว';
$type="detail.status = 'ยุติแล้ว' AND";
}
}
/*if($_GET['strtype']==0){
//all type
$type='';
$name='All';
}else
{
$type="detail.status = '".$_GET['strtype']."' AND";
}*/
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_con_db, $con_db);
$query_Recordset1 = "SELECT noti_type.str_det,detail.status,detail.add_date,detail.address,detail.name,detail.subject,detail.detail_compl,detail.dateregist,detail.idcard,detail.tel,detail.detailsta FROM detail LEFT OUTER JOIN noti_type ON noti_type.str_id = detail.status WHERE ".$type." detail.add_date BETWEEN '".$_GET['d1']."' AND '".$_GET['d2']."' ORDER BY detail.detail_id DESC";
$Recordset1 = mysql_query($query_Recordset1, $con_db) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
if($name=='All')
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=".($name ? $name : $row_Recordset1['str_det'])."_".$_GET['d1']."_".$_GET['d2'].".xls");# ชื่อไฟล์
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style12 { font-family: "TH SarabunPSK";
font-size: 20px;
font-weight: bold;
}
.style13 {
font-family: "TH SarabunPSK";
font-size: 20px;
}
.style6 {font-size: 20px}
.style22 {font-family: "TH SarabunPSK"}
.style23 {font-size: 22px}
-->
</style>
</head>
<body>
<p align="center"><span class="style12"><span class="style23">บัญชีรายชื่อผู้ร้องเรียนและผลการดำเนินการของเดือน.........................<br />
ของศูนย์ดำรงธรรมจังหวัดชายแดนภาคใต้</span></span></p>
<table width="106%" border="1">
<tr>
<td width="18%"><div align="center"><strong><span class="style13">ประเด็นการร้องทุกข์/วดป
<? //echo "type=".$_GET['strtype']." d1=".$_GET['d1']." d2=".$_GET['d2'] ?>
</span></strong></div></td>
<td width="21%"><div align="center"><strong><span class="style13">ผู้ร้องเรียน/ที่อยู่</span></strong></div></td>
<td width="20%"><div align="center"><strong><span class="style13">ผู้ถูกร้องเรียน/ที่อยู่</span></strong></div></td>
<td width="18%"><div align="center"><strong><span class="style13">พฤติกรรม/รายละเอียด</span></strong></div></td>
<td width="13%"><div align="center"><strong><span class="style13">ผลการดำเนินการ</span></strong></div></td>
<td width="10%"><div align="center"><strong><span class="style13">หมายเหตุ</span></strong></div></td>
</tr>
<?php do { ?>
<tr>
<td><span class="style13"><? echo $row_Recordset1['subject'];?></span></td>
<td><span class="style13"><span class="style6">
<? echo $row_Recordset1['idcard'];?>
</span><span class="style6">
<? echo $row_Recordset1['name'];?>
</span></span></td>
<td> </td>
<td><span class="style13">
<? echo $row_Recordset1['detail_compl'];?>
</span></td>
<td><span class="style13">
<? echo $row_Recordset1['detailsta'];?>
</span></td>
<td><span class="style13">
<? echo $row_Recordset1['status'];?>
</span></td>
</tr>
<tr>
<td><span class="style13">เลขที่ร้อง
<? echo $row_Recordset1['detail_id'];?>
</span></td>
<td><span class="style13">
<? echo $row_Recordset1['address'];?>
</span></td>
<td><span class="style22"></span></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><span class="style13">
<? echo $row_Recordset1['dateregist'];?>
</span></td>
<td><span class="style13">โทร.
<? echo $row_Recordset1['tel'];?>
</span></td>
<td><span class="style22"></span></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Date :
2013-11-16 21:19:58
By :
NToo
Warning: Cannot modify header information - headers already sent by แก้ยังไง
หาแค่นี้ก็เจอแล้วนะครับ ลองทำตามเค้าดู จริงๆ มันติดแค่เรื่องเล็กๆ น้อยๆ เท่านั้นแหละ แค่เราไม่เข้าใจและมองไม่เห็น
Date :
2013-11-17 01:34:30
By :
PlaKriM
พี่ๆช่วยแนะนำหน่อยค่ะ ใส่ ob_start แล้ว ก็ยังไม่หาย ไม่รู้ผิดตรงไหนค่ะ รบกวนหน่อยนะค่ะ
Date :
2013-11-17 15:09:30
By :
NToo
รบกวนด้วยค่ะ error Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\help\print_xls.php:1) in C:\AppServ\www\help\print_xls.php on line 73 ค่ะ
Date :
2013-11-18 10:03:01
By :
NToo
ตรงหน้าห้ามมีอะไรเลย <?ตรงนี้ด้วย ob_start();?>
Date :
2013-11-18 10:07:13
By :
PlaKriM
ขอบคุณทุกคนที่ให้ความช่วยเหลือ ตอนนี้ได้เรียบร้อยแล้วค่ะ ขอบคุณค่ะ
Date :
2013-11-18 11:09:21
By :
NToo
สุดท้ายได้แบบไหน หากไม่บกวนมาก รบกวนสรุปให้หน่อยครับ คนใหม่ ๆ มาอ่านเจอจะได้ทราบว่าแก้อย่างไร...จักขอบพระคุณอย่างยิ่ง
Date :
2013-11-18 11:25:15
By :
apisitp
ใส่ ob_start(); ค่ะ ในเครื่องlocalจะมีปัญหา แต่พอโยนขึ้น server ไม่มีอาการ error อะไรค่ะ
Date :
2013-11-18 11:46:22
By :
NToo
ob_start(); เห็นหลายคนใช้กันจัง แต่อาจจะไม่รู้ถึงความหมาย(ผมก็เป็น1ในนั้น) ก็เลยไปลองหาอ่านดูใน google ดู....เลยฝากไว้ลองหาอ่านดูครับ เมื่อใช้คำสั่งแล้วก็ควรรู้ทฤษฎี...ไว้บ้าง
ฝากให้ศึกษาครับ
Date :
2013-11-18 12:10:58
By :
apisitp
Load balance : Server 03