ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 21/05/2013 12:02 pm

ตัวอย่างการใช้งาน append_sid
วิธีการเรียกใช้ URL สำหรับ phpbb ที่ถูกต้องนั้น ต้องเรียก ผ่าน append_sid
ตัวอย่าง

โค้ด: เลือกทั้งหมด

$template->assign_vars(array(
    'ACTIONADD'     => append_sid("{$phpbb_root_path}mod_dictionary.$phpEx", "action=insert"),
    ) );
 
การเรียกใช้งาน

โค้ด: เลือกทั้งหมด

<form action="{ACTIONADD}">
จาก ตัวอย่างด้านบน ผลที่ได้ root/mod_dictionary.php?action=insert

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 20/05/2013 6:10 pm

ตัวอย่างการใช้งาน sql multi insert (insert ข้อมูล หลายฟิว)

โค้ด: เลือกทั้งหมด

$sql_ary = array(
    // One row
    array(
        'somedata'        => 'row 1',
        'otherdata'        => 'otherdata 1',
        'moredata'        => 'moredata 1'
    ),
    // Anther row
    array(
        'somedata'        => 'row 2',
        'otherdata'        => 'otherdata 2',
        'moredata'        => 'moredata 2'
    )
);

$db->sql_multi_insert(SOME_TABLE, $sql_ary); 

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 20/05/2013 6:07 pm

sql connect การคอนเน็ก database กรณีที่ต้องการแสดงข้อมูลจาก ที่อื่น หรือ database คนละลูก

โค้ด: เลือกทั้งหมด

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
$dbms = 'mysql';

include($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);

$db = new $sql_db();
$db->sql_connect('localhost', 'my_user', 'my_password', 'phpbb', ''); 
หลังจากใช้งานเสร็จ ให้ทำลาย password ป้องกัน password หลุด หรือ เจาะระบบ แล้วพบ

โค้ด: เลือกทั้งหมด

unset($dbpasswd);

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 20/05/2013 6:02 pm

ตัวการใช้งาน sql query limit (แบ่งหน้า ข้อมูลที่จะแสดง)
23.jpg
23.jpg (6.1 KiB) Viewed 1552 times

โค้ด: เลือกทั้งหมด

$start   = request_var('start', 0);
                $limit  = 2;
                $pagination_url = $this->u_action.'&action=select_add';   
                
                $sql = "SELECT * FROM " . TOPICS_TABLE . " where topic_title LIKE '%".$db->sql_escape("$search")."%' " ;
                $result = $db->sql_query($sql);
                $result_row = $db->sql_query_limit($sql, $limit, $start);
                 while ($data_row = $db->sql_fetchrow($result_row))
                 {
                   $template->assign_block_vars('data_row', array(
                        'TOPIC_ID' => $data_row['topic_id'],
                        'TOPIC_TITLE' => $data_row['topic_title'],
                     ));
                  
                 } 
                
                if(empty($search)){
                   $post['search'] = '';
                   $error['search']  = $user->lang['ERROR_SEARCH'];
                } 
                if(empty($nameeg)){
                   $post['nameeg'] = '';
                   $error['nameeg']  = $user->lang['ERROR_SEARCH'];
                }
                if(empty($nameth)){
                   $post['nameth'] = '';
                   $error['nameth']  = $user->lang['ERROR_SEARCH'];
                }
                if(empty($detailth)){
                   $post['detailth'] = '';
                   $error['detailth']  = $user->lang['ERROR_SEARCH'];
                }
                 
                 $template->assign_vars(array(
                        'DATA_SEARCH'   =>  $post['search'],
                        'DATA_NAMEEG'   =>  $post['nameeg'],
                        'DATA_NAMETH'   =>  $post['nameth'],
                        'DATA_DETAILTH' =>  $post['detailth'],
                        'DATA_APPROVE'  =>  $post['APPROVE'],
                        
                        'ERROR_SEARCH'      =>  $error['search'],
                        'ERROR_NAMEEG'      =>  $error['nameeg'],
                        'ERROR_NAMETH'      =>  $error['nameth'],
                        'ERROR_DETAILTH'    =>  $error['detailth'],
                        'MARK'              =>  $error['markid'],
                        'ACCTION'           =>  $this->u_action, 
                ));
                 
                 $db->sql_freeresult($result_row);
                $sql = 'SELECT COUNT(*) as total_data FROM ' . TOPICS_TABLE . " where topic_title LIKE '%".$db->sql_escape("$search")."%' " ;
                $result = $db->sql_query($sql);
                $total_data = $db->sql_fetchfield('total_data');
                $db->sql_freeresult($result);
                
                $template->assign_vars(array(
                    'PAGINATION'        => generate_pagination($pagination_url, $total_data, $limit, $start),
                    'PAGE_NUMBER'       => on_page($total_data, $limit, $start),
                ));  
กรณี มีค่าที่ต้องการให้ คงอยู่ส่งไปหน้าใหม่ด้วย ตัวแปล $pagination_url ใส่ค่าที่เคยเลือกหรอกรอกไว้ลงไปในตัวแปลด้วย
เช่น

โค้ด: เลือกทั้งหมด

$pagination_url .='&q=ค่าที่ส่งมา&str=ค่าที่ส่งมา';
ค่าที่เป็น array

โค้ด: เลือกทั้งหมด

$pagination_url .='&q[0]=ค่า1&q[1]=ค่า2';

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 18/05/2013 6:51 pm

การใช้งาน sql escape

