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,038

HOME > PHP > PHP Forum > รบกวนดูทีค่ะ รับค่าจาก checkbox แล้ว นำไป select โดยมีการใช้ LIKE เช่นค่า $a รับมาจาก check box คือ 50 นำไปเขียน sql



 

รบกวนดูทีค่ะ รับค่าจาก checkbox แล้ว นำไป select โดยมีการใช้ LIKE เช่นค่า $a รับมาจาก check box คือ 50 นำไปเขียน sql

 



Topic : 052558



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



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




รบกวนดูทีค่ะ รับค่าจาก checkbox แล้ว นำไป select โดยมีการใช้ LIKE เช่นค่า $a รับมาจาก check box คือ 50 นำไปเขียน sql ให้หาค่าในดาต้าเบส ที่มี 50 นำหน้าโดยใช้ % แต่รันออกมาแล้วเพี้ยน ช่วยแ้ก้ไขทีค่ะ มีรูป+โค้ดค่ะ เริ่มจากว่ามีข้อมูลในตาราง student ฟิวด์ student_id ดังนี้ค่ะ

ข้อมูลในdb

แล้วต้องการนำค่าที่เมื่อติ๊ก checkbox แล้ว ไปเขียน select เพื่อนับจำนวนที่คิวรี่ได้

โค้ดเป็นดังนี้ค่ะ



<form id="form1" name="form1" method="post" action="">


สิทธิ์การประเมิน<br />
<br /></td>
<td><br />
<?php
//คำสั่ง sql เพื่อ จับอักษร 2 ตัวแรกของฟิวด์ student_id ดังภาพแรกที่แสดงหน่ะค่ะ มาเป็นตัวเลือก checkbox
$strSQL2 = "SELECT DISTINCT (SUBSTR(student_id,1,2)) AS stdID FROM student ";
$objQuery2 = mysql_query($strSQL2) or die ("Error Query [".$strSQL2."]");
while($objtesti = mysql_fetch_array($objQuery2 ))
{?>
<input type="checkbox" name="checkRight[]" id="checkRight[]" value = "<?php echo ($objtesti["stdID"]); ?> "> <?php echo ($objtesti["stdID"]); ?>
<br />
<? }?>
</td>

<td colspan="2"><div align="center">
<input type="submit" name="Submit" id="Submit" value="สร้างแบบประเมิน" />
</div></td>
</tr>
</table>
<label></label>
<p><br />
</p>

<?php
if(isset($HTTP_POST_VARS['Submit'])&&($HTTP_POST_VARS['Submit']=="สร้างแบบประเมิน"))
{
foreach($_POST['checkRight'] as $checkRight)
{
$levelrg = $checkRight; // เอาค่าที่ได้การติ๊กเลือก checkbox มาใส่ในตัวแปรหนึ่งเพื่อเตรียมเอาไป select
ในคำสั่ง sql
echo $levelrg; // ลองแสดงค่าดู สมมติเป็น 50
echo "<br>";
// คำสั่ง sql เพื่อ select ค่า student_id ที่นำหน้าด้วย 50
$slinsert_rg = "SELECT student_id FROM student WHERE student_id LIKE '$levelrg.%' ";
$objsl = mysql_query($slinsert_rg) or die(mysql_error());
echo $objsl; // ลอง แสดงค่า ผลการรันคำสั่ง sql
echo "<br>";
$objres3 = mysql_fetch_array($objsl);
$total_nu = mysql_num_rows($objsl);
echo $total_nu; //แสดงค่าจำนวนแถวที่นับได้จากการรัน sql

}

}
?>


</form>
</body>
</html>

ภาพการรันหน้าตาการรับค่าจากcheck box ค่ะ ซึ่งในฐานข้อมูล มี 50,52,53 ดังนั้นจึงแสดงออกมา 3 checkbox

ค่าการรับค่าจากcheckbox



ซึ่งถ้าดูจากข้อมูลที่อยู่ในดาต้าเบส ฟิวด์ student_id แล้ว หากติ๊กค่า checkbox เป็น 50

