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

HOME > PHP > PHP Forum > ช่วยทีครับ ติดปัญหาเกี่ยวกับ Barcode การเข้ารหัส และ การเขียนไฟล์ fopen



 

ช่วยทีครับ ติดปัญหาเกี่ยวกับ Barcode การเข้ารหัส และ การเขียนไฟล์ fopen

 



Topic : 081171



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



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




ก่อนอื่นต้องขออธิบายก่อน
ขั้นตอนแรก เข้าไปกรอกข้อมูลในฟอร์ม แล้วกด Submit จากนั้นฟอร์มก็จะเรียกฟังก์ชั่น encodeing() ขึ้นมา
Code (PHP)
function encoding()
 {
	var req;
		if(window.XMLHttpRequest)
			req=new XMLHttpRequest();
		else if(window.ActiveXObject)
			req=new ActiveXObject("Microsoft.XMLHTTP");
		else
	{
			alert("Browser not support");
			return false;
	}

	var strx=jQuery.now();
	var querystrx="../B1/barcode.php?str="+strx;
	req.open("GET",querystrx,true);
	req.send(null);
 }


ฟังก์ชั่น encodeing() ก็จะเรียกไฟล์ barcode.php ขึ้นมาทำงาน โดยไฟล์ barcode.php ก็จะสร้าง id ขึ้นมาเป็นตัวเลข 12 หลักแล้วส่งต่อไปยัง php_barcode.php เพื่อนำตัวเลข 12 หลักไปเข้ารหัส แล้วออกมาเป็นตัวเลข 13 หลัก ซึ่งหลักที่ 13 เป็นตัวเช็ค digit หลังจากได้เลข มา 13 หลักแล้ว ผมต้องการให้ไฟล์ php_barcode.php นำเลข13 หลักนั้น ไปเขียนไว้ในไฟล์ id.txt แต่มันไม่ยอมเขียน

barcode.php
Code (PHP)
require("php-barcode.php");
require("../cms/config/connect.php");
	$dd=date(d);
	$mm=date(m);
	$yy=date(Y);
	if($con){
	$sql="select * from cms_runid";
	$query=mysql_query($sql);
	$result=mysql_fetch_array($query);
	if($result[1]!=$dd){
		$sql="update cms_runid set id='0001', day='$dd' where day='$result[1]'";
	}
	else {
		$nid=++$result[0];
		$nid=str_pad($nid, 4, "0", STR_PAD_LEFT);
		$sql="update cms_runid set id='$nid' where day='$result[1]'";
	}
		$query=mysql_query($sql);	
		$sql="select * from cms_runid";
		$query=mysql_query($sql);
		$result=mysql_fetch_array($query);
	
		$nextid=$result[0];
		$nowdate=$dd.'/'.$mm.'/'.$yy;
		$rid=$yy.$mm.$dd.$nextid;
	}

function getvar($name){
    global $_GET, $_POST;
    if (isset($_GET[$name])) return $_GET[$name];
    else if (isset($_POST[$name])) return $_POST[$name];
    else return false;
}

if (get_magic_quotes_gpc()){
    $code=stripslashes(getvar('code'));
} else {
    $code=getvar('code');
}

if (!$code) $code=$rid;

barcode_print($code,getvar('encoding'),getvar('scale'),getvar('mode'));



