PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

สอบถามเรื่องส่งคำที่เก็บใน Array ไปฐานข้อมูลโดยใช้ PHP และ Ajax

สอบถามเรื่องส่งคำที่เก็บใน Array ไปฐานข้อมูลโดยใช้ PHP และ Ajax
                               console.log(text);
                                var res = text.split(" ");
  				console.log(res);
				console.log(res.length);
				
				var i ;
				for(i = 0 ; i <= res.length ; i++){
				
				$.ajax({
			url: "test.php",
		data: "subject=" + res[i],
			type: 'GET',
		dataType: 'html',
		success: function(data) {
		$('#div_show').html(data);
		}
												
		});
				}

โปรแกรมจะรับประโยคภาษาอังกฤษจากผู้ใช้มาและได้ตัดคำด้วยช่องว่างและเก็บคำใน Array ได้เรียบร้อยแล้วคะ และต้องการให้ส่งข้อความทีละคำจาก Array index 0 ไปเรื่อยๆ จนหมด จะส่งคำแต่ละ index ไปฐานข้อมูล ไปจับกับวีดีโอ ถ้าคำที่ส่งไปไม่มีวีดีโอนั้นในฐานข้อมูลก็ให้ alert แจ้งผู้ใช้

ช่วยหน่อยนะคะ ^^



โดย:  J&j IP: 27.145.107.xxx วันที่: 02-10-2014 เวลา: 00:07:43

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 3
ที่ทำดูค่อนข้างซับซ้อน ที่จะแนะนำคงไม่ตรงทีเดียว
การใช้งานจริง ต้องไปปรับและทำความเข้าใจ

มีไฟล์ 3 ไฟล์ 

simple.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Simple</title>
</head>
<body>
    
<div id="video_show">
<video id='video_place' width='320' height='240' controls='controls' autoplay='autoplay'></video>    
</div>    
    
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>  
<script type="text/javascript" src="script.js"></script>
</body>
</html>



script.js

$(function(){
    var str="good morning  thailand";
//    ส่งเป็นข้อความยาวไปเลย ไม่ต้องแยก ไปแยกใน php
    
    // ส่งข้อมูลไปตรวจสอบแบบ ajax ตัวแปร post
    $.post("simple.php",{
        str:str
    },function(data){ // คืนค่ากลับมา
        var obj=eval("{"+data+"}");   // แปลงค่าเป็น json object และเก็บใน ตัวแปร obj
   
        // สร้าง ตัวแปร array สำหรับเก็บ url video
        var arr_video=[];
        var v=0; // กำหนดตัวแปร เก็บค่า key 
  
        $.each(obj,function(i,k){ // วนลูปเอาค่า video ใน obj ที่ได้มากำหนดไว้ในตัวแปร arr_video
            if(k.found==1){ // ใช้เฉพาะรายการที่พบ video
                arr_video[v]=k.video;  // เก็บ url video ในตัวแปร array
                v++;  //บวกเพิ่มค่า key
            }
        });       
        
        if(v==0){ // ถ้าไม่พบ video ใดๆ เลย
            alert("No video found");
        }else{ //ถ้ามี video
            var play_video=0;  // กำหนดตัวแปร เก็บค่า key video ที่จะเล่น เริ่มต้นเป็น 0
            // แสดง และเล่น video ที่ play_video = 0 ของ video ในตัวแปร array  arr_video
            $("#video_place")[0].src=arr_video[play_video];
            
            $("#video_place")[0].onended = function(e){ // ถ้า video เล่นจบ
                play_video++;   // เพิ่มค่า key video ที่จะเล่นต่อ
                if(play_video<v){  // เช็คว่า ค่า key นี้ยังไม่เกินจำนวน key ของ video ที่มี
                    $("#video_place")[0].src=arr_video[play_video]; // เล่น video ตัวถัดไป
                }
            };            
        }

    });
    
});


simple.php

<?php
// ติดต่อฐานข้อมูล
$objConnect = mysql_connect("localhost","root","root");
$objDB = mysql_select_db("test");


$str=trim($_POST['str']); // รับข้อความมา ตัดช่องว่าง หน้าหลัง
 // แปลงช่องว่างที่มากกว่าหนึ่งช่องว่าง ให้เหลือช่องว่างเดียว
$newStr = preg_replace('@[[:space:]]+@', ' ', trim($str)); 
// แยกค่าเป็น array ไปเช็คข้อมูลเปรียบเทียบ
$arr_str=explode(" ",$newStr);

$found=0; // สร้างตัวแปรสำหรับเก็บค่า พบข้อมูลหรือไม่ 0 ไม่พบ | 1 พบ
if(count($arr_str)>0){  // คำที่แยกจาก array ว่ามีหรือไม่มี
  foreach($arr_str as $k=>$v){ // วนลูป นำค่า $v ไปเช็ค
      
      // ถ้าเป็นฐานข้อมูล
      
	$strSQL = "SELECT video FROM testtable where name = '".$v."' " ;
	$objQuery = mysql_query($strSQL);
    if(mysql_num_rows($objQuery)>0){  // ถ้ามีข้อมูล
        $found=1;     
        $obResult = mysql_fetch_array($objQuery);
        $json_data[]=array(  
            "video"=>$obResult['video'], // เก็บค่า url video
            "word"=>$v,  // เก็บคำที่ค้น
            "found"=>$found  // เก็บค่าค้นเจอหรือไม่ ค่านี้จะเป็น 1 มีข้อมูล
        );                
    }else{
        $found=0;     
        $json_data[]=array(  
            "video"=>'',  // ค่าว่าง
            "word"=>$v,   // เก็บคำที่ค้น
            "found"=>$found // เก็บค่าค้นเจอหรือไม่ ค่านี้จะเป็น 0 ไม่มีข้อมูล
        );                       
    }       
      
  }
}
mysql_close($objConnect);
$json= json_encode($json_data);  
echo $json; // ส่งค่ากลับเป็นรูปแบบ ข้อความ json
?>