คำตอบทีู่ถูกต้องจากการecho $total_nu; ควรเป็น 2 (50161843,50161827จากรูปแรกที่ให้ดู) แต่ผล
กลับเป็น 0 ค่ะ บรรทัดสุดท้ายของภาพคือค่า ที่ echo $total_nu;

ผลการรัน3


แต่พอเปลี่ยน ตรงบรรทัด นี้โดยการล็อคเป็น 50 เลยไม่เรียกผ่านตัวแปร $slinsert_rg = "SELECT student_id FROM student WHERE student_id LIKE '$levelrg.%' "; ให้เป็น $slinsert_rg = "SELECT student_id FROM student WHERE student_id LIKE '50%' ";
ผลลัพธ์ที่ได้จากการ echo $total_nu; คือ 2 ซึ่งถูกต้องเฉยเลยค่ะ

ผลรันอีกรอบ

อยากทราบอ่าค่ะว่าเกิดจากอะไร ต้องแก้โค้ดตรง sql อย่างไร ลองเขียนมาหลายแบบแต่ยังคงออกค่าเป็น 0 ค่ะ ถ้ามีตัวแปร
แต่ถ้าล็อคค่าดูจะได้คำตอบที่ถูกต้อง ขอบพระคุณสำหรับคำตอบนะค่ะ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-02 13:10:50 By : nuie View : 2701 Reply : 12
 

 

No. 1

Guest


ลองใช้คำสั่ง phpinfo(); เพื่อแสดงค่าตัวแปรทั้งหมดที่ได้รับมาดูครับ ว่าต้องใช้ตัวแปรชื่อว่าอะไรกันแน่ และแต่ละตัวที่ส่งมามีค่าอะไรบ้าง






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 13:22:51 By : limparty
 


 

No. 2



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



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


SELECT DISTINCT (SUBSTR(student_id,1,2)) AS stdID FROM student WHERE student_id = '$levelrg'
ลองแบบนี้ดูครับ แล้วก็ไม่ต้องใช้ like นะครับ ถ้าคุณใช้ like แล้วมันจะไปหา ข้อมูลที่มี 50 อยู่ เพราะถ้าเกิดข้อมูลเป็น 52501000 มันก็จะเอา 52501000 ขึ้นมาด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 13:34:01 By : kanchen
 

 

No. 3



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



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


ลองทำแบบคุณ KanJi แล้วค่ะ ค่าที่ได้ยังเป็น 0 อยู่เลยค่ะ แก้ตรงไหนดีอ่ะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 13:47:00 By : nuie
 


 

No. 4



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



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


คือที่เขียนอันนี้จุดประสงค์คือต้องการ หาว่ามีstudent_id ไหนบ้าง มีอักษร 2 ตัวแรก เท่ากับค่า checkbox ที่เลือกมาหน่ะค่ะ
เพราะต้องการนำ student_id เหล่านั้นเก็บเป็น array แล้วนำไปวนลูป insert หน่ะค่ะ จะต้องทำอย่างไรดีค่ะ งงมาก
ว่าทำไม แทนค่าด้วยเลข แล้วออกผลลัพธ์แต่แค่ใส่ตัวแปร กลับแสดงผลไม่ถูกต้อง T-T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 13:50:15 By : nuie
 


 

No. 5



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



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


ใน form ตรง action คุณยังไม่ได้กำหนดชื่อ page ให้มันเลยครับ แล้วก็ที่มันมีค่าเป็น 0 เพราะ ตัวแปร $levelrg มีค่าเท่ากับ $checkRight
ครับ ลอง echo $levelrg ออกมาดูครับ ว่ามีค่าหรือป่าว ถ้าเป็น 0 แสดงว่า ค่าที่ได้จาก $checkRight มันไม่มีค่าอยู่แล้วเพราะ
คุณไม่ได้ใส่ action ให้มันครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 13:59:03 By : kanchen
 


 

No. 6



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



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


ในโค้ดที่ลงที่ความเห็นแรก ใส่ไว้แล้วค่ะ ลอง echo ค่าของ $levelrg แล้วค่ะ พอลอง ติ๊ก checkbox 50 ก็ปรินซ์ค่าได้ 50 ค่ะ
ไม่ได้เป็น 0 อ่ะค่ะ T-T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:09:39 By : nuie
 


 

No. 7



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


