ผมควรส่งค่าอย่างไรดี ล่ะอีแบบนี้

เริ่มโดย Kizmo, 26 กันยายน 2008, 23:01:45

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Kizmo

ผมควรส่งค่าแบบไหนหาก

หน้า loop นั้นได้ loop ค่าออกมา 2 แบบ คือ
1. id
2. filename
แล้วผมจะส่งทั้งค่าทั้งหมดไปอีกหน้าได้อย่างไร
(ใน 1 loop ต้องส่งค่าทั้ง 2 แบบ ตามจำนวน loop)

เท่าที่ผมลองดู คิดได้เพียงส่งเป็น $_SESSION แล้ว [] ด้านท้าย (search ใน google ได้มา)
เป็น $_SESSION['id'][] และ $_SESSION['filename'][]

แต่พอรับค่าอีกหน้ามักจะเกิดปัญหาหลายกรณีเช่น
1. error []
2. echo ค่าแรกได้ ค่าถัดมา ออกเฉพาะตัวแรก และต่อ ๆ ไปก้อไม่ออกค่าเลย
และในบางครั้งก้อใช้งานได้ ออกค่าได้ทั้งหมด
(ตอนแรกผมคิดว่า appserv มันเพี้ยน แต่ลองกับหลายเครื่องเป็นคล้าย ๆ กัน)

สรุป...
ผมขอโค้ดว่าผมจะส่งค่าหลายค่า ๆ ในหลาย ๆ แบบ ข้ามหน้าได้อย่างไร
รับถ่ายภาพ http://emofoto.net


sincere

ทำไมไม่เก็บเป็น array ไปแล้วค่อยไป split ค่าอีกหน้านึงหละ

