ติดปัญหา where id ตามที่เลือก checkbox มามากกว่า 1 ไม่ได้ T^T

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

thatsawan
PHP VIP Members
PHP VIP Members
Posts: 21899
Joined: 31/03/2014 10:02 am
Contact:

ติดปัญหา where id ตามที่เลือก checkbox มามากกว่า 1 ไม่ได้ T^T

Post by thatsawan » 04/10/2014 9:59 pm

[code=php]             //=============  รับค่าจาก ฟอร์ม  checkbox =========//
                $update_mark    = $request->variable('update_mark', false, false, \phpbb\request\request_interface::POST);
        $update_all    = $request->variable('update_all', false, false, \phpbb\request\request_interface::POST);
                $marked        = request_var('mark_group', array(0)); 
                
              
                //=============  เช็คเงื่อนไขตอนคลิกปุ่ม =========//
                if ($update_mark || $update_all)
        {   
                    //================= Group_id ที่เลือกมา ======================//
                    foreach ($marked as $value){ // loop หาที่เลือก checkbox
                        $group_id_marked .= $value;
                    }
                  //  print_r($group_id_marked); exit;
                    //================= user_id ทั้งหมด มาเช็ค ==================//
                     $sql = 'SELECT u.user_id,u.user_posts,u.user_warnings,u.user_online_time FROM ' . USERS_TABLE .' u ';
                     $result = $db->sql_query($sql);              
                     while ($row = $db->sql_fetchrow($result))
                             {
                             $user_row[$row['user_id']] = $row;
                             $check['posts'][$row['user_id']] = (int) $row['user_posts'];
                             $check['days'][$row['user_id']] = (int) max(1, round((time() - $row['user_regdate']) / 86400));
                             $check['warnings'][$row['user_id']] = (int) $row['user_warnings'];
                             $check['time_online'][$row['user_id']] = (int) $row['user_online_time'];
                            }
                    //====================== 
                        $sql_select = $sql_or = '';
                        foreach ($check as $column => $value)
                        {                                            
                                $sql_select .= "group_min_$column, group_max_$column, "; 
                                /*
                                 * group_min_posts, group_max_posts, group_min_days, group_max_days, 
                                 * group_min_warnings, group_max_warnings, group_min_time_online, group_max_time_online
                                 */
                                $sql_or .= " group_min_$column <> 0 OR group_max_$column <> 0 OR "; // loop หา ไม่เอา 0
                                /*
                                 * group_min_posts <> 0 OR group_max_posts <> 0 
                                 * OR group_min_days <> 0 OR group_max_days <> 0 
                                 * OR group_min_warnings <> 0 OR group_max_warnings <> 0 
                                 * OR group_min_time_online <> 0 OR group_max_time_online <> 0 OR 
                                 */
                        }
                        
                        $sql_select = substr($sql_select, 0, strrpos($sql_select, ','));
                        $sql_or = substr($sql_or, 0, -3);
                        // ============== ติด **  ======================//
                        $sql = "SELECT group_id,  $sql_select FROM " . GROUPS_TABLE . "
                                WHERE group_id = $group_id_marked AND ($sql_or)";
                      // echo $sql; exit;
                        $result = $db->sql_query($sql, 7200);
                         //================= Group_id ที่เลือกมา ======================//
                        $group_data = array();
                        while ($row = $db->sql_fetchrow($result))
                        {                          
                                $group_data[$row['group_id']] = $row;
                        }
                        print_r($group_data); 

                }[/code]


** ถ้าเลือก checkbox อันเดียว **
ผล มันคือได้ Array ( [38] => Array ( [group_id] => 38 [group_min_posts] => 1 [group_max_posts] => 0 [group_min_days] => 0 [group_max_days] => 0 [group_min_warnings] => 1 [group_max_warnings] => 0 [group_min_time_online] => 1 [group_max_time_online] => 0 ) )


เเต่ถ้าเลือก checkbox มาหลายๆ id ขึ้น Array()!!

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23497
Joined: 22/09/2008 6:18 pm
Contact:

Re: ติดปัญหา where id ตามที่เลือก checkbox มามากกว่า 1 ไม่ได้ T^T

Post by mindphp » 05/10/2014 1:24 am

ตอนรับค่าเข้ามา
$marked = request_var('mark_group', array(0));
ลองดู ตามนี้
https://wiki.phpbb.com/Function.request ... nal_Arrays

กระทู้ใกล้เคียง
https://www.mindphp.com/forums/viewtopic.php?f=6&t=23958
ขึ้นอยู่กับ ตอนสร้างฟอร์มกำหนดรูปบบไว้แบบไหนด้วยนะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

thatsawan
PHP VIP Members
PHP VIP Members
Posts: 21899
Joined: 31/03/2014 10:02 am
Contact:

Re: ติดปัญหา where id ตามที่เลือก checkbox มามากกว่า 1 ไม่ได้ T^T

Post by thatsawan » 05/10/2014 2:13 am

Code: Select all

foreach ($marked as $value){ // loop หาที่เลือก checkbox
                        $group_id_marked = $value;
                    }
                    print_r($group_id_marked); 
ค่าที่ได้ = id เดียว


แต่ถ้าใส่

Code: Select all

foreach ($marked as $value){ // loop หาที่เลือก checkbox
                        $group_id_marked[] = $value;
                    }
                    print_r($group_id_marked); 
Array ( [0] => 38 [1] => 39 [2] => 37 )

ใส่เเบบเนี๊ยะ SQL ERROR อีก T^T

thatsawan
PHP VIP Members
PHP VIP Members
Posts: 21899
Joined: 31/03/2014 10:02 am
Contact:

Re: ติดปัญหา where id ตามที่เลือก checkbox มามากกว่า 1 ไม่ได้ T^T

Post by thatsawan » 06/10/2014 10:38 am

ได้เเล้ว

Code: Select all

foreach ($marked as $value){ // loop หาที่เลือก checkbox
                                $group_id_marked = $value;
                                //================= Group_id ที่เลือกมา ======================//            
                                $sql = "SELECT group_id,  $sql_select FROM " . GROUPS_TABLE . "
                                        WHERE group_id = $value AND group_type <> " . GROUP_SPECIAL . " 
                                        AND ($sql_or)";
                                //echo $sql; exit;
                                $result = $db->sql_query($sql, 7200);
                         //================= Group_id ที่เลือกมา ======================//
                        $group_data = array();
                        while ($row = $db->sql_fetchrow($result))
                                {                          
                                        $group_data[$row['group_id']] = $row;
//                                        print_r( $group_data[$row['group_id']]);
//                                        echo "<br>";
                                }
                        } 

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 19 guests