|
|
|
การส่งค่า array ผ่าน url คือจะส่งค่า array ผ่าน url สามารถทำได้หรือเปล่าค่ะ . |
|
|
|
|
|
|
|
เช่น
http://www.xxx.com/x.php?a[]=0&a[]=1&a[]=2
แล้วลอง print_r($_GET['a']); ออกมาดูครับ
ทีนี้ลองอย่างอื่น
http://www.xxx.com/x.php?a[b]=0&a[bb]=1&a[bbb]=2
แล้วลอง print_r($_GET['a']); ออกมาดูครับ
|
|
|
|
|
Date :
2010-01-04 14:16:57 |
By :
nut_t02 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเราไม่ทราบว่า array มีกี่ตัวละค่ะ
ต้องทำยังไง
|
|
|
|
|
Date :
2010-01-04 14:26:09 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใช้ function http_build_query
ดูวิธีใช้ ที่นี่ นะครับ
แล้วลองประยุกต์ใช้ดูตามตัวอย่างเลยครับ
|
|
|
|
|
Date :
2010-01-04 14:46:24 |
By :
nut_t02 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$textfield=http_build_query($textfield);
ตอนส่งค่าก็ test?textfield=<? echo $textfield ?>
ค่าจะส่งไปเป็น textfield=0=11&1=22
แล้วตอนรับค่าและแสดงค่า ทำยังไงค่ะ
|
|
|
|
|
Date :
2010-01-04 14:59:43 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แบบนี้ได้ไหมอ่า ผมก็ไม่ค่อยเข้าใจอ่า ส่วนมากผมจะส่ง array เป็น post อ่า
Code (PHP)
for($i=0;$i<10;$i++){
$a[$i] = $_GET[$i];
}
|
|
|
|
|
Date :
2010-01-04 15:11:53 |
By :
aknueng |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่าเฉลยก็ได้ครับ ไม่ยอมดูทั่วๆ เลย - -'
Code (PHP)
$data[] = 1;
$data[] = 2;
$data[] = 3;
$url = 'http://www.xx.com/x.php?'.http_build_query($data, 'data[]');
เวลารับค่าก็จะเป็นตามนี้ครับ
Code (PHP)
$data = $_GET['data'];
print_r($data);
// หรือ
print $data[1]; //จะออกค่า 2 ออกมา
|
|
|
|
|
Date :
2010-01-04 15:13:23 |
By :
nut_t02 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังไม่ได้ค่ะ
|
|
|
|
|
Date :
2010-01-04 15:28:00 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาโค๊ดที่ว่าไม่ได้มาดูครับ
|
|
|
|
|
Date :
2010-01-04 15:44:19 |
By :
plakrim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันส่งค่าผ่าน url คือ .textfield[]0=1&textfield[]1=2&textfield[]2=3
ตอนรับค่า
$textfield = $_GET['textfield'];
print_r($textfield);
ค่าออกแค่ Array ( [0] => 2 [1] => 3 ) ออก 2 ค่าหลัง
ค่าแรกไม่ออกค่ะ
|
|
|
|
|
Date :
2010-01-04 15:46:28 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ค่าแรกมันไม่ออกเพราะว่า มันมีเลข 0 ตามมาไงครับ ซึ่งชื่อมันไ่ม่เหมือนกัน มันก็ไม่ออกมาจิ
เอาง่ายๆ แบบ easy วันนี้หลังปีใหม่อุ่น ๆ ประเดิมด้วยบทความกันเลยดีกว่า
เช่นเราส่งค่าผ่าน URL
สมมุตินะครับ
http://localhost/deawx.php?q=deawx,อั่น ปลากริม,แป๊ะ หน้ามนคนหนองคาย,ไทยครีเอท ดอท คอม
Code (PHP)
$keyword=$_GET['q']; #รับค่า
$value = explode(",", $keyword); #แยกค่าอาเรย์ที่ขั้นด้วย ,
foreach($value as $val){ #จัดการ Array มาใส่ตัวแปร
$data .= $val."<br />"; #ใส่ BR ด้วยนะ ไม่งั้นตอนแสดงผลจะต่อกันเป็น พรื่ด
}
echo $data; # แสดงค่าออกมา
อันนี้ผมไว้ประยุกต์ใช้กับ weboffice เวลาส่งค่า LINK ให้ดาวน์โหลดมาน่ะครับ แบบบัง ๆ เพราะที่ทำงาน มีมือดีคอยแงะแกะสคริืปเพื่อเอาไฟล์ที่ให้โหลด
localhsot/a.php?dd=1,2,4 แกะไปเหอะครับ ไม่รู้อะไร เอิ๊ก ๆ
ได้อีก 1 ความรู้ เอ้าโหวตตตตตตตตตตตตตตตต
เอ้ย สูบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ
|
|
|
|
|
Date :
2010-01-04 16:19:07 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งข้อมุลในโฮสเดียวกันรึป่าวครับ ถ้าโฮสเดียวกัน แนะนำอีกทางเลือก คือ เก็บเข้า คุ้กกี้ ครับ
Code หน้าส่ง (PHP)
$arr = array("1","2","3");
$_COOKIE['arr'] = $arr ;
Code หน้ารับ(PHP)
$newarr = $_COOKIE['arr'];
print_r($newarr);
อาจใช้ไม่ได้ทุกกรณี แต่คงพอเป็นแนวทางได้
|
|
|
|
|
Date :
2010-01-04 16:27:53 |
By :
lozomac |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมค่า แรกไม่ออกค่ะ
งง ค่ะ
ลองเปลี่ยน
1.$data[] = 1;
2.$data[] = 2;
3.$data[] = 3;
แต่ค่าก็ออก 2 กับ 3 ค่ะ
ช่วยอธิบายหน่อยค่ะ
|
|
|
|
|
Date :
2010-01-04 18:06:51 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?php
$data = array();
$data[] = 10;
$data[] = 20;
$data[] = 30;
if (isset($_GET['data'])){
var_dump($_GET['data']);
}
?>
<a href="?<?php echo http_build_query(compact('data')); ?>">test</a>
run โค้ดนี้ดูครับ
|
|
|
|
|
Date :
2010-01-04 18:22:55 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่าแรก ก็ ไม่ออกค่ะ ออกค่า 2 เลยค่ะ
array(1) { [1]=> string(2) "22" }
|
|
|
|
|
Date :
2010-01-04 18:44:01 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
copy โค้ดที่ทดสอบมาให้ดูครับ
|
|
|
|
|
Date :
2010-01-04 18:59:54 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณค่ะ ได้แล้วค่ะ
|
|
|
|
|
Date :
2010-01-04 19:37:41 |
By :
sreesuda |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถามเพิ่มเติมนิดนึงครับ
ถ้าหากใช้คำสั่งแบบนี้ >>>'http://www.xx.com/x.php?'.http_build_query($data, 'data[]');
กรณีที่ array มีจำนวนเยอะมากๆ จนทำให้ URL ยาวเกินไปไม่สามารถทำงานได้
จะมีวิธีแก้ปัญหาอย่างไรบ้างครับ
ขอถามเป็นความรู้ครับ ขอบคุณครับ
'http://www.xx.com/x.php?'.http_build_query($data, 'data[]');
|
|
|
|
|
Date :
2013-03-11 14:46:59 |
By :
tonglar |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จริงๆ ตรงนี้ผมจะมีอีก solution นึงครับ คือ การ serialize ข้อมูลก่อนแล้วส่งผ่าน ตัวแปรตัวเดียวในรูปแบบ string ครับ
จากนั้น script ฝั่งรับค่า ก็ Unserialize กลับ เป็น array แล้วก็นำมาใช้ได้ปกติครับ
Code (PHP) - index.php
<?php
$data = array();
$data[] = 1;
$data[] = 2;
$data[] = 3;
?>
<a href="request.php?data=<?php echo serialize($data) ?>">Click me</a>
Code (PHP) - request.php
<?php
$data = unserialize($_GET['data']);
var_dump($data);
?>
@คห 17
ถ้าหากข้อมูลมากขนาดนั้น ผมก็จะเปลี่ยนวิธีการ request เป็น POST แทนครับ
|
ประวัติการแก้ไข 2013-03-13 03:05:58
|
|
|
|
Date :
2013-03-13 03:04:54 |
By :
pmmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|