ช่วยดูโค๊ดหน่อยค่ะว่าผิดอะไรค่ะ โค๊ดนี้มันไม่ยอมเพิ่มข้อมูลให้ค่ะ มันแจ้งว่า ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมไปแล้ว...
Code (PHP)
<?
include "dbconjob.php";
$date_ = date("Ymd");
$ff = mysql_query("select * from repair ") or die(mysql_error());
$num = mysql_num_rows($ff);
if($num > 0)
{
$lastid_sql = mysql_query("SELECT idrepair FROM repair WHERE idrepair LIKE '".$date_."%' ORDER BY idrepair DESC") or die(mysql_error());
$num_cus = mysql_num_rows($lastid_sql);
if($num_cus > 0)
{
$last_id = mysql_fetch_row($lastid_sql);
$lastid = $last_id[0];
$str = explode("E",$lastid);
$add_date = $str[0];
$customer_id = $str[1];
$i = $num_cus+1;
$ticket_number=$date_."E".substr("00000".$i,-4,4);
}
else
{
$i=1;
$ticket_number=$date_."E".substr("00000".$i,-4,4);
}
} else {
$i=1;
$ticket_number=$date_."E".substr("00000".$i,-4,4);
}
if($_POST["submit"]!="")
{
$error = 0;
$computername=$_POST['computername'];
$repair=$_POST['repair'];
$cause=$_POST['cause'];
$namesent=$_POST['namesent'];
$dept_id=$_POST['dept_id'];
$datesent=$_POST['datesent'];
$hardware_oth=$_POST['hardware_oth'];
$location=$_POST['location'];
$tel=$_POST['tel'];
if($computername=="" or $repair=="" or $namesent=="" or $datesent=="")
{
echo "<center><font color='red'>";
echo "กรุณากรอกข้อมูลที่มี * ให้ครบ<br>";
echo "<a href='newjob.php'>กลับไปแจ้งซ่อม</a><br>";
$error = 1;
}
if ($error==0)
{
$check="Select * from repair where computername='$computername' and status_id=1 or status_id=2";
$checkqury= mysql_query($check) or die(mysql_error());
$numrows = mysql_num_rows($checkqury);
if ($numrows ==0)
{
for($j=0;$j<count($_POST["hardware"]);$j++)
{
if(trim($_POST["hardware"][$j]) != "")
{
$sql ="INSERT INTO repair(idrepair,idcom,computername,repair,cause,hardware,hardware_oth,namesent,dep_id,datesent,location,tel,status_id)";
$sql .=" VALUES ('$ticket_number',NULL,'$computername','$repair','$cause','".$_POST["hardware"][$j]."','$hardware_oth','$namesent','$dept_id','$datesent','$location','$tel','1')";
// echo "$sql";
$objQuery = mysql_query($sql) or die(mysql_error());
$str="INSERT INTO history (com_name,idrepair)";
$str.= " VALUES ('$computername','$ticket_number')";
$query= mysql_query($str) or die(mysql_error());
echo "ระบบได้ทำการแจ้งซ่อมแล้วค่ะ";
echo "<a href='viewjob.php'>ดูที่แจ้ง</a></b></center>";
}
}
}
else
{
echo "<center><font color='red'>ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมแล้ว</font>";
echo "<center><font color='red'><a href='viewjob.php'>ไปดูที่แจ้งซ่อม</a></font>";
}
}
}
?>
โค๊ดนี้มันไม่ยอมเพิ่มข้อมูลให้ค่ะ
มันแจ้งว่า ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมไปแล้ว
ทั้ง ๆ ที่ยังไม่ได้มีการแจ้งเข้ามานะค่ะ ช่วยดูหน่อยค่ะ ว่ามันผิดตรงไหน
ขอบคุณมาก ๆ ค่ะTag : - - - -
Date :
2010-07-15 16:38:37
By :
Nicorobin
View :
1107
Reply :
8
ดูจากโค๊ด นะคับ
ขอแนะนำ
Code (PHP)
$check="Select * from repair where computername='$computername' and (status_id=1 or status_id=2)";
จริงๆ ถ้าwhere ชื่อเครื่องอย่างเดียวไม่ได้หรอคับ -*-
ผิดพลาดประการใดต้องขออภัยด้วยคร๊าฟฟฟ
Date :
2010-07-15 16:53:40
By :
birdbird27
ที่มันขึ้น ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมแล้ว
เพราะ $numrows ไม่เท่ากับ 0
ดังนั้นก็น่าจะมาจาก
Code (PHP)
Select * from repair where computername='$computername' and status_id=1 or status_id=2
ลอง echo $check; ดูว่าค่าที่ได้ถูกไหม
=========================================================================
มันก็เลยได้ record มามากว่า 0 ผมว่า คุณลองศึกษา Logic Boolean ดีๆนะ ดูแล้วน่าจะผิด ตรง or
Date :
2010-07-15 16:54:11
By :
50121680
ผมไม่แน่ใจนะว่า SQL ใช้แบบนี้ได้รึไม่
Code (PHP)
Select * from repair where computername='$computername' and ( status_id=1 or status_id=2 )
Date :
2010-07-15 16:58:38
By :
50121680
ค่ะลองทำอย่างที่คุณ birdbird27 แล้วไม่ได้ค่ะ
แล้วก็ลองเช็ค $check;
ได้ค่ามา Select * from repair where computername='Accstock' and (status_id=1 or status_id=2)
ส่วน $numrows ได้ค่ามาเป็น 0 ค่ะ
ซึ่งไม่ไปเพิ่มในฐานข้อมูลให้นะค่ะ ยังไงช่วยแนะนำนะค่ะ
Date :
2010-07-15 17:03:51
By :
Nicorobin
งง เลย
$numrows ==0
แล้วที่ไม่ลงฐานข้อมูลนี่ยังขึ้นตัวสีแดง เหมือนเดิมป่าวคับ
ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมไปแล้ว
Date :
2010-07-15 17:20:22
By :
birdbird27
ถ้าได้ค่า 0 แล้วแต่มันยังไม่เพิ่มใน ฐานข้อมูล ก็แสดงว่า
Code (PHP)
for($j=0;$j<count($_POST["hardware"]);$j++)
{
if(trim($_POST["hardware"][$j]) != "")
{
$sql ="INSERT INTO repair(idrepair,idcom,computername,repair,cause,hardware,hardware_oth,namesent,dep_id,datesent,location,tel,status_id)";
$sql .=" VALUES ('$ticket_number',NULL,'$computername','$repair','$cause','".$_POST["hardware"][$j]."','$hardware_oth','$namesent','$dept_id','$datesent','$location','$tel','1')";
// echo "$sql";
$objQuery = mysql_query($sql) or die(mysql_error());
$str="INSERT INTO history (com_name,idrepair)";
$str.= " VALUES ('$computername','$ticket_number')";
$query= mysql_query($str) or die(mysql_error());
echo "ระบบได้ทำการแจ้งซ่อมแล้วค่ะ";
echo "<a href='viewjob.php'>ดูที่แจ้ง</a></b></center>";
}
}
ตรงนี้มีปัญหาต่อละ
Date :
2010-07-15 17:50:35
By :
50121680
ค่ะ ลองเปลี่ยนคำสั้ง sql เป็น
Select * from repair where computername='$computername' and status_id=1 or status_id=2
แล้วก็ลองเช็ค $check;
ได้ค่ามา Select * from repair where computername='rd-4' and status_id=1 or status_id=2
ส่วน $numrows ได้ค่ามาเป็น 1 ค่ะ
ไปดูในฐานข้อมูลไม่มีชื่อเครื่องนี้ค่ะ แล้วมันก็ขึ้นว่า ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมแล้ว
Date :
2010-07-16 08:33:14
By :
Nicorobin
หากเอา
Code (PHP)
else
{
echo "<center><font color='red'>ชื่อเครื่องนี้ได้ทำการแจ้งซ่อมแล้ว</font>";
echo "<center><font color='red'><a href='viewjob.php'>ไปดูที่แจ้งซ่อม</a></font>";
}
สามารถเพิ่มลงฐานข้อมูลได้ปรกติ
แต่หากแจ้งซ่อมเครื่องที่แจ้งเข้ามาแล้ว สถานะของเครื่องนั้น ๆ ยังไม่ end ก็สามารถแจ้งได้ค่ะ
ต้องทำอย่างไรดีค่ะ
Date :
2010-07-16 08:42:53
By :
Nicorobin
Load balance : Server 05