มีเรื่องให้ช่วยเหลือครับ ไม่รู้จะอธิบายยังไง ช่วยดูเนื้อหาทีครับ
ผมทำเว็บอยู่เว็บหนึง ทำระบบสมาชิก ลงทะเบียนซ่อมคอมพิวเตอร์
ผมล็อคอินเข้าไปในระบบ แจ้งซ่อมคอม1เครื่อง แล้วจะมีหน้า view คอมที่เราลงทะเบียนซ่อมไป หรือพนักงานที่ซ่อมแต่ละเครื่องครับ
ผมอยากจะเขียนโค้ด ให้หน้า view โชว์เฉพาะ คอมที่เราแจ้งซ่อม
ผมเขียนแล้ว ปรากฏว่ามาทั้งตารางหมายถึง สมาชิกที่ลงทะเบียนซ่อมไปก็มาหมดครับ ใส่ where แล้วมันจะไม่ขึ้นอะไรเลย ผมใช้ session ครับ
ถ้าไม่เข้าจัย สมุติว่าเว็บบอร์ด thaicreate >สมัครสมาชิก >ตั้งกระทู้ > จะดูเฉพาะกระทู้ที่เราตั้ง
ขอโค้ดหรือตัวอย่างในส่วนนี้หน่อยนะครับ ขอบคุณมากครับ
ฐานข้อมูลครับ
Code (PHP)
CREATE TABLE `regis_com` (
`com_id` int(4) unsigned zerofill NOT NULL auto_increment,
`brand` varchar(50) NOT NULL,
`machine` varchar(50) NOT NULL,
`serial` varchar(10) NOT NULL,
`hdd` varchar(50) NOT NULL,
`ram` varchar(50) NOT NULL,
`vga` varchar(50) NOT NULL,
`other` varchar(100) NOT NULL,
`datetime` varchar(16) NOT NULL,
`mouse` varchar(50) NOT NULL,
`keyboard` varchar(50) NOT NULL,
`adapter` varchar(50) NOT NULL,
`fdrive` varchar(50) NOT NULL,
`usbw` varchar(50) NOT NULL,
`aircard` varchar(50) NOT NULL,
`softcase` varchar(50) NOT NULL,
`dvd` varchar(50) NOT NULL,
`hddex` varchar(50) NOT NULL,
`problem` varchar(100) NOT NULL,
`repair` varchar(200) NOT NULL,
`service` varchar(10) NOT NULL,
`total` varchar(10) NOT NULL,
`status` varchar(50) NOT NULL,
`cus_id` int(3) unsigned zerofill NOT NULL,
`emp_id` int(3) unsigned zerofill NOT NULL,
PRIMARY KEY (`com_id`),
KEY `emp_id` (`emp_id`),
KEY `cus_id` (`cus_id`)
) ENGINE=InnoDB;
CREATE TABLE `customer` (
`cus_id` int(3) unsigned zerofill NOT NULL auto_increment,
`cus_user` varchar(20) NOT NULL,
`cus_pw` varchar(100) NOT NULL,
`name` varchar(50) NOT NULL,
`sname` varchar(50) NOT NULL,
`company` varchar(100) NOT NULL,
`address` varchar(100) NOT NULL,
`tel` varchar(10) NOT NULL,
`datetime` varchar(20) NOT NULL,
`idcard` varchar(13) NOT NULL,
`gen_id` varchar(20) NOT NULL,
PRIMARY KEY (`cus_id`),
KEY `gen_id` (`gen_id`)
) ENGINE=InnoDB;
Tag : PHP
Date :
2011-05-02 20:56:23
By :
ManGal49
View :
1006
Reply :
21
Code (PHP)
$strSQL = "SELECT * FROM customer WHERE cus_id = '".$_SESSION['cus_id']."' ";
แบบนี้ลองยังคับ
Date :
2011-05-02 22:09:51
By :
chachrist
ลองแล้วครับ พอใส่ where จะไม่ดึงข้อมูลออกมาครับครับ
Date :
2011-05-02 23:54:29
By :
ManGal49
ช่วยหน่อยครับ
Date :
2011-05-03 10:54:48
By :
ManGal49
ขอโค๊ดมาดูหน่อย ครับ จะได้รู้ว่าผิดตรงไหน
Date :
2011-05-03 11:18:33
By :
aknueng
login.php
Code (PHP)
<form id="login" name="login" method="post" action="customer/check_login" onsubmit="return check()">
<br />
<table width="150" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td colspan="2"><span class="style1"><span class="style4"> สำหรับสมาชิก</span><br />
<br />
</span></td>
</tr>
<tr>
<td width="70"><span class="style2"> Username</span></td>
<td width="87"><input name="cus_user" type="text" id="cus_user" onfocus="if(this.value=='Username') this.value='';" onblur="if(this.value=='') this.value='Username' ;" value="Username" size="10" maxlength="20" /></td>
</tr>
<tr>
<td><span class="style2"> Password</span></td>
<td><input name="cus_pw" type="password" class="bg_input" id="cus_pw" size="10" onfocus="if(this.value=='Password') this.value=''; " onblur="if(this.value=='') this.value='Password' ;" value="Password" maxlength="40" /></td>
</tr>
<tr>
<td colspan="2"> <input type="submit" name="submit" id="submit" value="Login" /> </td>
</tr>
</table>
<strong><span class="style9"><? echo "$login_fail";?></span></strong>
</form>
<td width="760" valign="top"><div align="left"><br />
<form id="form1" name="form1" method="get" action="search.php">
<img src="images/list_repair.jpg" width="550" height="25" />
<input name="search" type="text" id="search" onfocus="if(this.value=='รหัสซ่อม...') this.value='';" onblur="if(this.value=='') this.value='รหัสซ่อม...' ;" value="รหัสซ่อม..." size="5" maxlength="100" />
<input type="submit" name="submit" id="submit" value="Search" />
</form>
check_login.php
Code (PHP)
<?
ob_start();
$cus_user=trim($_POST['cus_user']);
$cus_pw=md5(trim($_POST['cus_pw']));
include('../mysql.inc.php');
$result=mysql_query("select * from customer where cus_user='$cus_user' and cus_pw='$cus_pw' ");
$row=mysql_fetch_object($result);
if($row<=0)
{
$login_fail="<span class=style5>มีข้อผิดพลาด กรุณา Login ใหม่ หรือติดต่อผู้ดูแลระบบ </span>";
session_register("login_fail");
header("location:../index.php");
}
else
{
session_register("sess_user");
$_SESSION["sess_userid"]=session_id();
$_SESSION["sess_username"]=$cus_user;
$_SESSION["sess_pw"]=$cus_pw;
echo "<script> alert('ระบบกำลังตรวจสอบ'); window.location='cus_emp_view';</script>";
}
ob_end_flush();
?>
check_session.php
Code (PHP)
<?
session_start();
$sess_userid=$_SESSION[sess_userid];
$sess_username=$_SESSION[sess_username];
$row->id=$_SESSION[sess_id];
if($sess_userid <> session_id() )
{
echo "<script>alert('กรุณา Login')</script>";
echo "<meta http-equiv='refresh' content='0;url=../index.php'/> ";
}
?>
com_view.php
Code (PHP)
<?
include('../mysql.inc.php');
$sql="select * from regis_com where cus_id=' ".$_SESSION["sess_userid"]." ' ";
$result=mysql_query($sql);
$num_rows=mysql_num_rows($result);
$no=1;
echo "เครื่องซ่อมทั้งหมดจำนวน".$num_rows."เครื่อง<hr>";
?>
</span>
<form action="" method="post" name="form2" class="style9" id="form2">
<table width="600" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#C9C7C7">
<tr>
<td width="17"><div align="center" class="style3"><strong>ที่</strong></div></td>
<td width="56"><div align="center" class="style3"><strong>รหัสซ่อม</strong></div></td>
<td width="55"><div align="center" class="style3"><strong>รหัสลูกค้า</strong></div></td>
<td width="278"><div align="center" class="style3"><strong>อาการ</strong></div></td>
<td width="55"><div align="center" class="style3"><strong>สถานะ</strong></div></td>
<td width="118"><div align="center" class="style3"><strong>หมายเหตุ</strong></div></td>
</tr>
<?
while($row=mysql_fetch_object($result) )
{
$url_del="com_del?com_id=$row->com_id";
$url_history="cus_history?cus_id=$row->cus_id";
$com_history="com_edit?com_id=$row->com_id";
?>
<script language="JavaScript" type="text/javascript">
function confdel(object)
{
if(confirm('คุณแน่จัยที่จะลบข้อมูลซ่อม')==true)
{
return true;
}
return false;
}
</script>
<tr>
<td><div align="center" class="style3"><? echo $no++;?></div></td>
<td><div align="center" class="style3"><a href="<? echo $com_history;?>"><? echo $row->com_id;?></div></td>
<td><div align="center" class="style3"><a href="<? echo $url_history;?>"><? echo $_SESSION["sess_username"];?></div></td>
<td><div align="center" class="style3"><? echo $row->problem;?></div></td>
<td><div align="center" class="style3"><? echo $row->status;?></div></td>
<td><div align="center" class="style3">แก้ไข / <a href="<? echo $url_del;?>" onclick="return confdel(this);">ลบ</a></div></td>
</tr>
<?
}
?>
</table>
</form>
Date :
2011-05-03 14:47:19
By :
ManGal49
ตรงคำสั่ง SQL
Code (PHP)
$sql="select * from regis_com where cus_id=' ".$_SESSION["sess_userid"]." ' ";
ลองแก้เป็น
Code (PHP)
$sql="select * from regis_com where cus_id='".$_SESSION["sess_userid"]."' ";
ตรง cus_id='' มันมีช่องว่าง
Date :
2011-05-03 15:05:39
By :
naskw
ขอบคุณครับคุณ anu
ไม่โชว์เหมือนเดิมครับ ถ้าไม่ใส่ where ก็ขึ้นนะครับ แต่ขึ้นหมดทุกคนเลยครับ อยากให้ขึ้นเฉพาะ cus_id ของคอม คนคนนั้นครับ
Date :
2011-05-03 15:23:09
By :
ManGal49
ให้ลอง echo คำสั่ง sql ขึ้นมาดูก่อนครับว่ามีหน้าตาอย่างไร แล้วลองนำไปใช้กับ phpMyAdmin หรือ tool ตัวอื่นๆดูก่อนครับว่าผลมันออกมาอย่างไร
Date :
2011-05-03 15:24:55
By :
Songkram
session_start(); ต้องมีทุกหน้าที่ใช้ SESSION ครับ
Date :
2011-05-03 15:31:59
By :
ไวยวิทย์
ถ้าไม่ใส่มันขึ้นหมดอยู่แล้วครับ จะเอาค่าเฉพาะต้องใส่ where เข้าไป
Code (PHP)
$sql = "SELECT * FROM (ตารางที่ต้องการดึงออกมา) WHERE (ฟิวด์ที่ต้องการ) ='1' " ;
$sqlquery=mysql_db_query($dbname,$sql);
while($result= mysql_fetch_array($sqlquery)){
$wid=$result['w_id'];
}
ตรงเลข 1 ประมาณว่า สถานะนั้นเท่ากับ 1 แล้วข้อมูลจะออกมาหมดครับลองดูน่ะไม่รู้ว่าใช่แบบที่ต้องการป่าว
Date :
2011-05-03 15:32:21
By :
chonburi f.c
ขอบคุณทุก comment ครับ
คุณ chonburi f.c ผมลองใช้ ไม่ขึ้นเหมือนเดิมครับ อยากให้ขึ้นเฉพาะ cus_id ของคอม คนคนนั้นครับ ^^
Code (PHP)
"select * from regis_com where cus_id='".$_SESSION["sess_userid"]."'='1' ";
Date :
2011-05-03 15:44:22
By :
ManGal49
ใส่ตัวนี้ยังครับ ทุกหน้าอย่างที่คุณ Nico บอก session_start();
แล้วก็ตารางที่เก็บรายการแจ้งซ่อมอะครับได้เก็บ id ของสมาชิกที่แจ้งไปรึป่าว
ถ้าเก็บก็ เก็บใน รูปแบบ session แล้วเอามาเปรียบเทียบกับ id สมาชิกนั้นแหละครับมันน่าจะออกน่ะ
Date :
2011-05-03 17:02:18
By :
chonburi f.c
ใส่ครับ บรรทัดแรก session_start();
ในฐานข้อมูล แจ้งซ่้อม เชื่อมกับ cus_id ครับ
ขอโค้ดตัวอย่างได้มั้ยครับ ^^
Date :
2011-05-03 17:20:16
By :
ManGal49
ลอง echo คำสั่ง sql ออกมาดูหน่อยสิครับว่าเป็นยังไง
ตรง
$sqlquery=mysql_db_query($dbname,$sql);
เพิ่มเป็น เพื่อดูว่ามัน error ปะ
$sqlquery=mysql_db_query($dbname,$sql)or die(mysql_error());
ปล.ไม่เคยใช้ mysql_db_query() กัน or die(); เหมือนกันไม่รู้ใช้ไดปะ อิๆ
Date :
2011-05-03 17:29:18
By :
naskw
ทำไม่เป็นอ่า ขอโทษทีครับ - -
Date :
2011-05-03 17:47:31
By :
ManGal49
ยังไม่ได้อีกเหรอครับ
Date :
2011-05-04 12:19:27
By :
chonburi f.c
เดี๋ยวก่อนนะครับ ผมดูแล้วไฟล์ check_login.php บรรทัดที่ 19
$_SESSION["sess_userid"]=session_id();
ซึ่งผมว่ามันน่าจะผิด ถ้าคุณจะเอา $_SESSION["sess_userid"] ไปใช้งานต่อ
ควรจะแก้เป็น $_SESSION["sess_userid"]=ค่า cus_id ทีรับมาจากตาราง customer
เพราะ session_id(); มันเป็นค่าที่สุ่มขึ้นมาครับ มันไม่ตรงกับในฐานข้อมูลอยู่แล้ว
ไม่เชื่อก็ลอง echo session_id(); ออกมาดูสิครับ ลองเอาโค้ดนี้ไปรันก็ได้session_start();
$_SESSION["sess_userid"]=session_id();
echo $_SESSION["sess_userid"];
รันแล้ว ปิด browser แ้ล้วเปิดรันโค้ดนี้ใหม่ ค่าตรงนี้จะเปลี่ยนไปเรื่่อย ๆ
ซึ่งมันเอาไปอ้างอิงอะไรกับใน db ไม่ได้เลย
และก็ดูจาก ฐานข้อมูล cus_id เป็น int ไม่ต้องใช้ '' คร่อมก็ได้ครับ แค่นี้ก็พอ
"select * from regis_com where cus_id=".$_SESSION["sess_userid"];
ประวัติการแก้ไข 2011-05-04 13:25:10 2011-05-04 13:25:37
Date :
2011-05-04 13:21:31
By :
NarinNil
ขอบคุณทุกคอมเม้นครับ
ตอบคุณ NarinNil ครับ
ผมลองเปลี่ยนจากฐานข้อมูล โดยการล็อคอินใช้ username password
เปลี่ยนเป็น ใช้ cus_id กับ cus_pw แทน cus_user cus_pw
ปรากฏว่า ก็ดึงออกมาให้ ครับ แต่ถ้าจะใช้ cus_user cus_pw จะให้เก็บค่า cus_id แต่ละคน ยังไงหร๋อครับ
ขอบคุณครับ
Date :
2011-05-04 14:50:37
By :
ManGal49
ขอบคุณ NarinNil ครับ จะลองดูครับ เด้วจะบอกครับ
Date :
2011-05-04 15:41:48
By :
ManGal49
ได้แล้วแหละครับ ขอบคุณคุณ NarinNil มากๆครับ จุ๊ฟๆ
ตอนนี้ปัญหาใหม่เกิดแล้วครับ
ที่ว่ๅ cus_id คือหน้าของ customer ครับ
มีหน้าของพนักงานขาย sell
พอผมล๊อคอินเข้าหน้า customer แล้วลองเปลี่ยนลิงค์ ไปลิงค์ของ sell ปรากฏว่า เข้าได้ซะงั้น ทั้งๆที่ หน้า check_session ผมทำป้องกันไว้แล้ว
cus_id กับ emp_id ปรับเป็น auto ครับ เริ่มนับ 1 เหมือนกันครับ
อยากถามว่า จะใช้ระบบป้องกัน ต้องเขียนโค้ดยังไงครับ
ขอบคุณหลาย
ประวัติการแก้ไข 2011-05-04 19:37:48
Date :
2011-05-04 18:34:03
By :
ManGal49
Load balance : Server 03