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 > การแจ้งเตือนผ่าน LineNotify แต่มี error ช่วยแก้หน่อยครับมือใหม่ทำโปรเจค



 

การแจ้งเตือนผ่าน LineNotify แต่มี error ช่วยแก้หน่อยครับมือใหม่ทำโปรเจค

 



Topic : 135153



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



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




สวัสดีครับ ผมเป็นมือใหม่ในการเขียนโค้ด ทำโปรเจคจบครับ ผมจะให้มันแจ้งเตือนในเงื่อนไขที่เป็น else แต่มันขึ้น error แบบนี้ ช่วยแก้ทีครับ

ภาพประกอบ

ส่วนนี้เป็นโค้ดครับ ผมเอา Tokenออกไว้นะครับ
Code (PHP)
<?php
	include('database.php');

	$b_field = $_POST["b_field"];  // สนาม
	$b_date = $_POST["b_date"];    //วันที่จอง
	$b_timestart = $_POST["b_timestart"];  //เริ่มจอง
	$b_timeend = $_POST["b_timeend"];    // ถึงเวลา
	$b_nidnumber = $_POST['b_nidnumber'];
	$b_name = $_POST['b_name'];
	$b_num = $_POST['b_num'];
	$b_phone = $_POST['b_phone'];
	$b_email = $_POST['b_email'];
	$b_member = $_POST['b_member'];


	//$strSQL = "SELECT * FROM book WHERE b_field = '".$b_field."' (b_date BETWEEN '".$b_timestart."' AND '".$b_timeend."')
	//('".$b_timestart."' BETWEEN b_timestart AND b_timeend) OR ('".$b_timeend."' BETWEEN b_timestart AND b_timeend) ";

	$strSQL = "SELECT * FROM book AS d1 INNER JOIN register AS d2  ON (d1.b_member = d2.id) WHERE (d1.b_field = '".$b_field."') AND (d1.b_date = '".$b_date."') AND (d1.b_timestart <='".$b_timeend."') AND (d1.b_timeend >='".$b_timestart."')";

	$objQuery = mysqli_query($objConnect,$strSQL);
	$objResult = mysqli_fetch_array($objQuery);

	if ($objResult) {
		echo "<script>
		alert('มีคนจองแล้ว');
		</script>";
		exit;

	}	else {
		$query = "INSERT INTO book (b_field,b_member,b_nidnumber,b_name,b_phone,b_email,b_date,b_timestart,b_timeend,b_num,b_reason,b_status)
		          VALUES ('".$b_field."','".$b_member."','".$b_nidnumber."','".$b_name."','".$b_phone."','".$b_email."','".$b_date."','".$b_timestart."','".$b_timeend."','".$b_num."',NULL,'1')";
		$query_run = mysqli_query($objConnect,$query);

		//แจ้งเตือนผ่านไลน์

		define('LINE_API',"https://notify-api.line.me/api/notify");

		$token = ""; //ใส่Token ที่copy เอาไว้

		$str = "\r\n".'จองสนามเรียบร้อยแล้ว';

		//ข้อความที่ต้องการส่ง สูงสุด 1000 ตัวอักษร

		$res = notify_message($str,$token);
		//print_r($res);
		function notify_message($message,$token){
		$queryData = array('message' => $message);
		$queryData = http_build_query($queryData,'','&');
		$headerOptions = array(
		'http'=>array(
		'method'=>'POST',
		'header'=> "Content-Type: application/x-www-form-urlencoded\r\n"
		."Authorization: Bearer ".$token."\r\n"
		."Content-Length: ".strlen($queryData)."\r\n",
		'content' => $queryData
		),
		);
		$context = stream_context_create($headerOptions);
		$result = file_get_contents(LINE_API,FALSE,$context);
		$res = json_decode($result);
		return $res;
		}
		//exit();

		echo "<script>
		alert('บันทึกสำเร็จ');
		</script>";
		exit;

	}

?>





Tag : PHP









ประวัติการแก้ไข
2020-04-24 14:53:00
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-04-24 14:50:41 By : matines View : 1847 Reply : 13
 

 

No. 1



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



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


วอนผู้รู้ช่วยทีครับ








ประวัติการแก้ไข
2020-04-24 14:53:58
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-24 14:52:38 By : matines
 


 

No. 2



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



สถานะออฟไลน์
Twitter Facebook Blogger

ต้องประกาศ function ก่อนเรียกใช้งานครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-24 15:01:29 By : PhrayaDev
 

 

No. 4



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



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


Quote:
Call to undefined function

https://translate.google.co.th
Quote:
เรียกฟังก์ชั่นที่ไม่ได้กำหนด