ลองเอาไปเป็นแนวทาง   

โดย:  Ninenik IP: 1.47.208.xxx วันที่: 02-10-2014
 ความคิดเห็นที่ 2
พี่นิก ช่วยดูโค้ดให้อีกหน่อยนะคะ
<?php
	$objConnect = mysql_connect("localhost","root","root");


	$objDB = mysql_select_db("test");
	$strSQL = "SELECT video FROM testtable where name = '".$_GET["subject"]."' " ;
	$objQuery = mysql_query($strSQL);
	$intNumField = mysql_num_fields($objQuery);
	$resultArray = array(); 
	while($obResult = mysql_fetch_array($objQuery))
	{
		$arrCol = array();
		for($i=0;$i<$intNumField;$i++)
		{
			$arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i];
		}
		array_push($resultArray,$arrCol);
	}
	
		mysql_close($objConnect);
	$json = json_encode($arrCol);
	//echo $json;
	
	$result = json_decode($json,true);

	//echo $result[video];
	
echo '<video width="320" height="240" controls="controls" autoplay="autoplay">';
echo '<source src="'.$result[video].'" type="video/mp4">';
echo '</video>';

?>

แล้วจะเพิ่มที่ตัดคำตรงส่วนไหนของโค้ดคะ อ่านโค้ดไม่เป็นคะ และอยากจะให้ video เล่นต่อเนื่องไปเรื่อยๆ คือคำนึงจับกับ URL นึง

สมมุติว่ามีประโยคเข้ามา เมื่อตัดคำแล้วได้ 3 คำ คำแรกก็เข้าจับกับ URL วีดีโอในฐานข้อมูลและมาเล่นให้ผู้ใช้ดูเมื่อวีดีโอแรกจบ วีดีโอของคำต่อไป

ก็เล่นอีก ไปเรื่อยๆ จนหมดทุกคำ จบประโยค

ขอบคุณนะคะ พี่นิก ช่วยหน่อยน๊าาา เป็นโปรเจคจบด้วยคะ เครียดมากๆ



โดย:  J&j IP: 110.164.182.xxx วันที่: 02-10-2014 เวลา: 17:16:30
 ความคิดเห็นที่ 1
ใช้เป็นแนวทาง ปรับใช้งานตามต้องการ

แนะนำให้ส่งค่าไปครั้งเดียว และใช้ php ในการตัดคำและแยกคำเพื่อตรวจสอบ

การประยุกต์ทำได้มากกว่า นอกเหนือจากแนะนำ

<script type="text/javascript" >
$(function(){
    var str="good   morning thailand";
//    ส่งเป็นข้อความยาวไปเลย ไม่ต้องแยก ไปแยกใน php
    $.post("simple.php",{
        str:str
    },function(data){
        console.log(data);
        if(data==0){ // ถ้าไม่เจอ ข้อมูลที่ส่งไปใน video
            alert("No video found");
        }
    });
    
});
 </script>    
simple.php

<?php
$str=trim($_POST['str']); // รับข้อความมา ตัดช่องว่าง หน้าหลัง
 // แปลงช่องว่างที่มากกว่าหนึ่งช่องว่าง ให้เหลือช่องว่างเดียว
$newStr = preg_replace('@[[:space:]]+@', ' ', trim($str)); 
// แยกค่าเป็น array ไปเช็คข้อมูลเปรียบเทียบ
$arr_str=explode(" ",$newStr);

$test_data=array("good","thailand"); // ตัวแปรสำหรับทดสอบเท่านั้น

$found=0; // สร้างตัวแปรสำหรับเก็บค่า พบข้อมูลหรือไม่ 0 ไม่พบ | 1 พบ
if(count($arr_str)>0){  // คำที่แยกจาก array ว่ามีหรือไม่มี
  foreach($arr_str as $k=>$v){ // วนลูป นำค่า $v ไปเช็ค
      
      // รูปแบบการตรวจสอบ ถ้าพบข้อมูล ให้กำหนดค่า $found=1;
      // ตัวอย่างทดสอบ หาค่าจาก array
      if(in_array($v,$test_data)){  // ทดสอบ ถ้ามีค่าใน array 
          $found=1;     
      }
      
      // ถ้าเป็นฐานข้อมูล
//      if(@mysql_num_rows(@mysql_query("
//      SELECT column FROM table WHERE column = '".$v."'
//      "))>0){
//          $found=1;     
//      }
      
  }
}
echo $found;
?>





โดย:  Ninenik IP: 1.47.147.xxx วันที่: 02-10-2014