เขียนแบบไม่ต้อง loop ก็ได้
Code (PHP)
if(isset($HTTP_POST_VARS['Submit'])&&($HTTP_POST_VARS['Submit']=="สร้างแบบประเมิน"))
{
if(count($_POST['checkRight']) > 0){
$slinsert_rg = "SELECT count(student_id) as stucount FROM student WHERE substr(student_id,1,2) in ('". implode("','", $_POST['checkRight']) . "')";
$objsl = mysql_query($slinsert_rg) or die(mysql_error());
$objres3 = mysql_fetch_array($objsl);
$total_nu = $objres3["stucount"];
echo $total_nu; //แสดงค่าจำนวนแถวที่นับได้จากการรัน sql
}
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:09:55 By : PlaKriM
 


 

No. 8



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



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


ก็คุณประกาศ $_POST[''] ไว้นิครับ ถ้าไม่ใส่ action ให้มันแล้วมันก็ไม่รู้เหรกครับว่าจะส่งไปที่ไหน ลองกำหนด page ที่ต้องการให้ส่งค่าดูครับเดียวคุณก็จะเข้าใจเอง


ประวัติการแก้ไข
2010-12-02 14:13:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:12:56 By : kanchen
 


 

No. 9



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



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


รบกวนคุณ PlaKrim อธิบายโค้ดตรงนี้

$slinsert_rg = "SELECT count(student_id) as stucount FROM student WHERE substr(student_id,1,2) in ('". implode("','", $_POST['checkRight']) . "')";

ได้ไหมค่ะ แอบงงค่ะ แต่รันออกมาได้ผลลัพธ์จำนวนแถวข้อมูลที่ถูกต้องแล้วอ่ะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:23:07 By : nuie
 


 

No. 10



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



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


ขอบคุณคุณ KanJi มากนะ่ค่ะ นู่อาจเข้าใจผิดว่าไม่ต้องใส่ อิอิ แต่ตอนนี้ ออกแล้วค่ะ ลองนำโค้ดที่ คุณปลากริม ให้มาใส่ดูแล้วรันผล ได้จำนวนแถวข้อมูลเป็น 2 แล้วค่ะ แต่ว่ายังไม่สามารถให้มันวนลูปเก็บค่า student_id เป็นอาเรย์ได้เลยค่ะ เพราะหลักๆต้องการนำค่า student_id ที่ได้ทั้งหมดที่ตรงกับค่าของcheckbox ไปใช้หน่ะค่ะ มันหลายชั้นดีจัง ^-^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:26:31 By : nuie
 


 

No. 11



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ก็เห็นอยากนับน้อ

Code (PHP)
if(isset($HTTP_POST_VARS['Submit'])&&($HTTP_POST_VARS['Submit']=="สร้างแบบประเมิน"))
{
if(count($_POST['checkRight']) > 0){
$slinsert_rg = "SELECT student_id FROM student WHERE substr(student_id,1,2) in ('". implode("','", $_POST['checkRight']) . "')";
$objsl = mysql_query($slinsert_rg) or die(mysql_error());
while($objres3 = mysql_fetch_array($objsl)){
echo "<br />".$objres3["student_id"];
}
}
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:33:59 By : PlaKriM
 


 

No. 12



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



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


แหะๆ อิอิ พี่ปลากริมก้ออ คือที่อยากนับอ่าค่ะเพราะว่า จริงๆแล้วนู๋เขียน โค้ดส่วน insert เพื่อรับค่าจากการจับ student_id ไว้แล้วหน่ะค่ะ
แต่ทำยังไงๆ มันก็ไม่เข้าลูปการ insert เลยสงสัย ลอง นับผลรันมันดูว่ามันนับจำนวนแถวได้จริงหรือเปล่า ปรากฎว่าได้ 0 เลยงานเข้าเลยค่ะ อิอิ
ขอบคุณอีกครั้งนะค่ะ เอาโค้ดไปแปะดูก่อน ^-^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-02 14:41:03 By : nuie
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนดูทีค่ะ รับค่าจาก checkbox แล้ว นำไป select โดยมีการใช้ LIKE เช่นค่า $a รับมาจาก check box คือ 50 นำไปเขียน sql
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่