พอนึกออกมั้ยว่าทำไม...

code ที่เขียนไปก๊อปมาจากไหนก็เอาฟฟังก์ชั่นที่มันว่าไม่มีไม่เจอนี่มาด้วย


ประวัติการแก้ไข
2020-04-24 16:36:19
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-24 15:31:18 By : mr.v
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : PhrayaDev เมื่อวันที่ 2020-04-24 15:01:29
รายละเอียดของการตอบ ::
ถ้าผม ไม่ประกาศฟังก์ชั่น แต่เรียกใช้เลยได้ไหมครับ แล้วผมจะเขียนไปแนวไหน พอมีตัวอย่างไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 16:38:17 By : matines
 


 

No. 6



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : mr.v เมื่อวันที่ 2020-04-24 15:31:18
รายละเอียดของการตอบ ::

เท่าที่ผมไปดูมา เค้ามีมาทั้ง โค้ดเป็นชุดแบบนี้ชุดเดียวเลยนะครับ แล้วเค้าก็ให้ใส่ก่อนเงื่อนไข if else ผมลองทำก็ส่งได้ปกติ แต่ พอผมมาใส่ใน เงื่อน ไข ก็ error อย่างที่เห็นครับ ยัง งงๆอยู่เลยครับตอนนี้


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 16:40:00 By : matines
 


 

No. 7



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



สถานะออฟไลน์
Twitter Facebook Blogger

Code (PHP)
<?php
if (1 == 2)
{
    echo "NO in math.";
}
else
{
    function writeMsg()
    { // ประกาศฟังก์ชันก่อน
        echo "Hello world!";
    }
    writeMsg(); // เรียกฟังก์ชันหลังจากประกาศแล้ว
    
}
?>


หรือ

Code (PHP)
<?php
if (1 == 2)
{
    echo "yes";
}
else
{
    writeMsg();
}

// ประใน scope บน
function writeMsg()
{
    echo "Hello world!";
}

?>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 17:10:52 By : PhrayaDev
 


 

No. 8



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



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


Code (PHP)
if ($conditions) {
    myFunction();

    function myFunction() {

    }
    // ได้ call to undefined function
}



Code (PHP)
if ($conditions) {
    function myFunction() {

    }

    myFunction();
    // หาฟังก์ชั่นเจอ ทำงานได้
}




edit: แก้ไขหลังทดสอบแล้วมีปัญหากับเฉพาะ function ในเงื่อนไข.


คุณควรอ่านโค้ดให้เข้าใจด้วย แสดงว่าลอกมาอย่างเดียวไม่มีความเข้าใจเลย
การเรียกฟังก์ชั่น มันจะทำงานถ้ามันมีอยู่ ถ้าไม่มีก็จะแจ้งอย่างที่เห็น. ทั้งคห. 2 และผมก็บอกไปแล้วตรงกัน น่าจะเอะใจถ้าเข้าใจโค้ดบ้าง...
คือถ้ามันไปเรียกใช้เลยโดยไม่ได้ประกาศ หรือเรียกใช้ก่อนประกาศในเงื่อนไข มันก็จะลงเอยอย่างนี้.


อีกอย่าง การประกาศ function ควรแยกทำออกมาเป็นเอกเทศ ไม่ควรเอาไปซุกในเงื่อนไข
Code (PHP)
if ($conditions) {
    function myFunction() {
        // code 
    }
}

แบบนี้ผมยังไม่เคยเห็นใครเขาทำกัน ไปเปิดดูบน GitHub พวก Opensource ต่างๆที่คนทั่วโลกเขาเขียนก็ยังไม่ค่อยจะได้เห็นนะครับ.
เพราะมันดูไม่เป็นระเบียบ เลอะเทอะ ทำให้ซ้ำซ้อนได้
ยกเว้นแต่ว่าประกาศ function ในไฟล์ แล้วเอาไฟล์สั่ง include ในเงื่อนไข อันนั้นเคยเห็นบ่อย.
อ่านโค้ดให้เข้าใจ มันจะได้แก้ปัญหาได้ง่ายขึ้น ถ้าเข้าใจโค้ดมีคนบอกแค่นิดเดียว ก็เรียบร้อยไปแล้ว อย่าลอกอย่างเดียว เพราะบางทีต้นแบบคนเขียนให้ลอกก็ไม่ได้เขียนดีอะไร..


ประวัติการแก้ไข
2020-04-29 17:29:26
2020-04-29 18:01:03
2020-04-29 18:01:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 17:28:57 By : mr.v
 


 

No. 9



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



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