php_barcode.php (บางส่วน) เก็บรหัส 13 หลักไว้ในตัวแปร $intcode
Code (PHP)
  /* paint the bars */
    $width=true;
    for ($i=0;$i<strlen($bars);$i++){
	$val=strtolower($bars[$i]);
	if ($width){
	    $xpos+=$val*$scale/1.1;
	    $width=false;
	    continue;
	}
	if (ereg("[a-z]", $val)){
	    /* tall bar */
	    $val=ord($val)-ord('a')+1;
	    $h=$height2/3;
	} else $h=$height/3;
	imagefilledrectangle($im, $xpos, $space['top'], $xpos+($val*$scale)-1, $h, $col_bar);
	$xpos+=$val*$scale;
	$width=true;
    }
    /* write out the text */
    global $_SERVER;
	$intcode="";
    $chars=explode(" ", $text);
    reset($chars);
    while (list($n, $v)=each($chars)){
	if (trim($v)){
	    $inf=explode(":", $v);
	    $fontsize=$scale*($inf[1]/1.8)/1.4;
	    $fontheight=($total_y-($fontsize/2.7)+30)/2.8;
	    @imagettftext($im, $fontsize, 0, $space['left']+($scale*$inf[0])+5,
	    $fontheight, $col_text, $font_loc, $inf[2]);
		$intcode.=$inf[2];
	}
    }
	$pathweb=$_SERVER[DOCUMENT_ROOT];
	$pathfile=$pathweb."/cms/id.txt";
	$fileid=fopen($pathfile,"w+");
	fwrite($fileid,$intcode);
		
	
    /* output the image */
    $mode=strtolower($mode);
    if ($mode=='jpg' || $mode=='jpeg'){
	header("Content-Type: image/jpeg; name=\"barcode.jpg\"");
	imagejpeg($im);
    } else if ($mode=='gif'){
	header("Content-Type: image/gif; name=\"barcode.gif\"");
	imagegif($im);
    } else {
	header("Content-Type: image/png; name=\"barcode.png\"");
	imagepng($im,"../B1/img/bars.png");
    }

}




Tag : PHP, MySQL, HTML/CSS, Ajax, jQuery, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-07-17 10:20:53 By : davilllll View : 1449 Reply : 1
 

 

No. 1



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



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


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

ขั้นตอนการทำงานของโปรแกรม
อธิบาย step-by-step ครับ

1. กรอกข้อมูลใน Form แล้วกด Submit ฟังก์ชั่น endcodeing() ก็จะทำงานโดยการเรียกไฟล์ barcode.php ขึ้นมาทำงาน

2-3. ไฟล์ barcode.php ก็จะทำการเช็คไอดีกับตาราง run_id ในฐานข้อมูล ถ้าวันที่ ณ ปัจจุบัน เท่ากับ วันที่ในตาราง run_id ให้ดึงฟิลด์ id ในตารางมาใช้งาน $nextid=fild[id] แต่ถ้า ไม่ตรงกัน ให้สร้างไอดีเท่ากับ 0001 แล้วทำการอัพเดทตาราง run_id ให้ id=0001 date=วันที่ ณ ปัจจุบัน $nextid=0001 แล้วทำการสร้าง $rid ให้เท่ากับ ปี/เดือน/วันที่/id เช่น
$dd=date(d);
$mm=date(m);
$yy=date(Y);
$rid=$yy.$mm.$dd.$nextid; #12 digit

4. $code=$rid; ส่งค่า $code ไปต่อที่ไฟล์ php_barcode.php

5. php_barcode.php ส่งค่า $code ไปเข้ารหัสที่ไฟล์ encode.php

6. เข้ารหัสจากตัวแปร $code (12 digit เป็น 13 digit) ก็จะได้ค่าตัวเลขออกมา 13 หลัก

7. นำ $code 13 digit มาเขียนไฟล์ $x=fopen('id.txt','w+'); fwrite($x,$code);

8. สร้างบาร์โค้ดเป็นไฟล์ .png ทิ้งไว้ใน โฟล์เดอร์ B1/img/

9. คืนค่ากลับมาที่ barcode.php

10-11. ไฟล์ index.php ทำการ call PHP_SELF เป็นการส่ง action มายังไฟล์เดิม แล้วเช็คค่าตัวแปร ถ้าผ่านการกรอกข้อมูลในฟอร์มมาแล้ว ก็จะทำการเปิดไฟล์ id.txt และดึงค่าที่อยู่ในไฟล์ id.txt มาใส่ในตัวแปร $id

12 เพิ่มข้อมูล $id แล้วค่าอื่นๆที่รับมาจาก Form เข้าไปในฐานข้อมูล

ทั้งหมดนี้เป็นการทำงานหลังจากกรอกข้อมูลใน form แล้ว กด Submit แค่ครั้งเดียว


จากรูป ถ้าเริ่มตั้งแต่ขั้นตอนที่ 1 ขั้นตอนที่ 2-9 จะไม่ทำงาน แต่ถ้าเริ่มตั้งแต่ขั้นตอนที่ 2 ขั้นตอนที่ 2-9 ทำงานปกติทั้งหมด








ประวัติการแก้ไข
2012-07-17 15:52:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-17 15:17:15 By : davilllll
 

   

ค้นหาข้อมูล


   
 

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