[WEBDEV Room!] แชร์ทุกเรื่อง ถ้าเป็นเว็บ!

เริ่มโดย EThaiZone, 05 สิงหาคม 2008, 22:39:50

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

icez

ลองสั่ง print_r(mysql_fetch_array($sql)); เทียบกับ print_r(mysql_fetch_assoc($sql)); ดูได้เลยครับ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

thenetxx

 :-[ อ๊ายคุยไรกัน ไม่เห็นรู้เรื่องเลย
Develop site but can't develop life
ASIA

pugkung

อ้างถึงจาก: icez ใน 08 สิงหาคม 2008, 13:45:32
ลองสั่ง print_r(mysql_fetch_array($sql)); เทียบกับ print_r(mysql_fetch_assoc($sql)); ดูได้เลยครับ

ได้เวลาเปลี่ยน แนว แว้ว (ขอ อภัยที่ใช้ภาษาไทยไม่ถูกต้อง แค่ต้องการแสดงความรู้สึก  :)  )

ขอบคุณ คุณ Icez มากครับ ที่ชี้ช่องทางให้   :)

Kazamatsuri

ขอบคุณมากครับ ได้ความรู้มาอีกเยอะเลย :'(

oldgame

ขอบคุณมากครับ ได้ความรู้เยอะเลย

