|
|
|
ช่วยหน่อยคับ ทำให้มันเป็น array ให้หน่อยคับ ทำไม่ได้จิงๆคับ |
|
|
|
|
|
|
|
คงมาจากกระทู้นี้สินะครับ https://www.thaicreate.com/php/forum/091743.html
เอาจริงๆ มันทำได้หรือไม่ได้ ไม่สามารถรู้เลยครับ
เพราะ $this->session->set_userdata() มันไป set สมาชิกตัวไหนของ $this ก็มิทราบได้
แต่ดูเหมือนจะเป็น $this->session->userdata
แต่ก็ไม่ทราบอีกว่าไอ้ $this->session->userdata เนี่ย มันเป็นตัวแปรตรงๆ หรือมันเป็น property ที่อ่านผ่าน __get()
ดังนั้นต้องลองดูตามนี้ครับ
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id));
$this->session->set_userdata('UserCountSubject',$bookregis);
// ถ้า $this->session->userdata มันเป็น array และสามารถเข้าถึงได้โดยตรง
// สร้างสมาชิกใหม่ชื่อ subjects โดยให้เป็น array
// และเพิ่ม $Subject[0] เข้าไปตรงๆ เลย (เดาว่า $Subject[0] คือ object ที่อ่านมาจาก database)
$this->session->userdata->subjects[$id] = $Subject[0]; // ใช้ $id เป็น key จะได้มั่นใจว่าจะไม่มีวิชาที่ลงทะเบียนซ้ำ
//$this->session->set_userdata('SubjectCode',$bookregis.$Subject[0]->SubjectCode);
//$this->session->set_userdata('SubjectName',$bookregis.$Subject[0]->SubjectName);
//$this->session->set_userdata('SubjectCredit',$bookregis.$Subject[0]->SubjectCredit);
redirect("home/register");
}
แล้วตรงนี้ก็ต้องเปลี่ยนนิดนึง โดยใช้ {foreach} แทน {section}
{foreach from=$my_session['subjects'] key=subject_id item=subject}
{$a=0}
<tr bgcolor="#EEEEEE">
<td width="80" align="center">{$subject->SubjectCode}</td>
<td width="250" align="">{$subject->SubjectName}</td>
<td width="30" align="center">{$subject->SubjectCredit}</td>
<td width="30" align="center"></td>
<td width="100" align="center"></td>
<td width="10" align="center"><a href="{site_url()}home/deletesessionregister/{$a}">ลบ</a></td>
</tr>
{$a=$a+1}
{/foreach}
</table><br/>
อ้างอิง
{foreach} - http://www.smarty.net/docsv2/en/language.function.foreach.tpl
|
ประวัติการแก้ไข 2013-03-05 00:00:48
|
|
|
|
Date :
2013-03-04 23:59:41 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->session->set_userdata มันเป็นที่เก็บค่าของตัว user ที่ login เข้ามาใน session อะคับ แล้วมันไม่ได้เป็นอาร์เร อะคับ บางอย่างผมก็ไม่ค่อยเข้าใจ ตัว CI ตัวนี้ มีพี่เค้าโม มาให้อ่ะคับ เพิ่มเคยจับครั้งแรกเหมือนกันคับ มั่วๆไป มั่วมา แล้วผมลองแก้ตามดุแล้วคับ มันไม่ขึ้นเหมือนเดิม อย่างไรคุณมีเฟส หรือเอ็มไหมคับ ช่วยหน่อยคับ ขอบคุณมากๆคับ
|
|
|
|
|
Date :
2013-03-05 00:24:13 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะใช้ทำไมครับ CI ถ้าแบบมันไม่ได้ช่วยให้สร้างได้เร็วขึ้น
เฟรมเวิร์ค ถ้าไม่เข้าใจ ใช้ไม่เป็น ก็ไม่มีประโยชน์หรอกครับ
เฟรมเวิร์คไม่เท่าไหร่ พ่วง template engine อีก
สรุปคุณต้องเรียนรู้กี่อย่างครับเนี่ย PHP + MySQL + CodeIgnitor + Smarty (ยังไม่รวม HTML + JavaScript)
เผลอๆ ทำแบบเพลนๆ จะเร็วกว่าอีก ถ้าโปรแกรมไม่ได้ซับซ้อนมาก
คงต้องรอคนเก่ง CI เขามาตอบล่ะครับ เพราะผมไม่ได้ใช้มัน (แต่เรื่อง template engine นี่รู้ดี)
|
|
|
|
|
Date :
2013-03-05 00:58:12 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วก็ $this->session->set_userdata มันไม่ใช่ array แน่นอนครับ เพราะมันเป็นฟังก์ชั่น
ที่ผมถามคือ $this->session->userdata ต่างหาก
|
|
|
|
|
Date :
2013-03-05 01:02:48 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆนะคับ มันต้องใช้อะคับ เพราะคนที่ให้มา เค้าก็ช่วยไว้เยอะ แต่ระบบไม่ใหญ่หรอกคับ ระบบทะเบียนทำมะดา
|
|
|
|
|
Date :
2013-03-05 01:03:36 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเอาโค้ดคลาสหลักๆ มาดูครับ ให้มาแค่นี้คงบอกอะไรมากไม่ได้หรอกครับ
ผมไม่อยากคุยในเฟสหรืออะไรเป็นการส่วนตัว (ยกเว้นเป็นการจ้างทำจ้างปรึกษา)
เพราะผมอยากตอบในนี้เผื่อวันหน้ามันจะมีประโยชน์กับคนอื่น
|
|
|
|
|
Date :
2013-03-05 01:12:06 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แต่วันนี้เว็บบอร์ดเหมือนจะอืดจังเลยครับ - -
|
|
|
|
|
Date :
2013-03-05 01:15:14 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
ไฟล์ home.php
function userlogin(){
$passwords = quotes_to_entities($_REQUEST['Password']);
$username= $this->input->post('Username');
$newpass = md5($passwords);
$cond = array('UserName =',$username,'UserPassword =',$newpass,'UserActive =',1);
$this->authen->login($cond);
$my_session=$this->session->userdata;
//echo $my_session['UserName'];
if(!empty($my_session['UserName'])){
$nday = $this->authen->reversedate($my_session['UserCreateOn']);
$newday = $this->getdays($nday,date('Y/m/d'));
if($newday >90){
$this->tp->assign('show',1);
$this->tp->assign('my_session',$my_session);
$this->tp->assign('message','Password Expire ,Please generate new password.');
$this->tp->display("frontend/index.html");
}else{
$this->tp->assign('my_session',$my_session);
$this->tp->display("frontend/index.html");
}
}else{
redirect("home/loginuser");
}
}
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id));
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit);
redirect("home/register");
}
function deletesessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject'] -1;
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->set_userdata('SubjectCode'.$id,"");
$this->session->set_userdata('SubjectName'.$id,"");
$this->session->set_userdata('SubjectCredit'.$id,"");
redirect("home/register");
}
Code (PHP) ไฟล์ authen.php
function login($rowdata){
$sql ="SELECt * FROM TblUsers WHERE ".$rowdata[0]."'".$rowdata[1]."' AND ".$rowdata[2]."'".$rowdata[3]."' AND ".$rowdata[4]."'".$rowdata[5]."'";
$query = $this->db->query($sql);
if ($query->num_rows() != 0){
$row = $query->row();
$this->update_last_login($row->UserId);
$this->session->set_userdata('UserId', $row->UserId);
$this->session->set_userdata('UserName', $row->UserName);
$this->session->set_userdata('UserFirstname', $row->UserFirstname);
$this->session->set_userdata('UserLastname', $row->UserLastname);
$this->session->set_userdata('UserEmail', $row->UserEmail);
$this->session->set_userdata('UserActive', $row->UserActive);
$this->session->set_userdata('UserIp', $row->UserIp);
$this->session->set_userdata('UserSalt', $row->UserSalt);
$this->session->set_userdata('UserCreateOn', $row->UserCreateOn);
$this->session->set_userdata('UserLastLogin', $row->UserLastLogin);
$this->session->set_userdata('UserGroupId', $row->UserGroupId);
$this->session->set_userdata('UserTimeChange', $row->UserTimeChange);
$this->session->set_userdata('UserHistoryPass1', $row->UserHistoryPass1);
$this->session->set_userdata('UserHistoryPass2', $row->UserHistoryPass2);
$this->session->set_userdata('UserHistoryPass3', $row->UserHistoryPass3);
$this->session->set_userdata('UserHistoryPass4', $row->UserHistoryPass4);
$this->session->set_userdata('UserCountSubject',0);
echo "{success:true}";
}else{
echo "{success: false, errors: { reason: ' Login failed. Try again.' }}";
}
}
|
|
|
|
|
Date :
2013-03-05 01:22:14 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัว class ล่ะครับ
$this นี่มาจากไหน
จะได้รู้ว่า $this->session->userdata จัดเก็บยังไง จะ hack มันยังไง
|
|
|
|
|
Date :
2013-03-05 01:24:37 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP) Session.php
function userdata($item)
{
return ( ! isset($this->userdata[$item])) ? FALSE : $this->userdata[$item];
}
|
|
|
|
|
Date :
2013-03-05 01:30:26 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->session->userdata เป็น array ตามที่ผมสันนิษฐานครับ
ขอโค้ดที่คุณบอกว่าแก้แล้วอย่างที่ผมบอก มาดูหน่อยสิครับ จะได้รู้ว่าแก้ถูกหรือเปล่า
|
|
|
|
|
Date :
2013-03-05 01:38:02 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id));
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->userdata->subjects[$id] = $Subject[0];
/* $this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit); */
redirect("home/register");
}
Code (PHP)
{foreach from=$my_session['subjects'] key=subject_id item=subject}
{$a=0}
<tr bgcolor="#EEEEEE">
<td width="80" align="center">{$subject->SubjectCode}</td>
<td width="250" align="">{$subject->SubjectName}</td>
<td width="30" align="center">{$subject->SubjectCredit}</td>
<td width="30" align="center"></td>
<td width="100" align="center"></td>
<td width="10" align="center"><a href="{site_url()}home/deletesessionregister/{$a}">ลบ</a></td>
</tr>
{$a=$a+1}
{/foreach}
|
|
|
|
|
Date :
2013-03-05 01:43:58 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เช็ค $this->session->userdata ได้ไหมครับ
ว่ามันมีค่าวิชาที่เพิ่มเข้าไปจริงหรือเปล่า
ด้วย print_r()
ลองหาที่ใส่ดู ในท้ายฟังก์ชั่น addsessionregister() ก็ได้
echo '<pre>';
print_r($this->session->userdata);
exit;
|
ประวัติการแก้ไข 2013-03-05 01:54:16
|
|
|
|
Date :
2013-03-05 01:53:39 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP) ขึ้นมาแบบนี้อ่ะคับ
Array
(
[session_id] => 48a8acda78b34865817fdd0d868c06ac
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/53
[last_activity] => 1362423369
[UserId] => 1
[UserName] => admin
[UserFirstname] => admin
[UserLastname] => admin
[UserActive] => 1
[UserIp] => 127.0.0.1
[UserSalt] => 1
[UserCreateOn] => 18-02-2013
[UserLastLogin] => 04-03-2013
[UserTimeChange] =>
[UserHistoryPass1] => 25d55ad283aa400af464c76d713c07ad
[UserHistoryPass2] =>
[UserCountSubject] => 2
[SubjectCode0] =>
[SubjectName0] =>
[SubjectCredit0] =>
[SubjectCode] => 2000-1101
[SubjectName] => เธ เธฒเธฉเธฒเนเธ—เธขเน€เธเธทเนเธญเธญเธฒเธเธตเธ 1
[SubjectCredit] => 2
[a] => 22000-1101
[32000-1101] =>
[3เธ เธฒเธฉเธฒเนเธ—เธขเน€เธเธทเนเธญเธญเธฒเธเธตเธ 1] =>
[32] =>
[12000-1101] =>
[1เธ เธฒเธฉเธฒเนเธ—เธขเน€เธเธทเนเธญเธญเธฒเธเธตเธ 1] =>
[12] =>
[22000-1201] =>
[2เธ เธฒเธฉเธฒเธญเธฑเธเธเธคเธฉเน€เธเธทเนเธญเธเธฒเธฃเธชเธทเนเธญเธชเธฒเธฃ 1] =>
[22] =>
[-52000-1101] =>
[-5เธ เธฒเธฉเธฒเนเธ—เธขเน€เธเธทเนเธญเธญเธฒเธเธตเธ 1] =>
[-52] =>
[SubjectId] => 1
[LevelId] => 1
[SubjectPrice] => 288
[0] => 02000-1101
)
|
|
|
|
|
Date :
2013-03-05 01:56:53 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ชัดเลยครับ
ผิดตรงนี้ต่างหาก
Code (PHP)
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id)); // นี่ครับ
// $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id)) มันอาจจะคืนค่ากลับมาเป็น array ที่ว่างเปล่า
// ดังนั้น $Subject[0] อาจจะมีค่าเป็น null ไม่ใช่ object อย่างที่คาดหวังไว้
// ลองตรวจสอบส่วนนั้นดูครับ
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->userdata->subjects[$id] = $Subject[0];
/* $this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit); */
redirect("home/register");
}
|
|
|
|
|
Date :
2013-03-05 02:29:10 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆนะคับ ไงจะลองปรับแก้ไขตามดูนะคับ
|
|
|
|
|
Date :
2013-03-05 02:36:56 |
By :
nittayachat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองถามพี่ที่เอาโค้ดมาดูสิครับ ว่าทำไมมันถึง SELECT ไม่เจอ
โค้ดแค่นี้บอกอะไรไม่ได้เลยครับ แถมเป็นโค้ดที่มีอย่างอื่นครอบไว้ และเป็นโค้ดที่คุณเอามา และแก้ไขไปแล้ว ก็ทำได้แต่คาดเดา
คืออธิบายได้อย่างเดียวที่ผิดมันคือ
การเรียกข้อมูลด้วย SQL ผ่านเฟรมเวิร์คของคุณ มันให้ผลคืนกลับมาเป็น 0 แถว
พูดง่ายๆ ว่าไม่เจอนั่นแหละ ซึ่งตรงนี้เป็นไปได้หลายอย่าง
- ชื่อตารางผิด
- query ผิด
- ชื่อฟิลด์ผิด
แต่ข้างต้นถ้าเป็นเฟรมเวิร์คน่าจะแสดง error และจบการทำงาน ดังนั้นเหลือเหตุผลต่อไป
- $id ที่ให้ไปเป็นเงื่อนไข ไม่มีอยู่จริง
หรืออ่านค่าผิด
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id)); // นี่ครับ
// ลอง print_r($Subject) ดู
echo '<pre>';
print_r($Subject)
echo '</pre>';
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->userdata->subjects[$id] = $Subject[0];
/* $this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit); */
redirect("home/register");
}
หรือรอคนอื่นที่รู้เรื่อง CI มาตอบ หรือคนอื่นที่รู้เรื่อง smarty กว่าผมมาตอบครับ
|
|
|
|
|
Date :
2013-03-06 00:45:56 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอิ่ม แบบนี้ก็ SELECT ออกมานะครับ เจอด้วย ไม่มีปัญหาอะไร
แต่จากผลที่ให้เอามาให้ดูใน NO.14 มันไม่มีตัวแปร subjects อยู่ใน $this->session->userdata
ทั้งๆที่กำหนด $this->session->userdata->subjects[$id] = $Subject[0] แล้ว
อันนี้ผมงงครับ
ลองแบบนี้อีกที
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id)); // นี่ครับ
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->userdata->subjects[$id] = $Subject[0];
// ลอง print_r($this->session->userdata) ดู หลังจากที่กำหนดค่าเลย
echo '<pre>';
print_r($this->session->userdata)
echo '</pre>';
/* $this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit); */
redirect("home/register");
}
|
ประวัติการแก้ไข 2013-03-06 01:40:58
|
|
|
|
Date :
2013-03-06 01:40:05 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดูแบบนี้ด้วยครับ
ผมว่า $this->session->userdata เข้าถึงโดยตรงไม่ได้แล้ว (ไม่ใช่ array)
และโค้ดในคำตอบที่ 10 ไม่น่าจะใช่ของ object นี้
Code (PHP)
function addsessionregister($id){
$my_session=$this->session->userdata;
$bookregis=$my_session['UserCountSubject']+1;
$Subject = $this->frontend->getdbwhere('tblsubject',array('tblsubject.SubjectCode' =>$id)); // นี่ครับ
$this->session->set_userdata('UserCountSubject',$bookregis);
$this->session->userdata->subjects[$id] = $Subject[0];
// ลอง print_r($this->session) ดูข้อมูลใน Session object เลย
echo '<pre>';
print_r($this->session);
print_r(error_get_last()); // ดู error ล่าสุดด้วย
echo '</pre>';
/* $this->session->set_userdata($bookregis.$Subject[0]->SubjectCode);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectName);
$this->session->set_userdata($bookregis.$Subject[0]->SubjectCredit); */
redirect("home/register");
}
|
|
|
|
|
Date :
2013-03-06 02:01:39 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งั้นตัด print_r($this->session); ออกไปก่อน ขอดูแค่ print_r(error_get_last()); พอ
|
|
|
|
|
Date :
2013-03-06 02:32:14 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อัพไฟล์ทั้งหมดให้ผมดูหน่อยล่ะกันครับ
เว็บฝากไฟล์อะไรก็ได้
เผื่อพอจะช่วยอะไรได้บ้าง
หรือรอผู้รู้มาช่วยก็ได้ครับ
|
|
|
|
|
Date :
2013-03-06 03:26:43 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|