จริงๆ แล้ว function อยู่ตรงไหน ก็เหมือนกัน จะอยู่ ต้นโปรแกรม จะอยู่ท้ายโปรแกรม ได้ทั้งนั้น
แค่ ขอให้อยู่ใน root อย่าอยู่ใน sub program มันจะมองไม่เห็น

แต่จากโค๊ดก็ไม่เข้าใจเหมือนกันทำไมมัน error undefined function ได้ แก้ไขอะไรเพิ่มเติมหรือเปล่า

ส่วน flow control ตรงนี้ผิด
Code (PHP)
$objQuery = mysqli_query($objConnect,$strSQL);

// $objResult = mysqli_fetch_array($objQuery); // บรรทัด ถ้าไม่มีข้อมูล (record เป็น 0) จะ error  ลบออก
// if( $objResult ){ // ลบทิ้งเปลี่ยนเป็น
if( $objQuery->num_rows>0) {
	exit("<script>alert('มีคนจองแล้ว');</script>"; // เขียนสั้นๆ ก็ได้ ถ้าจบโปรแกรมเลย
}


อีกอย่าง โค๊ด Query SQL แบบนี้ ถ้าเขียนใช้เอง มันก็ใช้ได้ แต่อย่าส่งลิงค์ให้ใครใช้ล่ะ
มันไม่ผ่าน security sql injection
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 17:40:02 By : Chaidhanan
 


 

No. 10



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



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


กรณีที่คุณ Chaidhanan ว่ามาก็ถูกครับ
ถ้าไฟล์เป็นแบบนี้
Code (PHP)
<?php
myFunction();// แสดงผล

function myFunction() 
{
    echo 'hello<br>' . PHP_EOL;
}

แบบนี้มันทำงานได้ครับ. คือตัวฟังก์ชั่นมันเป็น block level (ผมไม่ถนัดศัพท์เทคนิค อาจใช้คำผิด โปรดชี้แนะด้วย).


แต่ถ้ามันไปอยู่ในเงื่อนไขมันจะทำงานไม่ได้เลยครับ
Code (PHP)
<?php
if (!isset($undefinedVar)) {
    myFunction();

    function myFunction() 
    {
        echo 'hello<br>' . PHP_EOL;
    }
}

อาจเพราะไม่ใช่การประกาศใน block level แต่อยู่ในระดับที่ต่ำกว่าเลยต้องไล่ทำงานตามลำดับบนลงล่าง..
ดังนั้นถ้าเพื่อเอาให้แม่นๆแน่ๆ ก็เขียนประกาศ function ไว้ข้างนอกสุดอย่างที่ผมบอกอันก่อนอะครับ คือสร้างไฟล์สำหรับ functions ทั้งหลายเลย แล้ว include มาเรียกใช้.
ตัวอย่าง

Code (PHP)
<?php
function myFunction() 
{
    echo 'hello<br>' . PHP_EOL;
}

function myFunction2() 
{
    echo 'world<br>' . PHP_EOL;
}

functions.php



Code (PHP)
<?php
if ($condition1) {
    include_once 'functions.php';
    myFunction();
}

test01.php
แบบนี้จะแม่นยำไม่มีพลาดครับผม


ประวัติการแก้ไข
2020-04-29 17:57:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 17:56:25 By : mr.v
 


 

No. 11



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



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


แก้ไขโค๊ดบางตัว ลองดูเป็นตัวอย่างการ คิวรี่เพื่อป้องกัน sql injection พยามเขียนให้เคยชินเข้าไว้
ก็เฉพาะ ตัวแปรที่รับจากภายนอกนะครับ
Code (PHP)
<?php
include('database.php');
$b_field = $_POST["b_field"];  // สนาม
$b_date = $_POST["b_date"];    //วันที่จอง
$b_timestart = $_POST["b_timestart"];  //เริ่มจอง
$b_timeend = $_POST["b_timeend"];    // ถึงเวลา
$b_nidnumber = $_POST['b_nidnumber'];
$b_name = $_POST['b_name'];
$b_num = $_POST['b_num'];
$b_phone = $_POST['b_phone'];
$b_email = $_POST['b_email'];
$b_member = $_POST['b_member'];

//$strSQL = "SELECT * FROM book WHERE b_field = '".$b_field."' (b_date BETWEEN '".$b_timestart."' AND '".$b_timeend."')
//('".$b_timestart."' BETWEEN b_timestart AND b_timeend) OR ('".$b_timeend."' BETWEEN b_timestart AND b_timeend) ";

$strSQL = "
	SELECT * FROM book AS d1 INNER JOIN register AS d2  ON (d1.b_member = d2.id) 
	WHERE (d1.b_field = ?) AND (d1.b_date = ?) AND (d1.b_timestart <= ?) AND (d1.b_timeend >= ?)";
$stmt = $objConnect->prepare($strSQL);
$stmt->bind_param('ssss', $b_field, $b_date, $b_timeend, $b_timestart);
$stmt->execute();
if ($stmt->num_rows>0){ exit('<script>alert('มีคนจองแล้ว');</script>'); }
$stmt->close();
//----------------------------------------------------
$query = "INSERT INTO book (b_field,b_member,b_nidnumber,b_name,b_phone,b_email,b_date,b_timestart,b_timeend,b_num,b_reason,b_status)
		VALUES (?,?,?,?,?,?,?,?,?,?,NULL,'1')";
$stmt=$objConnect->prepare($query);
$stmt->bind_param('ssssssssss',$b_field,$b_member,$b_nidnumber,$b_name,$b_phone,$b_email,$b_date,$b_timestart,$b_timeend,$b_num);
$stmt->execute();
//แจ้งเตือนผ่านไลน์
define('LINE_API',"https://notify-api.line.me/api/notify");
$token = ""; //ใส่Token ที่copy เอาไว้
$str = "\r\n".'จองสนามเรียบร้อยแล้ว';
//ข้อความที่ต้องการส่ง สูงสุด 1000 ตัวอักษร
$res = notify_message($str,$token);
echo "<script>
alert('บันทึกสำเร็จ');
</script>";
//print_r($res);
function notify_message($message,$token){	
	$queryData = array('message' => $message);
	$queryData = http_build_query($queryData,'','&');
	$headerOptions = array(
		'http'=>array(
			'method'=>'POST',
			'header'=> "Content-Type: application/x-www-form-urlencoded\r\n"
				."Authorization: Bearer ".$token."\r\n"
				."Content-Length: ".strlen($queryData)."\r\n",
			'content' => $queryData
		),
	);
	$context = stream_context_create($headerOptions);
	$result = file_get_contents(LINE_API,FALSE,$context);
	$res = json_decode($result);
	return $res;
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 20:50:46 By : Chaidhanan
 


 

No. 12



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



สถานะออฟไลน์
Twitter Facebook Blogger

lab เพิ่มเติม

Code (PHP)
<?php

// .................
// function ใน Loop
// .................
for ($i=0; $i < 3; $i++) {
     
    // Comment "if" จะได้ Cannot redeclare ...
    // if ตรงนี้ป้องกันการประกาศฟังก์ชันซ้ำ
	if ($i > 0) {  // เงื่อนไขเหมือนกับ function_exists()
        myFunction($i);
        continue;
    }
    
    // ใน Block statement หรือ loop ต้องประกาศก่อนใช้
    function myFunction($i) 
    {
        echo "'hello $i'<br>";
    }
    
    myFunction($i); // บรรทัดนี้ถูกเรียกครั้งเดียวเมื่อ $i เป็น 0
}


// ........................................................
// แต่สำหรับ class เรียกก่อนหลังไม่สำคัญ เพราะถือว่าตัวแปรหรือฟังก์ชันอยู่ใน scope เดียวกัน
// ........................................................
$x = new myClass();
$x->b();
$x->d();

class myClass
{
    function d() // เรียกก่อน
    {
        //echo $val; //undefined (no warning/error)
        echo $this->val."from variable<br>";
    }
    
	public $val = "'hello in class'<br>";
    
    function b() // เรียกก่อน
    {
        //a(); //undefined
        $this->a();
    }
    
	function a() 
    {
        echo $this->val;
    }
    
    function c() // เรียกหลัง
    {
        //a(); //undefined
        $this->a();
    }
}

$y = new myClass();
$y->c();



ประวัติการแก้ไข
2020-04-29 21:16:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-29 21:14:40 By : PhrayaDev
 


 

No. 13



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



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


ขอขอบคุณ คำแนะนำที่ให้เด็กหลังห้องแบบผมจากทุกท่านเลยนะครับ ผมจะลองไปประยุกแล้วปรับปรุงเพื่อใช้งานดูครับ ขอบคุณครับ


ประวัติการแก้ไข
2020-04-30 14:41:41
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-30 14:33:33 By : matines
 


 

No. 14



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

Hall of Fame 2012

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


ตอบความคิดเห็นที่ : 13 เขียนโดย : matines เมื่อวันที่ 2020-04-30 14:33:33
รายละเอียดของการตอบ ::
เก่งไม่กลัว กลัวขยัน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-30 15:02:34 By : Genesis™
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การแจ้งเตือนผ่าน LineNotify แต่มี error ช่วยแก้หน่อยครับมือใหม่ทำโปรเจค
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
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 อัตราราคา คลิกที่นี่