ขอตามติดห้องนี้ตลอดไป  :-[
[direct=http://www.pwgamer.com]โปรเกมส์[/direct] luna-z blog ส่วนตัวรวมโปร
[direct=http://www.kaichonasean.com]ไก่ชน[/direct] เว็บไซต์รวมซุ้มไก่ชน
[direct=http://www.boybdream.com]รับออกแบบเว็บไซต์[/direct]  รับออกแบบเว็บไซต์
[direct=http://www.2winweb.com]รับทำเว็บ[/direct]  รับออกแบบเว็บไซต์
[direct=http://www.pralanna.com]พระเครื่อง[/direct] พระล้านนา รวมพระเครื่องเมืองเหนือ

EThaiZone

โอ้ว เข็มขัดสั้นครับ

SHOW TABLE STATUS

:o  เข้ามาแชร์บ่อยๆ นะครับ

EThaiZone

#66
วันนี้มาต่อกับ "การสวมหัวโขนให้ HTML"

** โพสนี้ไม่เกี่ียวข้องกับศิลปะ และนาฎศิลป์แขนงใดๆ ทั้งสิ้น โปรดอย่าสับสน
ลักษณะจะเหมือนกับการสวมเขาต่อหางให้ PHP เพียงแต่เป็นการทำกับ HTML
และโค้ดจะต่างกันไป


ขั้นแรกให้สร้างไฟล์ PHP  ที่จะเป็นหัวโขนมาสักไฟล์
สมมุติว่าชื่อ mask_html.php ละกัน

พอเราสร้าง ให้ลองใส่โค้ดนี้ลงไป
<?php
echo "It's a head!<br>";

//แสดงผล html (สำคัญ ห้ามลบ)
readfile($_SERVER["DOCUMENT_ROOT"].$_SERVER["REDIRECT_URL"]);

echo 
"<br>It's a foot!";
?>


แล้วเซฟ

ต่อมาให้แก้ .htaccess เพิ่มโค้ดนี้ลงไป

Action init_html_php /path-from-web-root/mask_html.php
AddHandler init_html_php .html .htm


โดยตรง path-from-web-root ก็คือต้องกำหนด path ให้ถูก โดยนับจากกรณีมีซัพโฟลดอร์หรือไม่

ยกตัวอย่าง localhost/
ก็จะเป็น Action init_html_php /mask_html.php

ยกตัวอย่าง localhost/web/html/
ก็จะเป็น Action init_html_php /web/html/mask_html.php

เมื่อกำหนดพาทเสร็จ ก็เซฟ


เท่านี้ เราก็จะสามารถสวมหัวโขนให้ไฟล์ html ทุกไฟล์ได้แล้ว
ทดลองด้วยการเปิด HTML สักไฟล์ที่อยู่ในโฟลเดอร์นั้นได้เลยครับ

:)

----------------------------------------------------
เทคนิคสำหรับ PHP นั้น ลักษณะคือการ attach โค้ดนั้นๆ
เข้ากับการทำงานของโค้ดเดิม

แต่ HTML จะเป็นการเพิ่มการกระทำให้ PHP เข้าไปทำงานแทน HTML ที่โดนเรียก
จึงต้องมีการใช้ file_get_contents ในการทำงานด้วย

:)


edit: แก้โค้ดเพิ่มโดย icez

thenetxx

เห็นเค้าแชร์กัน อยากแชร์มั่ง
คอนแรกจะแชร์  ajax class ที่ใช้งานง่าย
เรียกแค่ 2 ไฟล์ ใช้ได้ทั้งเว็บ แต่กลัวมันจะยาวเกินไป


เลยแชร์ทริปง่าย ๆ ละกันเป็น  function java ใช้ ซ่อน/แสดง div


<input type="button" value="ซ่อน" onClick="hide_div_id('content');">
<input type="button" value="แสดง"  onClick="show_div_id('content');">

<div id="content">xxx content xxxx</div>
<script>
function show_div_id(id){
   document.getElementById(id).style.visibility = "visible";
   document.getElementById(id).style.display = 'inline';
}

function hide_div_id(id){
   document.getElementById(id).style.visibility = "hidden";
   document.getElementById(id).style.display = 'none';
}
</script>


:D
Develop site but can't develop life
ASIA

Hanma

►► บันทึกการทำ Amazon Affiliate ด้วย Nichesite
กลุ่ม Amazon Affiliate Thailand https://www.facebook.com/groups/1866661123572353/
(สงวนสิทธิ์รับเฉพาะคนใช้ account facebook จริงเท่านั้น)

tanut

ขอบคุณสำหรับทุก Thanks ครับ

[direct=http://astore.amazon.com/bakugan.battle.brawlers-20]bakugan battle brawlers[/direct]
[direct=http://astore.amazon.co.uk/fly.london.shoe-21]fly london shoe[/direct]
[direct=http://astore.amazon.fr/casio.montres.pour.tous-21]casio montres pour tous[/direct]
[direct=http://www.facebook.com/BennieAliceShop]baby shirt[/direct]
[direct=http://benniealice.lnwshop.com]kid shirt[/direct]

pugkung

เอา Function เพิ่มข้อมูลลง Data Base มาฝาก


        function add_data($field,$table)
{
  $sql_insert = key($field);
  $sql_value = "'".current($field)."'";
  for($i = 0; $i<count($field)-1; $i++)
  {
    next($field);
    $sql_insert = $sql_insert.",".key($field);
$sql_value = $sql_value.",'".current($field)."'";
  }
  $sql = "insert into $table($sql_insert) values($sql_value)";
  //print $sql;
  //exit;
  $rs = mysql_query($sql);
  if( $rs == 0 )
  {
    print "SQL Commdn Error !!!!<br>";
print $sql;
exit;
  }
}


วิธีใช้งาน

            $tbName = 'employee_tb';// กำหนดชื่อ ตาราง

  $field['em_user'] = $em_user; // ใส่ชื่อ Field ในตัวแปร Array พร้อมกำหนดค่า
  $field['em_pass'] = $em_pass;
  $field['em_name'] = $em_name;
  $field['em_lname'] = $em_lname;
  $field['em_lv'] = $em_lv;// ใส่ชื่อ Field ในตัวแปร Array พร้อมกำหนดค่า

  $add_data($field,$tbName);// รูปแบบการเรียกใช้ Paramiter $field คือ ตัวแปร Array , $tbName คือ ชื่อตาราง


เขียนเองมั่ว ๆ เหมาะไม่เหมาะอย่างไร รบกวน คนเก่ง ๆ ช่วยแก้ทีนะครับ  :P

หวังว่าจะเป็นประโยชน์นะครับ   :)

icez

ขอแก้ code น้องโจ้หน่อย
เพื่อ performance

search: echo file_get_contents
replace: readfile


อ้างถึงจาก: EThaiZone ใน 08 สิงหาคม 2008, 20:14:27
วันนี้มาต่อกับ "การสวมหัวโขนให้ HTML"

** โพสนี้ไม่เกี่ียวข้องกับศิลปะ และนาฎศิลป์แขนงใดๆ ทั้งสิ้น โปรดอย่าสับสน
ลักษณะจะเหมือนกับการสวมเขาต่อหางให้ PHP เพียงแต่เป็นการทำกับ HTML
และโค้ดจะต่างกันไป


ขั้นแรกให้สร้างไฟล์ PHP  ที่จะเป็นหัวโขนมาสักไฟล์
สมมุติว่าชื่อ mask_html.php ละกัน

พอเราสร้าง ให้ลองใส่โค้ดนี้ลงไป
<?php
echo "It's a head!<br>";

//แสดงผล html (สำคัญ ห้ามลบ)
readfile($_SERVER['PATH_TRANSLATED']);

echo 
"<br>It's a foot!";
?>


แล้วเซฟ

ต่อมาให้แก้ .htaccess เพิ่มโค้ดนี้ลงไป

Action init_html_php /path-from-web-root/mask_html.php
AddHandler init_html_php .html .htm


โดยตรง path-from-web-root ก็คือต้องกำหนด path ให้ถูก โดยนับจากกรณีมีซัพโฟลดอร์หรือไม่

ยกตัวอย่าง localhost/
ก็จะเป็น Action init_html_php /mask_html.php

ยกตัวอย่าง localhost/web/html/
ก็จะเป็น Action init_html_php /web/html/mask_html.php

เมื่อกำหนดพาทเสร็จ ก็เซฟ


เท่านี้ เราก็จะสามารถสวมหัวโขนให้ไฟล์ html ทุกไฟล์ได้แล้ว
ทดลองด้วยการเปิด HTML สักไฟล์ที่อยู่ในโฟลเดอร์นั้นได้เลยครับ

:)

----------------------------------------------------
เทคนิคสำหรับ PHP นั้น ลักษณะคือการ attach โค้ดนั้นๆ
เข้ากับการทำงานของโค้ดเดิม

แต่ HTML จะเป็นการเพิ่มการกระทำให้ PHP เข้าไปทำงานแทน HTML ที่โดนเรียก
จึงต้องมีการใช้ readfile ในการทำงานด้วย

:)
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

Tee++;

โห Share กันใหญ่เลย ขอบ้างๆ

การทำ Compatibility Function

คงจะเคยเจอกันใช่มั้ยครับ function ใน php5 แต่ไม่สามารถเอามาใช้ใน php4 ทีนี้พอเปลี่ยน host ที เอาล่ะสิ ยุ่งเลยได้ ลองมาดูวิธีแก้กัน

if (!function_exists('get_headers'))
{
function get_headers($url,$format=0)
{
$url_info = parse_url($url);
$port = isset($url_info['port']) ? $url_info['port'] : 80;
$fp = @fsockopen($url_info['host'], $port, $errno, $errstr, 30);

if ($fp)
{
if(!$url_info['path'])
$url_info['path'] = "/";

if ($url_info['path'] && !$url_info['host'])
{
$url_info['host'] = $url_info['path'];
$url_info['path'] = "/";
}

if ($url_info['host'][(strlen($url_info['host'])-1)] == "/" )
$url_info['host'][(strlen($url_info['host'])-1)] = "";

if (!$url_array[scheme])
$url_array[scheme] = "http"; //we always use http links

$head = "HEAD ".@$url_info['path'];

if ($url_info['query'] )
$head .= "?".@$url_info['query'];
//print_r($url_info);

$head .= " HTTP/1.0\r\nHost: ".@$url_info['host']."\r\n\r\n";
      //echo $head;

fputs($fp, $head);
while (!feof($fp))
{
if ($header=trim(fgets($fp, 1024)))
{
if ($format == 1)
{
$h2 = explode(':',$header);

if($h2[0] == $header)
$headers['status'] = $header;
else
$headers[strtolower($h2[0])] = trim($h2[1]);
}
else
$headers[] = $header;
}
}
return $headers;
}
else
return false;
   }
}


ในตัวอย่างนี้ผมลองกับคำสั่ง get_headers ซึ่งมีใน php5 พอเปลี่ยนมาใช้ host ที่ไม่มีคำสั่งนี้ก็แค่ไปเช็คมันก่อนด้วย

function_exists จากนั้นเขียน function เลียนแบบมันเข้าไปเองเลยครับ

ส่วนคำสั่ง get_headers คือคำสั่งเอาไว้เช็ค header ของ external file โดยไม่ต้องไปทำการอ่าน binary คืออ่าน header แล้วก็จบเลย มีประโยชน์ในการเช็ค ข้อมูลจาก link ภายนอกครับ

ผมเห็นหลายคน เวลาจะเช็ค ว่าไฟล์มีหรือไม่มี บางทียังเขียนแบบนี้อยู่เลย

if (!fopen('http://www.jquerytips.com', 'r')) exit;

ซึ่งมัน แดก performance ขั้นนรกเลยครับ ลองเปลี่ยนมาเป็น

$headers = get_headers($path);

if (!preg_match('/200/', $headers[0])) exit;

จะเห็นความแตกต่าง แบบ สวรรค์กับ นรกเลยครับ

ส่วนค่า return อื่นๆก็มีประโยชน์ไม่แพ้กัน

Array
(
    // check server status
   
  • => HTTP/1.1 200 OK
        // check date
        [1] => Date: Sat, 29 May 2004 12:28:13 GMT
        // check server
        [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
        // check last modify
        [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
        // check e-tag (เอาไว้เช็คแทน md5_file ได้ดีมาก)
        [4] => ETag: "3f80f-1b6-3e1cb03b"
        // check accept
        [5] => Accept-Ranges: bytes
        // check length (เอาไว้ทำ streaming download)
        [6] => Content-Length: 438
        [7] => Connection: close
        [8] => Content-Type: text/html
    )

    ลองดูกันนะครับ ^^
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]


thenetxx

#73
อ้างถึงจาก: pugkung ใน 08 สิงหาคม 2008, 23:33:05
เอา Function เพิ่มข้อมูลลง Data Base มาฝาก


        function add_data($field,$table)
{
  $sql_insert = key($field);
  $sql_value = "'".current($field)."'";
  for($i = 0; $i<count($field)-1; $i++)
  {
    next($field);
    $sql_insert = $sql_insert.",".key($field);
$sql_value = $sql_value.",'".current($field)."'";
  }
  $sql = "insert into $table($sql_insert) values($sql_value)";
  //print $sql;
  //exit;
  $rs = mysql_query($sql);
  if( $rs == 0 )
  {
    print "SQL Commdn Error !!!!<br>";
print $sql;
exit;
  }
}


วิธีใช้งาน

            $tbName = 'employee_tb';// กำหนดชื่อ ตาราง

  $field['em_user'] = $em_user; // ใส่ชื่อ Field ในตัวแปร Array พร้อมกำหนดค่า
  $field['em_pass'] = $em_pass;
  $field['em_name'] = $em_name;
  $field['em_lname'] = $em_lname;
  $field['em_lv'] = $em_lv;// ใส่ชื่อ Field ในตัวแปร Array พร้อมกำหนดค่า

  $add_data($field,$tbName);// รูปแบบการเรียกใช้ Paramiter $field คือ ตัวแปร Array , $tbName คือ ชื่อตาราง


เขียนเองมั่ว ๆ เหมาะไม่เหมาะอย่างไร รบกวน คนเก่ง ๆ ช่วยแก้ทีนะครับ  :P

หวังว่าจะเป็นประโยชน์นะครับ   :)

เอามาให้ ลองดูกันครับ
:)
   
function InsertDB($table, $field, $values) {
       
        if(!$table) return false;
        if(!$field) return false
       
        $sql = "insert into " . $table . "(" . $field . ") values (" . $values . ")";

        return mysql_query($sql) or die(mysql_error());

    }
    function InsertDBbyArr($table,$params){
            if(!$table || !$params) return false;

            foreach($params as $key => $val){
                $field .= $key.",";
                $value .= "'".$val."',";
            }
            $field =substr($field,0,-1);
            $value =substr($value,0,-1);

            return InsertDB($table,$field,$value);
               
    }


** แก้ เอา $this-> ออก
Develop site but can't develop life
ASIA

pugkung

^
^
^
ว้าว สั้นกว่า และท่าทางจะเร็วกว่าด้วย ขอบคุณครับ  :)

EThaiZone

if(!$table || !$params) return false;

เวลาจะเช็คตัวแปร แนะนำใช้ empty ดีกว่านะครับ (เครดิตจากคุณ icez)

if(empty($table) || empty($params)) return false;

:P

Kazamatsuri

พูดถึง empty() แล้ว งั้นขอถามต่อล่ะกันครับ

การใช้ empty() กับ isset() มีผลต่างกันยังไงครับ

อะไรคือข้อแตกต่างกันแบบชัดเจนในการเลือกใช้งาน :P

EixQzUnG

อ้างถึงจาก: EThaiZone ใน 08 สิงหาคม 2008, 08:40:12
ตัวอย่าง

$cache_record_rows = "record_rows.txt";

//Make Cache
if(!file_exists($cache_record_rows)) {
$query2="SELECT COUNT(*) FROM tablesName WHERE condition LIMIT 50;";
$rows=mysql_query($query2);
if(empty($rows) $rows = "0";
file_put_contents($cache_record_rows, $rows); //คำสั่งนี้มีใน php5 เท่านั้น ถ้า php4 ก็ใช้ fopen เปิด แล้วค่อยสั่งเขียนเอา
}

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Add Rows
$rows++;
file_put_contents($cache_record_rows, $rows);
echo "Update Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Remove Rows
$rows--;
file_put_contents($cache_record_rows, $rows);
echo "Remove Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";


ประมาณนี้


แจ่ม เลยครับ คุณโจ้ ผมคิด อะไรออกเยอะแยะเลย


แต่ว่า ผมจะเก็บหลายๆ ข้อมูลไว้ในไฟล์เดียว เขียนยังไงดี

เช่นข้อมูล ใน record_rows.txt มีชัก 3 อย่าง ละ ครับ

แบบ คำสังเดียว แต่ รับค่า มา ถ้าเขียน เป็น แนว function จะ ยากไปไหมนะ

stat_id : 10
stat_user : 15
stat_view_page : xxx


เวลาเรา จะเปลี่ยน แปลง ค่า  เฉพาะ stat_id เขียนยังไงให้เข้า ถึง ละครับ


เปลี่ยนแปลงเฉพาะค่า stat_id ส่วน stat_user และอืนๆ คงค่าเดิมไว้

EThaiZone

#78
อ้างถึงจาก: Kazamatsuri ใน 09 สิงหาคม 2008, 18:41:23
พูดถึง empty() แล้ว งั้นขอถามต่อล่ะกันครับ

การใช้ empty() กับ isset() มีผลต่างกันยังไงครับ

อะไรคือข้อแตกต่างกันแบบชัดเจนในการเลือกใช้งาน :P

empty ใช้ตรวจหาว่าตัวแปรนั้นมันว่างหรือไม่

แต่กับ isset ใช้จตรวจว่าตัวแปรนั้นมีอยู่จริงหรือไม่

การใช้ isset จะไม่เหมาะกับพวกการรับข้อมูลเช่น GET POST
ยกตัวอย่าง ถ้ามีคนเรียกแบบนี้ download.php?id=

ถ้าใช้ empty($_GET['id']) มันจะคืน true แปลว่าตัวแปรนั้นว่าง
แต่ถ้า isset($_GET['id']) มันจะคืน true แปลว่าตัวแปรนั้นมี แต่เราไม่รู้ว่ามันว่างหรือไม่

ดังนั้นการใช้ empty จะชัวร์กว่า ในเรื่องตัวแปรนั้นๆ มีข้อมูลมาจริงๆ

อ้างถึงจาก: zunkz ใน 09 สิงหาคม 2008, 18:55:37
แจ่ม เลยครับ คุณโจ้ ผมคิด อะไรออกเยอะแยะเลย


แต่ว่า ผมจะเก็บหลายๆ ข้อมูลไว้ในไฟล์เดียว เขียนยังไงดี

เช่นข้อมูล ใน record_rows.txt มีชัก 3 อย่าง ละ ครับ

แบบ คำสังเดียว แต่ รับค่า มา ถ้าเขียน เป็น แนว function จะ ยากไปไหมนะ

stat_id : 10
stat_user : 15
stat_view_page : xxx


เวลาเรา จะเปลี่ยน แปลง ค่า  เฉพาะ stat_id เขียนยังไงให้เข้า ถึง ละครับ


เปลี่ยนแปลงเฉพาะค่า stat_id ส่วน stat_user และอืนๆ คงค่าเดิมไว้

สมมุติว่าข้อมูลนั้นเป็น array แล้วนะครับ
เวลาก่อนจะเก็บลงไฟล์ ก็นำเอาอาเรย์นั้นไปเข้า serialize ก่อน
แล้วถ้าอยากเรียกมาแก้ไข ก็สั่งอ่านไฟล์ แล้วใช้ unserialize มาแปลงกลับเป็นอาเรย์
แล้วปรับค่าอาเรย์นั้นตามสะดวกเลย แล้วก่อนบันทึกกลับ ก็เข้า serialize ก่อนด้วยครับ

serialize และ unserialize เป็นฟังค์ชั่นคู่กัน ตัวหนึ่งใช้เข้า ตัวหนึ่งใช้ถอด
โดยจะแปลงตัวแปรหรืออาเรย์นั้นๆ เป็น text ในรูปที่ใช้บันทึกได้

โดยจะบันทึกทั้งชื่อ โครงสร้าง ชนิด ของตัวแปรนั้นๆ
เรียกง่ายๆ คือมันเหมาะกับการทำแคชของตัวแปรมากที่สุดครับ

:) (วิธีใช้ลองหาอ่านใน php.net นะครับ)

Kazamatsuri

อ้างถึงจาก: EThaiZone ใน 09 สิงหาคม 2008, 22:27:57
อ้างถึงจาก: Kazamatsuri ใน 09 สิงหาคม 2008, 18:41:23
พูดถึง empty() แล้ว งั้นขอถามต่อล่ะกันครับ

การใช้ empty() กับ isset() มีผลต่างกันยังไงครับ

อะไรคือข้อแตกต่างกันแบบชัดเจนในการเลือกใช้งาน :P

empty ใช้ตรวจหาว่าตัวแปรนั้นมันว่างหรือไม่

แต่กับ isset ใช้จตรวจว่าตัวแปรนั้นมีอยู่จริงหรือไม่

การใช้ isset จะไม่เหมาะกับพวกการรับข้อมูลเช่น GET POST
ยกตัวอย่าง ถ้ามีคนเรียกแบบนี้ download.php?id=

ถ้าใช้ empty($_GET['id']) มันจะคืน true แปลว่าตัวแปรนั้นว่าง
แต่ถ้า isset($_GET['id']) มันจะคืน true แปลว่าตัวแปรนั้นมี แต่เราไม่รู้ว่ามันว่างหรือไม่

ดังนั้นการใช้ empty จะชัวร์กว่า ในเรื่องตัวแปรนั้นๆ มีข้อมูลมาจริงๆ

ตายแระ โดนเต็ม ๆเลย ปกติผมใช้ isset กับพวกนี้ตลอดเลยอ่ะ :o

ต้องไปปรับการเขียนโค๊ดใหม่หน่อยแระ :-[