|
|
|
UpdateคะแนนลงDatabase ช่วยดูโค้ดแล้วช่วยแก้ไขและช่วยอธิบายด้วยค่ะ |
|
|
|
|
|
|
|
ไล่ที่มาที่ไปของตัวแปร $score และตัวแปร $UserID ครับว่ามาถูกต้องครบถ้วนหรือไม่
|
|
|
|
|
Date :
2014-06-21 14:35:56 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?
$score=0;
for($i=1;$i<=$_POST["line"];$i++)
{
If($_POST["c$i"] == $_POST["answer$i"])
{
$score=$score+1;
}
}
mysql_connect("localhost","root","1234");
mysql_select_db("member");
$sql = "UPDATE member SET score =score+'".$score."' WHERE UserID ='".$UserID."'";
$objQuery = mysql_query($strSQL);
echo "<center><br><br><br><br><br><br>จาก10 ข้อได้<br> $score คะแนน<br></center>";
?>
$UserID ถ้า POST มา ก็แก้เป็น $_POST['UserID'];
สลับตำแหน่งให้ถูกต้องนะครับ ไปอัพเดทก่อนกำหนดค่า มันก็ไม่ถูกนะครับ
|
ประวัติการแก้ไข 2014-06-21 14:58:19
|
|
|
|
Date :
2014-06-21 14:56:23 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อ ขอบคุณค่ะ ขอลองดูก่อนน่ะค่ะ
|
|
|
|
|
Date :
2014-06-21 14:57:41 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้อ่าค่ะ มันก็ยังไม่อัพเดทคะแนนลงดาต้าให้อ่า ช่วยหน่อยน่ะค่ะ
|
|
|
|
|
Date :
2014-06-21 15:01:42 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จขกท. เอายังงี้ก่อน ทำความเข้าใจทีละนิดก่อน ไปทีละสเต็ป
- เอาค่าคงที่ลงไปเทสก่อน ว่ามันเข้าเปล่า พอเข้าแล้วค่อยมาหาวิธีนำตัวแปรเข้า
สร้างกระดาษเปล่าขึ้นมา เอาโค้ดนี้ลงไปเทสดูว่าDB มีการเปลี่ยนแปลงไหมในUserIDที่ระบุค่าลงไป
<?php
mysql_connect("localhost","root","1234");
mysql_select_db("member");
$sql = "UPDATE member SET score =score+'555' WHERE UserID ='ค่าในฟิลล์UserIDยกมาซักตัว' ";
$objQuery = mysql_query($strSQL);
?>
|
|
|
|
|
Date :
2014-06-21 15:06:07 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันไม่ยอมลงคะแนนอ่า T^T
|
|
|
|
|
Date :
2014-06-21 15:06:27 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นการ login เข้ามา ก็จะต้องทำ session เพื่อเก็บค่า UserID นั้น
จากนั้น ก็ดึงเอาค่า UserID นั้นอ่า มา WHERE ตอนที่เรา UPDATE
ตามคำสั่งนี้ น่ะ ถูกแล้ว
Code (PHP)
$sql = "UPDATE member SET score =score+'$score' WHERE UserID ='$UserID' ";
$objQuery = mysql_query($sql);
แต่ จขกท. น่าจะติดตรง WHERE UserID ='$UserID' มากกว่า
|
|
|
|
|
Date :
2014-06-21 16:07:57 |
By :
FreshyMusiC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลอง
print $sql = "UPDATE member SET score =score+'$score' WHERE UserID ='$UserID' ";
แล้วเอาค่าที่ได้ ไป query ลงใน DB โดยตรงเลยครับ ว่าลงตามที่ต้องการไหม
ถ้าไม่ได้ ก็แสดงว่า คำสั่ง sql หรือ เงื่อนไข หรือ ตัวแปร ไม่ถูก
|
|
|
|
|
Date :
2014-06-21 16:20:28 |
By :
FreshyMusiC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันผิดตั้งแต่ code HTML ที่ ส่งค่ามาครับ
ใช้ Web Browser เรียก Sample1.php นำเข้าข้อมูลก่อนครับ คลิกขวา view Source มาดูกันก่อนครับ
ไฟล์ Sample1.php Generate HTML code ออกไปไม่ถูกกับความต้องการแน่ๆ ครับ
|
|
|
|
|
Date :
2014-06-21 16:24:27 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้ก็พูดยากนะ ท่าจะยาว มันพ่วงไปถึงการออกแบบฐานข้อมูลด้วย 5 5 5
เท่าที่ดูแล้วเอาลอจิกไปดีกว่าครับ ค่อยๆคิดไปทีละสเต็ปนะ
มาดูส่วน DB กันก่อน อย่าพึ่งไปยุ่งกับส่วนคิวรี่ HTMLและแบบฟอร์ม
------------------------------------------------------------------------------------
ส่วนฐานข้อมูลเท่าที่อ่านดูจขกทน่าจะออกแบบไว้แบบนี้ ไช่ไหมครับ
(ไม่รู้ว่าเก็บเฉลยลงไปด้วยเปล่า แต่ต้องเก็บนะครับไม่งั้นตรวจไม่ได้)
id (PK)
question
c1
c2
c3
c4
XXXX เฉลย
----------------------------------------------------------------------------------
การออกแบบแบบนี้ ถือว่ามีข้อดีคือมันทำง่าย แต่มีข้อเสียอยู่เยอะพอสมควรกล่าวคือ
ข้อเสีย
- ช้อยจะมีแค่ 4 ตัวเลือกเท่านั้น ไม่สามารถทำได้มากกว่าหรือน้อยกว่านี้
- สุ่มได้แต่ข้อ สุ่มช้อยไม่ได้ ข้อ ก. อยู่ยังไงก้จะอยู่ยังงั้น
- ใช้ได้กับการตอบคำถามแบบปลายปิด แบบคำตอบเดียวเท่านั้น // อันนี้ไม่ซีเรียส เข้าใจว่า จขกท. คงจะบังคับตอบทุกข้อแบบ 1 คำตอบ
----------------------------------------------------------------------------------
**************
มาออกแบบกันใหม่ดีไหมนอมอลไลเซชั่น(เอาซะวิชาการเลย 5 5 5 ) แยกเป็น 2 ตาราง เพื่อความยืดหยุ่น
อย่าพึ่งท้อ อนาคตเราไม่รุ้จะเกิดอะไรขึ้น การออกแบบ DB ที่ดีมีชัยไปกว่าครึ่ง
1. ตารางคำถาม
- Quest_ID (PK_Auto_increment)
- Quest_txt //ข้อความคำถาม
- Quest_Date //วันที่สร้าง
- Quest_By //ผู้สร้าง
2. ตารางคำตอบ
- Ans_ID (PK_Auto_increment)
- Ans_txt //ข้อความคำตอบ
- Ans_type // int1 ใส่รูปแบบไว้ว่าคำตอบนี้ถูกหรือผิด เช่นผิดให้ค่าเป็น 0 ถูกให้ค่าเป็น 1
- Quest_ID (FK)// ข้อที่สังกัด ref มาจาการางแรก
-------------------------------------------------------------------------------------------
อ่านมาถึงตรงนี้แล้ว แน่นอนครับ ผมกำลังบอกว่า รื้อครับรื้อไปทำมาใหม่ ทั้งหมด (ถ้ามีเวลานะ) 5 5 5
|
|
|
|
|
Date :
2014-06-21 16:25:28 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สำหรับปัญหาที่ จขกท . พบเจออยู่ตอนนี้ไม่ไช่การเอาข้อมูลลงดาต้าเบสไม่ได้ครับ แต่อยู่ที่การรวบรวมข้อมูลมาได้ยังไงมากกว่า
EX. อาจารย์คนนึง จะกรอกคะแนนลงช่องในกระดาษให้เด็กนักเรียน แต่ไม่รู้ว่าเด็กได้คะแนนเท่าไรเพราะยังไม่ได้ ตรวจคำตอบ(ประมวลผล) กล่าวคืออาจารย์คนนั้นต้องไป ตรวจข้อสอบ(ประมวลผล) ให้เสร็จก่อนครับถึงจะมากรอกคะแนนลงช่อง(SQL)ได้
**เทคนิค--> ในขึ้นตอนการตรวจนั้นอาจารย์ไม่จำเป็นต้องใช้ กระดาษตัวกรอกคะแนน(SQL)นี้เลย อาจจะทดคะแนนที่ได้ลงกระดาษเศษ(TestCode)ไว้ก่อน แล้วค่อยมากรอกจริงๆภายหลังก็ได้
|
|
|
|
|
Date :
2014-06-21 16:35:01 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เริ่ง งงอย่างไม่หว่า -*- (บอกตรงๆเลยว่าไม่เข้าใจอ่า)
|
|
|
|
|
Date :
2014-06-21 16:47:04 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP) Sample1.php
<?php require_once('Connections/member.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_member, $member);
$query_Recordset1 = "SELECT * FROM testing";
$Recordset1 = mysql_query($query_Recordset1, $member) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_select_db($database_member, $member);
$query_Recordset2 = "SELECT * FROM member";
$Recordset2 = mysql_query($query_Recordset2, $member) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
$server="localhost";
$db_user="root";
$db_pwd="1234";
$db_name="member";
$conn = @mysql_pconnect($server,$db_user,$db_pwd) or die(mysql_error());
mysql_query("SET NAMES UTF8");
@mysql_select_db($db_name,$conn) or die(mysql_error());
session_start();
if($_SESSION['UserID'] == "")
{
echo "Please Login!";
exit();
}
if($_SESSION['Status'] != "ADMIN")
{
echo "This page for Admin only!";
exit();
}
mysql_connect("localhost","root","1234");
mysql_select_db("member");
$strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
?>
<html>
<head>
<script language="javascript">
var win = null;
function NewWindow(mypage,myname,w,h,scroll){
LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
settings =
'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'
win = window.open(mypage,myname,settings)
}
</script>
<style type="text/css">
body,td,th {
font-family: Tahoma;
font-size: 18px;
color: #000;
}
body {
background-color: #FDD0C4;
background-image: url(GB/0-5.jpg);
}
a {
font-family: Tahoma;
font-size: 18px;
color: #000;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #00F;
}
a:hover {
text-decoration: underline;
color: #F00;
}
a:active {
text-decoration: none;
color: #0F0;
}
</style>
</head>
<body>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<p> </p>
<table width="1136" height="627" border="0" align="center">
<tr>
<td height="156" valign="top"><p> </p>
<p></p></td>
</tr>
<tr>
<td valign="top"><p><table width="71%" height="32" border="0" align="right">
<tr>
<td width="100%" height="27" align="right" bgcolor="#F4DFD7"><form name="form1" method="post" action="">
<table width="100%" border="0">
<tr align="center">
<td width="19%"><?=$objResult["Username"];?>
║</td>
<td width="44%"><?=$objResult["Name"];?>
║</td>
<td width="37%"><a href="logout.php">ออกจากระบบ</a></td>
</tr>
</table>
</form></td>
</tr>
</table></p>
<p> </p>
<form name="form1" method="post" action="Sample2.php">
<?
$host="localhost";
$username="root";
$password="1234";
$db="member";
$tb="testing";
mysql_connect( $host,$username,$password) or die(mysql_error());
mysql_select_db($db) or die (mysql_error());
$sql="Select * From $tb order by rand() limit 10";
$db_query=mysql_query($sql);
$i=0;
while($result=mysql_fetch_array($db_query))
{
$i++;
?>
<table width="1125" border="0" align="center">
<tr>
<td width="650"><div align="center">
<input name="id<?=$i;?>" type="hidden" value="<?=$result["id"];?>">
<?=$result["question"];?>
</div></td>
<td width="165"><input type="radio" name="c<?=$i;?>" value="1" checked>
<?=$result["c1"];?></td>
<td width="165"><input type="radio" name="c<?=$i;?>" value="2">
<?=$result["c2"];?></td>
<td width="165"><input type="radio" name="c<?=$i;?>" value="3">
<?=$result["c3"];?></td>
<td width="165"><input type="radio" name="c<?=$i;?>" value="4">
<?=$result["c4"];?>
<input name="answer<?=$i;?>" type="hidden" value="<?=$result["answer"];?>"></td>
</tr>
</table>
<?
}
mysql_close();
?>
<div align="center"><br>
<input type="hidden" name="line" value="<?=$i;?>">
<input type="submit" name="Submit" value="ตรวจคะแนน">
</div>
</form></td>
</tr>
</table>
<p> </p>
</body>
</html>
<?php
mysql_free_result($Recordset1);
mysql_free_result($Recordset2);
?>
|
|
|
|
|
Date :
2014-06-21 16:55:53 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sample2.php
01. <?php
// แทรกบันทัดข้างล่างนี้เพื่อตรวจสอบ
print_r($_REQUEST); exit;
02. $server="localhost";
ก๊อบปี่ รหัสต้นฉบับมาดูกันครับ ว่า sample1 มันส่งอะไรมาให้ sample2 บ้าง
จะได้รู้กันว่า จะต้องเพิ่มอะไร เพราะ code sample1 บอกตรงๆ สะเปะสะปะอยู่มากครับ
dbconnect ก็มีสองที่ select_db ก็มีสองที่ แบบเอาโค๊ดเขามายำ โดยไม่ได้อ่านมากกว่าครับ
ไปโพสผิด topic
|
|
|
|
|
Date :
2014-06-21 17:32:10 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณทุกท่านนะค่ะ แต่ว่า ยังคงไม่ทันเวลาละอ่า ขอบคุณนะ พอดี26นี้ต้องส่งรูปเล่มโปรเจคล่ะ
ผิดไปขอบเขตเดียวอาจานไม่ว่ามากอ่าค่ะ ขอบคุณที่ช่วยกันแก้น่ะค่ะ ขอบคุณจริงๆๆ ^^
|
|
|
|
|
Date :
2014-06-21 18:14:38 |
By :
l3_l3aD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|