[direct=http://www.siamlc.com]ขายกระเป๋า Longchamp นำเข้า[/direct]
[direct=http://www.qualitymart.info]Jewelry Quality Shop[/direct]
[direct=http://www.buyexcellent.info/]155 ปั่น Sub Auto Keyword[/direct]
[direct=http://www.fungplang.com][/direct]

liveadsense

session_start(); ใส่ นี้ยังอ่ะ ตอนเรียกดูค่า อ่ะ

เตือนตัวเอง ว่าเก่งได้ แต่อย่ากร่าง
รู้รับฟัง ไม่ใช่พล่ามเป็นน้ำไหล
อย่าหลงตน ให้คนอื่นเหนื่อยหน่ายใจ
เจอบันได ถ้าขึ้นได้ ต้องลงเป็น

EThaiZone

งงอย่าง ทำไม $_SESSION['id'][] และ $_SESSION['filename'][]

น่าทำเป็น

$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['id']
$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['filename']

เวลาวนลูปก็จะได้สบายๆ ด้วย foreach

:P

ถามหน่อย หน้าที่เป็นเป้าหมายที่อยากส่งไป มันเป็น popup หรือเปล่า ?
หรือเป็นหน้าที่โดนเรียกด้วยจาวาสคิรปหรือเปล่า

ถ้าใช่ ก็อ่านนี้นะ http://www.thaiseoboard.com/index.php/topic,22515.0.html

Kizmo

#5
อ้างถึงจาก: digitalex ใน 26 กันยายน 2008, 23:25:50
อ่านแล้ว ??? ???
ถ้าส่งข้ามหน้าไมไม่ส่งแบบ $_GET[] ไปอ่าครับ

ถ้าส่งค่า get ด้วยค่าจาก loop ได้ ช่วยเขียนให้ดูหน่อย

อ้างถึงจาก: sincere ใน 26 กันยายน 2008, 23:29:22
ทำไมไม่เก็บเป็น array ไปแล้วค่อยไป split ค่าอีกหน้านึงหละ

ช่วยเขียนให้ดูเป็นตัวอย่างได้ป่าวคับ

อ้างถึงจาก: liveadsense ใน 26 กันยายน 2008, 23:33:24
session_start(); ใส่ นี้ยังอ่ะ ตอนเรียกดูค่า อ่ะ

ผมใส่แล้วคับ ถ้าไม่ใส่จะรับค่า session ได้ไงล่ะคับ

อ้างถึงจาก: EThaiZone ใน 26 กันยายน 2008, 23:34:28
งงอย่าง ทำไม $_SESSION['id'][] และ $_SESSION['filename'][]

น่าทำเป็น

$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['id']
$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['filename']

เวลาวนลูปก็จะได้สบายๆ ด้วย foreach

:P

ถามหน่อย หน้าที่เป็นเป้าหมายที่อยากส่งไป มันเป็น popup หรือเปล่า ?
หรือเป็นหน้าที่โดนเรียกด้วยจาวาสคิรปหรือเปล่า

ถ้าใช่ ก็อ่านนี้นะ http://www.thaiseoboard.com/index.php/topic,22515.0.html

$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['id']
$_SESSION['tmp_var'][count($_SESSION['tmp_var'])]['filename']

แล้วผมจะใช้ foreach แตกตัวแปรแยกออกจากกันได้ไงครับเนี่ย
รับถ่ายภาพ http://emofoto.net


EThaiZone

งั้นอีกวิธี กินระบบด้วย

เอา array ที่อยากเก็บไป serialize แล้วบันทึกลงไฟล์

ไปเป้าหมาย แล้วอ่านไฟล์แล้ว unserialize ใส่ array

ค่อยนำไปใช้  :P


ball6847

อ้างถึงจาก: Kizmo ใน 26 กันยายน 2008, 23:01:45
ผมควรส่งค่าแบบไหนหาก

หน้า loop นั้นได้ loop ค่าออกมา 2 แบบ คือ
1. id
2. filename
แล้วผมจะส่งทั้งค่าทั้งหมดไปอีกหน้าได้อย่างไร
(ใน 1 loop ต้องส่งค่าทั้ง 2 แบบ ตามจำนวน loop)

เท่าที่ผมลองดู คิดได้เพียงส่งเป็น $_SESSION แล้ว [] ด้านท้าย (search ใน google ได้มา)
เป็น $_SESSION['id'][] และ $_SESSION['filename'][]

แต่พอรับค่าอีกหน้ามักจะเกิดปัญหาหลายกรณีเช่น
1. error []
2. echo ค่าแรกได้ ค่าถัดมา ออกเฉพาะตัวแรก และต่อ ๆ ไปก้อไม่ออกค่าเลย
และในบางครั้งก้อใช้งานได้ ออกค่าได้ทั้งหมด
(ตอนแรกผมคิดว่า appserv มันเพี้ยน แต่ลองกับหลายเครื่องเป็นคล้าย ๆ กัน)

สรุป...
ผมขอโค้ดว่าผมจะส่งค่าหลายค่า ๆ ในหลาย ๆ แบบ ข้ามหน้าได้อย่างไร


คือจะบอกว่า จะส่ง array ข้ามหน้าได้งัยว่างั้นเหอะ
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

Kizmo

อ้างถึงจาก: ball6847 ใน 27 กันยายน 2008, 05:29:43
คือจะบอกว่า จะส่ง array ข้ามหน้าได้งัยว่างั้นเหอะ

ส่งข้ามหน้า หลายค่า และแยกออกเป็น 2 ประเภทด้วย
เช่น ส่งค่า id 10 ค่า และ filename 10 ค่า
แต่ใน 1 รอบจะต้องส่งค่าพร้อมกัน 2 แบบ แบบละ 1 ค่า
เช่น ใน 1 loop จะต้องเก็บค่า id 1 ค่า filename 1 ค่า (เก็บคู่กัน เพราะต้องใช้ร่วมกัน)
แล้ว loop สัก 10 รอบ ก้อจะได้ข้อมูลทั้งหมด 20 ข้อมูล
แล้วส่งข้ามหน้าโดยให้อีกหน้ารับ loop แล้วแยกประเภทได้ด้วย

อย่าง foreach มันตั้งได้แค่ค่าเดียว
เช่น foreach($_SESSION['id'] as $id)
ทีนี้ผมจะ loop แล้วแตกข้อมูล $_SESSEION['filename'] ด้วย ไปพร้อม ๆ กัน

** ยัง งง กัน อยู่ รึ เปล่า เอ่ย
*** ผม ยิ่ง เป็น คน สื่อ อะ ไร เข้า ใจ ยาก ๆ อยู่ ดู จาก ประ วัติ กระ ทู้ ผม ได้ 555+
รับถ่ายภาพ http://emofoto.net

ball6847

ผมลองแระ เหมือนกับว่า $_SESSION ไม่เหมาะจะเก็บ array

ลองทดสอบดูตามผมละกัน

โค้ด (index.php) เลือก

<?php

session_start
();

$_SESSION['rgb'] = array('red' 'green' 'blue'); 


?>

<a href="index-2.php">Next</a>


โค้ด (index-2.php) เลือก

<?php

session_start
();

echo 
"<p><b>Array Member</b><br/>";
print_r($_SESSION['rgb']);
echo 
"</p>";



echo 
"<p><b>Access Array Using For Loop</b><br/>";
for(
$i=0;$i<count($_SESSION['rgb']);$i++) {
echo $_SESSION['rgb'][$i] . "<br/>";
}
echo 
"</p>";



echo 
"<p><b>Access Array Using Foreach Loop</b><br/>";
foreach(
$_SESSION['rgb'] as $rgb) {
echo $rgb "<br/>";
}
echo 
"</p>";


?>

<a href="index.php">Back</a>


มีทั้งหมด 2 ไฟล์ ไฟล์ index.php จะสร้าง session โดยเก็บ array ไว้ใน session แล้วทดสอบโดยคลิ้กไป index-2.php

ผล ของ index-2.php

Array Member
Array ( [0] => red [1] => green [2] => blue )

Access Array Using For Loop
red
green
blue


Access Array Using Foreach Loop
red

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\session\index-2.php on line 20


Back


แต่ถ้า refresh index-2.php ปุ้บ ค่า array ที่เก็บใน session จะถุกเปลี่ยนเป็น string โดยที่เอาสมาชิกตัวแรกมาเป็นค่าของตัวแปรนั้นแทน


Array Member
red

Access Array Using For Loop
r


Access Array Using Foreach Loop

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\session\index-2.php on line 20


Back



นอกจากนั้นสังเกตุดูดีดี foreach ไม่สามารถเข้าถึง array ที่เก็บใน session ได้เลย  :o

ผมว่าต้องใช้วิธีโจ้แล้วหล่ะ
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

payu


เอางี้

file p1.php

<?
session_start();

$pass_array = array();

for ($i=0; $i < 20 ;$i++)
  $pass_array[] = array('id' => $i, 'filename' => 'file '.$i);
 
$_SESSION['pass_array'] = $pass_array;

?>
<a href="p2.php">p2</a>


file p2.php

<?
session_start();

foreach ($_SESSION['pass_array'] as $i => $item)
  echo "[$i] => id = {$item['id']}, file = {$item['filename']}<br>\n";
?>


[direct=http://www.facebook.com/iipayu]payu on facebook[/direct]

Kizmo

#12
ตอนนี้คิดได้เพียง เอา 2 ค่ามารวมกัน
เช่น ค่า id (30) กะ filename(ขนาดตามชื่อที่ได้มา ไม่แน่นอน)
เอามารวมอยู่ในตัวแปรเดียวกัน แล้วส่งเพียงค่าเดียว
แล้วอีกหน้าใช้ตัดแบ่งเอา 30 ตัวแรกเป็น id ส่วนที่เหลือเป็น filename

คุณพี่ ๆ ว่าเวิร์คมั๊ย


ส่งค่า $_SESSION['array'][] = $id.$filename;

รับค่า foreach ($_SESSION['array'] as $array)
{
   $id = substr($array, 0, 30);
   $filename = substr($array, 30);
}
รับถ่ายภาพ http://emofoto.net