Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > มันเป็นเรื่องของ $_SESSION ลบแล้วดันหายไปหมดเลย ขอคำแนะนำหน่อยครับ



 

มันเป็นเรื่องของ $_SESSION ลบแล้วดันหายไปหมดเลย ขอคำแนะนำหน่อยครับ

 



Topic : 071791



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์




คือ ผมทำระบบ Cart อะครับ ที่ผมเก็บมันจะเป็นรูปแบบนี้อะครับ

สินค้า A , $ID=1
สินค้า B ,$ ID=2
สินค้า D, $ID=3
สินค้า E, $ID=4
------
เมื่อผมเลือก A ก็จะเก็บ SESSION เป็น

$_SESSION["Cart"][]=$ID ผลลัพจะได้ $_SESSION["Cart"][0]=1

ลองเลือกอีกตัว B
$_SESSION["Cart"][]=$ID ผลลัพจะได้ $_SESSION["Cart"][1]=2

เอามาอีกตัวละกัน E
$_SESSION["Cart"][]=$ID ผลลัพจะได้ $_SESSION["Cart"][2]=4

//ผลของ SESSION ออกมาไม่มีปัญหาครับ เอาละทีนี้ ผมคิดว่าผมจะไม่เอา สินค้า A
ผมเลยจัดการ ลบ มันออกไป โดยกำหนด SESSION การโยนค่า Array มายัง ไฟล์ที่ต้องการลบ คือ
delete.php?sid=0
ค่าที่ได้มาจะเป็นค่า 0 $sid=$_GET['sid']; $sid ก็จะได้เท่ากับ 0
ผมก็จัดการเอามันไปลบ ซึ่งมันก็คือสินค้า A โดย

unset($_SESSION["Cart"][$sid]); แบบนี้ถูกมะครับ มันก็จะได้ = unset($_SESSION["Cart"][0]); คือลบ Array ตำแหน่งที่ 0 ออกไป

จากนั้น SESSION ที่เหลือมันก็จะลดลั่นลงมา จาก

สินค้า B
ผลลัพจะได้ $_SESSION["Cart"][1]=2 ระบบ Array มันจะขยับตัวเองลงมา เป็น $_SESSION["Cart"][0]=2

สินค้า E
$_SESSION["Cart"][2]=4 ระบบ Array มันจะขยับตัวเองลงมา เป็น $_SESSION["Cart"][1]=4
ปัญหาคือ
$_SESSION["Cart"][0]=1 ที่ถูกลบไปก่อนหน้านั้น เมื่อลบไปแล้ว $_SESSION["Cart"][0]=2 จะมาแทนที่
แต่ผลคือ ข้อมูลใน Array[1] ที่ขยับลงมาหา Array[0] หายไปหมดเลย

แต่ข้อมูล ของ $_SESSION["Cart"][2]=4 ที่ขยับลงมา เป็น $_SESSION["Cart"][1]=4 มันยังมีอยู่

จะแก้ยังไงดีครับ ที่จะไม่ให้ข้อมูล หาย

// ผมลองลบ Array[2] ออกก่อน มันไม่มีปัญหานะครับ ปัญหามันจะเกิดขึ้นเมื่อ เราไปลบ Array[0] ออกไป ตัวที่ต่อจานั้น ข้อมูลก็จะหายไปทันทีครับ

แก้ไขไงดีครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2012-01-12 11:42:17
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-01-12 11:36:54 By : bluesix View : 1154 Reply : 3
 

 

No. 1



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์


ผมว่าผมผิดนะเนี๊ย อันที่จริง Array มันไม่ได้ลดลงมา แต่ผมดันเอา For ไปวนกับค่า Count ของ Array
อิอิ แต่ผมจะ วน For มันยังดีครับ
ตอนแรกที่ใช้คือ
Code (PHP)
$sum=count($_SESSION["Cart"]);
for($i=0;$i<$sum;$i++)
{
    echo $_SESSION["Cart"][$i];
}


สมมุตินะ ผมมี 5 Array
มันก็จะวน 0-4
แต่ถ้าผม ลบ Array ตัวที่ 0 ออกไป Count Array มันก็จะเหลือแค่ 4 แต่ว่า $_SESSION["Cart"][4]; มันก็จะไม่แสดงโดยปริยาย

ฉนั้นผมจะ For ยังไงดีครับ








ประวัติการแก้ไข
2012-01-12 11:59:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-12 11:50:44 By : bluesix
 


 

No. 2

Guest


Code (PHP)
<?php
	echo "Before<br>";
	$_SESSION["test"][] = "test > 1";	
	$_SESSION["test"][] = "test > 2";	
	$_SESSION["test"][] = "test > 3";	
	$_SESSION["test"][] = "test > 4";				
	foreach ($_SESSION["test"] as $key => $value)
	{
		echo $key . " : " . $value . "<br>";
	}
	unset($_SESSION["test"][0]);
	echo "After<br>";
	foreach ($_SESSION["test"] as $key => $value)
	{
		echo $key . " : " . $value . "<br>";
	}
?>


ลองทดสอบจากโค้ดนี้ดูนะครับ ผมว่าน่าจะมองออกแล้วหละครับ จากผลจะเห็นว่าเวลาที่เราลบ $_SESSION["test"][0] แล้ว ค่าที่อยู่ตัวต่อมาจะไม่ได้มาแทนที่ครับ เพราะถูกกำหนดไว้ ณ ตำแหน่งนั้นแล้ว

ทำแบบนี้เลยครับ จากตัวอย่างมี $_SESSION อยู่ 4 ตัว

$_SESSION["test"][0]
$_SESSION["test"][1]
$_SESSION["test"][2]
$_SESSION["test"][3]

ในกรณีที่ต้องการลบตัวแรกคือ 0 ให้ทำการคัดลอกข้อมูลในลำดับที่ 1 ไปใส่ใน 0 และคัดลอกข้อมูลในลำดับที่ 2 ไปใส่ใน 1 และให้ทำการ unset($_SESSION["test"][3]); ออกไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-12 11:57:33 By : bshtraining
 

 

No. 3



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : bshtraining เมื่อวันที่ 2012-01-12 11:57:33
รายละเอียดของการตอบ ::
อ้างอิงจากข้างบน


Code (PHP)
	  	<?
$cid=$_GET['sid']; // ค่า Array ที่รับมา

		$nu=count($_SESSION["Cart"]);
		for($i=$cid;$i<$nu;$i++)
		{
			$j=$i+1;
			unset($_SESSION["Cart"][$i]);
			
			$_SESSION["Cart"][$i]=$_SESSION["Cart"][$j];
	
		}
			$k=$nu-1;
			echo $k;
			unset($_SESSION["Cart"][$k]);
		?>



ขอบคุณครับที่แนะนำ ได้แล้วครับ
ลบ -> แทนที่ -> จัดเก็บ-> ลบตัวสุดท้าย

อิอิ


ประวัติการแก้ไข
2012-01-12 14:24:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-12 13:25:57 By : bluesix
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มันเป็นเรื่องของ $_SESSION ลบแล้วดันหายไปหมดเลย ขอคำแนะนำหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่