โค้ด: เลือกทั้งหมด

 
                 $sql_array = array(
                'SELECT'    => 'm.*,u.*',

                'FROM'      => array(
                    MOD_DICTIONARY_TABLE => 'm',
                    USERS_TABLE    => 'u'
                ),
                'WHERE'     =>  'm.user_id_add = u.user_id '
                 . " AND esearch LIKE '%".$db->sql_escape("$searchdic")."%' "
                 . ' AND ' . $db->sql_in_set('id', $markid )
                 . ' order by esearch asc'
                 );  
 

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M004 » 18/05/2013 6:47 pm

ตัวอย่างการใช้งาน sql in set

โค้ด: เลือกทั้งหมด

$sql = 'UPDATE ' . MOD_DICTIONARY_TOPICE_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array(
                            'topics_id'        => $cbItems_array,
                            )   
                        ) . ' WHERE ' . $db->sql_in_set('dictionary_id', $Id);
                        
                        $sql_query = $db->sql_query($sql);

                        $template->assign_vars(array(
                         'SAVE_EDIT_DATA'   =>  $user->lang['DIC_EDIT_SAVE'],
                          )  ); 
การใช้งาน sql in set คือการนำค่าที่อยู่ในรูป array มา query

Re: ความรู้เบื้องต้น สอน การพัฒนา Mod PHPBB3

โดย M008 » 11/05/2013 7:07 pm

คำสั่งเชื่อมต่อไฟล์

โค้ด: เลือกทั้งหมด

<!-- INCLUDE filename -->
การเขียนปิด tags การรวม PHP ใน template

โค้ด: เลือกทั้งหมด

<!-- PHP -->
echo "hello!";
<!-- ENDPHP -->
ข้อจำกัดในการกำหนด keyword
-- จะต้องเว้นวรรคทั้งก่อนและหลัง "=" เสมอ
-- เมื่อมีการกำหนด strings จะต้องใช้ single quotes
ตัวอย่าง

โค้ด: เลือกทั้งหมด

<!-- DEFINE $COLSPAN = 3 --> 
<!-- DEFINE $CLASS = 'class1' --> 

Re: ความรู้เบื้องต้น สำหรับ Mod PHPBB3

โดย modtanoy_pen » 28/11/2012 1:22 pm

การใช้ IF , ELSEIF ใน Themplate
ตัวอย่างการใช้ IF

โค้ด: เลือกทั้งหมด

<!-- IF expr -->
markup
<!-- ENDIF -->
ตัวอย่างการใช้ IF แบบลูป

โค้ด: เลือกทั้งหมด

<!-- IF loop.S_ROW_COUNT is even -->
markup
<!-- ENDIF -->
ตัวอย่างการใช้ ELSEIF

โค้ด: เลือกทั้งหมด

!-- IF expr1 -->
markup
<!-- ELSEIF expr2 -->
markup
.
.
.
<!-- ELSEIF exprN -->
markup
<!-- ELSE -->
markup
<!-- ENDIF -->
ตัวอย่าง การวนลูปใน Table การสลับสีของตาราง

โค้ด: เลือกทั้งหมด

<table>
<!-- IF loop.S_ROW_COUNT is even -->
<tr class="row1">
<!-- ELSE -->
<tr class="row2">
<!-- ENDIF -->
<td>HELLO!</td>
</tr>
</table>

โค้ด: เลือกทั้งหมด

<table>
<!-- IF loop.S_ROW_COUNT > 10 -->
<tr bgcolor="#FF0000">
<!-- ELSEIF loop.S_ROW_COUNT > 5 -->
<tr bgcolor="#00FF00">
<!-- ELSEIF loop.S_ROW_COUNT > 2 -->
<tr bgcolor="#0000FF">
<!-- ELSE -->
<tr bgcolor="#FF00FF">
<!-- ENDIF -->
<td>hello!</td>
</tr>
</table>

Re: ความรู้เบื้องต้น สำหรับ Mod PHPBB3

โดย modtanoy_pen » 28/11/2012 11:56 am

การวนลูปส่งค่าไปให้ Themplate เพื่อการทำ list ข้อมูล
ใช้คำสั่ง assign_block_vars
ตัวอย่าง

โค้ด: เลือกทั้งหมด

while ($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('loopname', array(
        'FOO' => $row['foo'],
        'BAR' => $row['bar']
    ));
}
ตัวอย่างลูปซ้อนลูป

โค้ด: เลือกทั้งหมด

while ($topic = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('topic', array(
        'TOPIC_ID' => $topic['topic_id']
    ));

    while ($post = $db->sql_fetchrow($result))
    {
        $template->assign_block_vars('topic.post', array(
            'POST_ID' => $post['post_id']
        ));
    }
}

Re: ความรู้เบื้องต้น สำหรับ Mod PHPBB3

โดย modtanoy_pen » 28/11/2012 11:44 am

Themplate

ค่าคงที่ของ themplate
T_THEME_PATH เก็บ css ./styles/prosilver/theme
T_TEMPLATE_PATH เก็บ folder template ./styles/prosilver/template
T_IMAGESET_PATH เก็บรูปภาพ css ./styles/prosilver/imageset
T_IMAGESET_LANG_PATH เก็บรูปภาพภาษา ./styles/prosilver/imageset/en
T_IMAGES_PATH เก็บรูปข้างนอก ./images/
T_SMILIES_PATH เก็บรูปยิ้ม ./images/smilies/
T_AVATAR_PATH เก็บสัญญาลักษณ์หน้าตัวเองเป็นรูปการ์ตูน ./images/smilies/

ข้างบน