|
|
|
เทพ ช่วยตรวจ code ให้ผมหน่อยครับ แบบว่าผมไม่รู้ว่าผิดตรงไหนนั้งหามาหลาย ชม.เเล้วครับ |
|
|
|
|
|
|
|
เรื่องมีอยู่ว่า ผมทำเว็บบอด formโฟสหัวข้อใหม่อยู่โดยใช้เทคนิก ajax พอทำเสร็จเเล้ว มันไม่ส่งข้อมูลตอบกลับ ไม่เพื่มข้อมูล หรือข้อมูลที่ส่งไปส่งไม่ถึงไฟร์เพื่มข้อมูลลงsql หรือไงไม่รู้อะครับ ช่วยดูให้หน่อยครับ ผมต้องใช้ด่วนใกล้ส่งโปรเจคเเล้ว
codeพวกนี้เป็นcodeที่ผมทำครับ
cdoeหน้าฟอมร์ส่งข้อมูลครับ
Code (PHP)
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="th">
<head>
<title>Manga, Doujin, Novel online | hanes</title>
<meta http-equiv="content-language" content="th" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="ชุมชุนมังกะออนไลน์ โดจิน นิยาย" />
<meta name="keywords" content="hanes, มังกะออนไลน์, manga online, doujin, novel" />
<!-- CSS AND JS API -->
<link rel="stylesheet" href="../stylesheet/reset.css" type="text/css" media="all" />
<link rel="stylesheet" href="../stylesheet/neko_style.css" type="text/css" />
<link rel="stylesheet" href="../stylesheet/neko_index.css" type="text/css" />
<link rel="stylesheet" href="../stylesheet/my_webboard.css" type="text/css" />
<link rel="stylesheet" href="../stylesheet/awesome.css" type="text/css" />
<!--[if lte IE 8]>
<script src="js/html5.js" type="text/javascript"></script>
<![endif]-->
</head>
<body>
<!-- START MENU -->
<section class="box curve box_shadow">
<div class="hader"> </div>
<div class="clear"> </div>
<div class="post_box">
<nav>
<ul>
<li><a href="index.php" title="Home">Home</a></li>
<li><a href="#" title="Manga">Manga</a></li>
<li><a href="#" title="Doujin">Doujin</a></li>
<li><a href="#" title="Novel">Novel</a></li>
<li><a href="board/" title="Webboard">Webboard</a></li>
</ul>
</nav>
<!--START CHACK_LOGIN&OUT-->
<div class="user_panel">
<?php
//ถ้ามีตัวแปรเซสชั่น $_COOKIE["User"] แสดงว่าล็อกอินเรียบร้อยแล้ว
if (!isset($_SESSION["username"])) {
/* ใส่เนื้อหาอื่นๆที่ให้ดูได้เฉพาะผู้ที่ล็อกอินแล้ว */
echo '<li><a href="../login.php" class=" awesome small" title="login">Login</a> | <a href="../login.php" class=" awesome small" title="login">Register</a></li>';
}
else { //ยังไม่ได้ล็อกอิน
echo '<li class="li_login"><font class="font_user">You are [</font>'.$_SESSION["username"].'<font class="font_user">]</font> <a href="../logout.php" class=" awesome small" title="login">Logout</a></li>';
}
?>
</div>
<!--END CHACK_LOGIN&OUT-->
<div class="clear"> </div>
</section>
<!-- END MENU -->
<script type="text/javascript" src="../myajax.js"></script>
<script language="javascript">
//ฟังก์ชั่นที่ใช้ส่งชื่อและรหัสผ่านในฟอร์มไปยังเซิร์ฟเวอร์ด้วยเทคนิค AJAX
function sendData() {
var stitle = document.getElementById("title").value;
var stext = document.getElementById("text").value;
if (stitle == "" || stext == "") {
alert("คุณยังไม่ได้พิมพ์หัวข้อหรือข้อความ");
return;
}
/* ใช้ฟังก์ชั่น postDataReturnText ของเฟรมเวิร์ค MyAJAX ส่งข้อมูลไปยังเพจ test_topic.php */
postDataReturnText("add_topic.php", "title=" + stitle + "&text=" + stext, sendDataCallback);
//ใช้ตัวแปร promptDiv อ้างอิงไปยังกรอบแสดงสถานะ
var promptDiv = document.getElementById("promptDiv");
promptDiv.style.color = "black";
promptDiv.innerHTML = "กำลังบันทึกข้อมูล.............";
}
/* ฟังก์ชั่นที่จะถูกเรียกกลับ (callback) หลังจากได้รับ response จากเพจ chack_login.php แล้ว */
function sendDataCallback(data) {
//แยกสตริงที่เซิร์ฟเวอร์ส่งกลับมาโดยใช้ | เป็นตัวแยก
var respArray = data.split('|');
//เก็บสตริงส่วนแรกไว้ในตัวแปร respStatus ซึ่งจะบอกสถานะว่าสำเร็จหรือไม่
var respStatus = respArray[0].toLowerCase();
//เก็บสตริงส่วนที่สองไว้ในตัวแปร respMessage ซึ่งจะเป็นชื่อไฟล์ในกรณีสำเร็จ หรือเป็นข้อความแจ้งข้อผิดพลาดในกรณีไม่สำเร็จ
var respMessage = respArray[1];
//ใช้ตัวแปร promptDiv อ้างอิงไปยังกรอบแสดงสถานะ
var promptDiv = document.getElementById("promptDiv");
switch (respStatus) {
case "success":
promptDiv.style.color = "green";
promptDiv.innerHTML = "Successful";
//ตั้งเวลา 2 วินาทีให้เรียกฟังก์ชั่น redirectTo โดยส่งค่าของ respMessage ไปเป็นอาร์กิวเมนต์
setTimeout("redirectTo('index.php')", 2000);
break;
case "error":
promptDiv.style.color = "red";
promptDiv.innerHTML = respMessage;
break;
}
}
//ฟังก์ชั่นที่ใช้สั่งให้บราวเซอร์เรียกไปยังเพจที่ระบุ (Redirection)
function redirectTo(targetPage) {
window.location = targetPage;
}
/* ฟังก์ชั่นสำหรับจัดการอีเวนต์ onkeyup (ปล่อยปุ่มหลังจากกด) ที่เกิดกับออบเจ็ค document ฟังก์ชั่นนี้ช่วยให้ผู้ใช้สามารถกด Enter แทนการคลิกปุ่ม "เข้าระบบ" ไม่ว่าขณะนั้นโฟกัสจะอยู่ตำแหน่งใดในเพจก็ตาม */
function keyup(e) {
//บราวเซอร์บางตัว เช่น IE จะไม่ส่ง event object ซึ่งเก็บรายละเอียดต่างๆของอีเวนต์ที่เกิดขึ้นมาให้ (อาร์กิวเมนต์ e จะไม่มีค่า)
if (!e) {
e = window.event;
}
//ถ้าปุ่มที่ปล่อยคือ Enter ให้เรียกฟังก์ชั่น sendData
if (e.keyCode == 13) {
sendData();
}
}
//ผูกฟังก์ชั่น keyup ไว้กับอีเวนต์ onkeyup ของออบเจ็ค document
document.onkeyup = keyup;
</script>
<section class="post_topic box_shadow curve update_box">
<?php
//ถ้ามีตัวแปรเซสชั่น $_SESSION["username"] แสดงว่าล็อกอินเรียบร้อยแล้ว
if (isset($_SESSION["username"])) {
echo '<br/>';
echo '<h1>NEW TOPIC</h1>';
echo '<div class="clear"> </div>';
echo '<br/>';
echo '<table class="my_table" width="100%">';
echo '<form id="form_topic" name="form_topic" method="post" action="add_topic.php">';
echo '<tr>';
echo '<td class="alt">หัวข้อ</td>';
echo '<td><input type=text id="title" name="title" size=51 maxlength=100 style="width: 450px;" /> <span id="promptDiv"></span></td>';
echo '</tr>';
echo '<tr>';
echo '<td class="alt">รายละเอียด</td>';
echo '<td><textarea id="text" name="text" style="width: 670px; height: 200px;"></textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td class="alt">โดย</td>';
echo '<td>'.$_SESSION["username"].'</td>';
echo '</tr>';
echo '</form>';
echo '</table>';
echo '<div class="last3"><a onClick="sendData();" class="large awesome">ADD TOPIC</a></div>';
/* ใส่เนื้อหาอื่นๆที่ให้ดูได้เฉพาะผู้ที่ล็อกอินแล้ว */
}
else { //ยังไม่ได้ล็อกอิน
echo '<div class="p_post_topic"><h4>คุณไม่สิทธิ post เนื่องจากยังไม่ได้ล็อกอิน<br>';
echo 'กรุณา <a href="../login.php" class=" awesome small" title="login">Login</a> ก่อน</h4></div>';
}
?>
</section>
<!-- START FOOTER -->
<section class="box curve box_shadow">
<div class="left">
<b>About</b> | <b>FAQ</b> | <b>Contact</b><br /><small>Powered by Kissover</small>
</div>
<div class="right">
HANES.COM Since 2011<br/><small>Best view in 1280*700 and more. Good view in Google Chrome,Mozilla Firefox</small>
</div>
<div class="clear"> </div>
</section>
<!-- END FOOTER -->
</body>
</html>
code ไฟร์ myajax.js
Code (PHP)
/**************************************************
***** ใช้เมธอด GET ดึงข้อมูลแบบ Text ********************
***************************************************/
function getDataReturnText(url, callback) {
var objRequest = false;
if (window.XMLHttpRequest) {
objRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
objRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
if (objRequest) {
objRequest.open("GET", url);
objRequest.onreadystatechange = handleResponse;
objRequest.send(null);
}
//ฟังก์ชั่น handleResponse เป็น Inner Function
function handleResponse() {
if (objRequest.readyState == 4 && objRequest.status == 200) {
callback(objRequest.responseText);
delete objRequest;
objRequest = null;
}
} //จบฟังก์ชั่น handleResponse ที่เป็น Inner Function
} //จบฟังก์ชั่น getDataReturnText
/**************************************************
***** ใช้เมธอด GET ดึงข้อมูลแบบ XML *********************
***************************************************/
function getDataReturnXML(url, callback) {
var objRequest = false;
if (window.XMLHttpRequest) {
objRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
objRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
if (objRequest) {
objRequest.open("GET", url);
objRequest.onreadystatechange = handleResponse;
objRequest.send(null);
}
//ฟังก์ชั่น handleResponse เป็น Inner Function
function handleResponse() {
if (objRequest.readyState == 4 && objRequest.status == 200) {
callback(objRequest.responseXML);
delete objRequest;
objRequest = null;
}
} //จบฟังก์ชั่น handleResponse ที่เป็น Inner Function
} //จบฟังก์ชั่น getDataReturnXML
/**************************************************
***** ใช้เมธอด POST ส่งข้อมูล และรับผลลัพธ์แบบ Text กลับมา ****
***************************************************/
function postDataReturnText(url, data, callback) {
var objRequest = false;
if (window.XMLHttpRequest) {
objRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
objRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
if (objRequest) {
objRequest.open("POST", url);
objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
objRequest.onreadystatechange = handleResponse;
objRequest.send(data);
}
//ฟังก์ชั่น handleResponse เป็น Inner Function
function handleResponse() {
if (objRequest.readyState == 4 && objRequest.status == 200) {
callback(objRequest.responseText);
delete objRequest;
objRequest = null;
}
} //จบฟังก์ชั่น handleResponse ที่เป็น Inner Function
} //จบฟังก์ชั่น postDataReturnText
/**************************************************
***** ใช้เมธอด POST ส่งข้อมูล และรับผลลัพธ์แบบ XML กลับมา *****
***************************************************/
function postDataReturnXML(url, data, callback) {
var objRequest = false;
if (window.XMLHttpRequest) {
objRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
objRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
if (objRequest) {
objRequest.open("POST", url);
objRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
objRequest.onreadystatechange = handleResponse;
objRequest.send(data);
}
//ฟังก์ชั่น handleResponse เป็น Inner Function
function handleResponse() {
if (objRequest.readyState == 4 && objRequest.status == 200) {
callback(objRequest.responseXML);
delete objRequest;
objRequest = null;
}
} //จบฟังก์ชั่น handleResponse ที่เป็น Inner Function
} //จบฟังก์ชั่น postDataReturnXML
เเล้วก็code ไฟร์ เพื่มข้อมูลลงฐานข้อมูลครับ
Code (PHP)
<?
header('Content-Type: text/html; charset=utf-8');
session_start(); //เริ่มต้นเซสชั่น
$Title_topic=$_POST['title'];
$Text_topic=$_POST['text'];
$User_topic=$_SESSION["username"];
$ip = $_SERVER['REMOTE_ADDR'];
$datetime=date("y-m-d h:i:s");
/* ถ่วงเวลา 2 วินาที เพื่อไม่ให้ผลลัพธ์ถูกส่งกลับไปยังบราวเซอร์ทันที*/
sleep(2);
authenticateUser();
function authenticateUser() {
//เชื่อมต่อและเลือกฐานข้อมูลที่จะทำงานด้วย
$cn = connectDB("localhost", "root", "426226", "webproject");
if (!$cn) {
sendResponse("error", "เกิดปัญหาในการติดต่อฐานข้อมูล");
return;
}
$sql="insert into topic (Title_topic,User_topic,Ip_topic,Date_topic,Text_topic)values
('$Title_topic','$User_topic','$ip','$datetime','$Text_topic')";
$query=mysql_query($cn, $sql);
mysqli_close($cn);
if($query){
sendResponse("success", "index.php");
}else{
sendResponse("error", "Fail");
}
/* ฟังก์ชั่นที่ใช้เชื่อมต่อ MySQL และเลือกฐานข้อมูลที่ต้องการใช้งาน ถ้าฟังก์ชั่นทำงานสำเร็จจะส่งคืนการเชื่อมต่อ (link identifier) กลับไปให้ แต่ถ้าไม่สำเร็จจะคืนค่า false */
function connectDB($host, $user, $pass, $db_name) {
$cn = mysqli_connect($host, $user, $pass);
if (!$cn) return false;
$query = mysqli_select_db($cn, $db_name);
if (!$query) return false;
return $cn;
}
//ฟังก์ชั่นที่ใช้ส่งผลลัพธ์กลับไปยังบราวเซอร์
function sendResponse($status, $message) {
echo $status . "|" . $message;
}
?>
ช่วนผมหน่อยครับ ขอบคุณครับ
Tag : Action Script, Ajax, CakePHP
|
ประวัติการแก้ไข 2012-01-09 17:27:41 2012-01-09 17:30:37 2012-01-09 17:50:24
|
|
|
|
|
Date :
2012-01-09 17:15:33 |
By :
kissover |
View :
1105 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Debug ด้วยสายตามันยากน่ะครับ
|
|
|
|
|
Date :
2012-01-09 17:53:19 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้เเล้วครับ
แก้ code ไฟร์ เพื่มข้อมูลลงฐานข้อมูลเป็นแบบนี้เเล้วได้เลยครับ
Code (PHP)
<?
session_start();
date_default_timezone_set('Asia/Bangkok')
$Title_topic=$_POST['title'];
$User_topic=$_SESSION["username"];
$ip = $_SERVER['REMOTE_ADDR'];
$datetime=date("y-m-d h:i:s");
$Text_topic=$_POST['text'];
include('../config.php');
$sql="insert into topic (Title_topic,User_topic,Ip_topic,Date_topic,Text_topic)values
('$Title_topic','$User_topic','$ip','$datetime','$Text_topic')";
$query=mysql_query($sql);
if($query){
sendResponse("success", "index.php");
}else{
sendResponse("error", "Fail");
}
function sendResponse($status, $message) {
echo $status . "|" . $message;
}
?>
|
|
|
|
|
Date :
2012-01-09 18:22:32 |
By :
kissover |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|