 |
เหล่าเซียนทั้งหลาย ช่วยหน่อย ผลที่ได้มา เป็น | แต่ผลที่ผมต้องคือ id ที่เลือก เช่น |1|3| เพื่อนำไปเก็บ |
|
 |
|
|
 |
 |
|
ทำไมเหล่าเซียนทั้งหลาย ไม่ช่วยผมบ้าง 
|
 |
 |
 |
 |
Date :
2009-08-13 21:52:35 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองรันแบบที่ไม่เป็นฟังก์ชั่น รึยังครับ
|
 |
 |
 |
 |
Date :
2009-08-13 22:02:35 |
By :
lozomac |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
function sum_data($t,$static_name){
//$re=mysql_query("select * from tbl_type2 order by id ASC") or die(mysql_error());
$re=mysql_query("select * from $t order by id ASC") or die(mysql_error());
$sum_type2="|";
while($rs=mysql_fetch_array($re)){
//$t_type2="type2".$rs[0];
$t_type2=$static_name.$rs[0];
if(isset(${$t_type2}))
$sum_type2.="|" . ${$t_type2};
}
return substr(1,$sum_type2);
}
$data = sum_data("tbl_type2","type2");
$myary = explode("|",$data);
print_r($myary); จากนั้นต่อได้มะ
|
 |
 |
 |
 |
Date :
2009-08-13 22:20:59 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนชื่อเป็น memee แล้วเอารูปคุณ memee มาแปะครับ 
if(isset(${$t_type2})) ตรงนี้คิดว่าไม่มีตัวแปรประกาศแน่นอนครับเพราะ
เมื่ออยู่ใน function จะไม่สามารถเข้าถึงตัวแปร global ครับ
ถ้าจะทำอาจจะต้องเช็ก if(isset($GLOBALS[$t_type2])) แทนอาจจะได้ครับ
|
 |
 |
 |
 |
Date :
2009-08-13 22:29:20 |
By :
num |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่มาของ code นี้คือ
ในส่วน ฟอร์มรับข้อมูล เป็น checkbox หลายชุด โดยแต่ละชุด ดึง record มาจากฐานข้อมูล
<INPUT TYPE="checkbox" NAME="type21" value="1">หนังสือพิมพ์ 1
<INPUT TYPE="checkbox" NAME="type22" value="2">bbbbb
....
<INPUT TYPE="checkbox" NAME="type2n" value="m">....
ในส่วน ไฟล์ php นั้นผมต้องการ ให้ เรียกเก็บค่า จาก checkbox ที่มีการถูกในหน้า ฟอร์มโดย จะไปค่าที่ถูก
เลือกมาร่วมกันก่อน เช่น |2|4| เพื่อนำไปเก็บใน field ของ ฐานข้อมูล
เท่าที่ผมได้ทำ ถ้าไม่ใส่ใน function
แบบนี้
$re=mysql_query("select * from tbl_type2 order by id ASC") or die(mysql_error());
$sum_type2="|";
while($rs=mysql_fetch_array($re)){
$t_type2="type2".$rs[0];
if(isset(${$t_type2}))
$sum_type2.=${$t_type2}."|";
}
echo $sum_type2;
|
 |
 |
 |
 |
Date :
2009-08-14 00:58:37 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผลที่ได้ ก็ |2|4| ได้ครับ ผมสงสัยเรื่องการส่ง parameter เข้า function แล้วต่ำแหน่งของ address ในหน่วยความจำมัน เปลี่ยนไป การอ้างอิง prointer เลย ชี้ไม่ตรงจุด อะไรประมาณ แต่ ผมเชื่อว่ามันน่าจะมีวิธี ที่ สามารถทำเป็น function เพราะ ฟอร์มที่ทำ มี การ สร้าง checkbox ที่ดึงข้อมูลจากฐานข้อมูลมาหลายจุด จึงคิดทำเป็น function ขึ้น นะครับ ผมลอง ของ คุณPlaKriM และ คุณ num แล้วไม่ได้ผลนะครับ เหมือนเดิม จึงอยากให้ช่วยคิดหน่อยนะครับ...
|
 |
 |
 |
 |
Date :
2009-08-14 01:04:08 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมไม่ได้เขียนแบบ database นะครับเพราะทดสอบยาก
แต่แสดงการใช้ตัวแปร $_GET แทน ตัวแปรแบบธรรมดาน่ะครับ
<?php
function sum_data($t,$static_name){
$a = array('1','3','4','5','6','7');
$sum_type2 = "|";
while ($rs = current($a)){
$t_type2 = $static_name.$rs;
//echo '[',$t_type2,']';
if(isset($_GET[$t_type2]))
$sum_type2 .= $_GET[$t_type2]."|";
next($a);
}
return $sum_type2;
}
if (!empty($_GET['submit'])){
echo sum_data('tbl_type2','type2');
}
?>
<form name="f1" action="?" method="get">
<input type="checkbox" name="type21" value="1" />1<br />
<input type="checkbox" name="type22" value="2" />2<br />
<input type="checkbox" name="type23" value="3" />3<br />
<input type="checkbox" name="type24" value="4" />4<br />
<input type="checkbox" name="type25" value="5" />5<br />
<input type="checkbox" name="type26" value="6" />6<br />
<input type="submit" name="submit" value="ok" />
</form>
|
 |
 |
 |
 |
Date :
2009-08-14 08:20:13 |
By :
num |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แจ่ม มากเลย คุณ num
ช่วยอธิบายเพิ่ม ด้วยนะครับว่าตัวแปร $_GET หรือ $_POST และ มันทำงาน ต่างอะไรกับ ตัวแปร ธรรมดา
|
 |
 |
 |
 |
Date :
2009-08-14 09:24:15 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลืม ขอบคุณนะครับ ที่ช่วยคิดให้ ไม่ผิดหวังที่มา ถามที่นี้
|
 |
 |
 |
 |
Date :
2009-08-14 09:26:02 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อาจจะถามผิด ถามใหม่ ทำไมคุณ ถึงเลือกใช้ $_GET แทน ${$var} ถามรู้วิธีคิดหรือ ท่านอื่นจะช่วยตอบก็ยินดีนะครับ...
|
 |
 |
 |
 |
Date :
2009-08-14 10:35:14 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าพูดถึงตัวแปรแล้วไม่ควรจะใช้ตัวแปร global ใน function ไหนๆ ครับ
โดยเฉพาะอย่างยิ่งถ้ามีแก้ไขตัวแปร global ใน function นั้นด้วยยิ่งไม่ควรทำครับ
นอกจากเป็นคำสั่งที่จำเป็นมากๆ ก็อาจจะละเว้นได้บ้าง
แต่ควรจะจำกัดการสร้าง function นี้ให้น้อยที่สุดครับ เพราะจะทำให้ตรวจสอบโปรแกรมได้ยากครับ
สำหรับตัวแปร global สามารถใช้ใน function ได้โดยใช้คำสั่ง
function foo(){
global $type22;
echo $type22;
}
แต่ถ้าใช้ตัวแปร $_GET ซึ่ง global โดยอัตโนมัติแล้วก็ไม่ต้องใช้ครับ
function foo(){
echo $_GET['type22'];
}
|
 |
 |
 |
 |
Date :
2009-08-14 11:58:46 |
By :
num |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รู้สึกว่า memee จะงามขึ้นทันตาเห็น...
|
 |
 |
 |
 |
Date :
2009-08-15 14:20:00 |
By :
nilas |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|