台灣最大程式設計社群網站
線上人數
1160
 
會員總數:246277
討論主題:189813
歡迎您免費加入會員
討論區列表 >> PHP >> 關於取題取內容問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於取題取內容問題
價值 : 10 QP  點閱數:1385 回應數:14
樓主

林鑫宏
門外漢
0 10
200 26
發送站內信

如標題,我目前所做的只是資料集取資料出來而已,如果我想要讓我的資料集rs3取出的題目加以隨機抽取呢?
EX目前我rs3的資料有200比但是我目前出題是200筆都出現,有辦法變成我200題取50題然後隨機排列呢???
我附上我目前考試取題的php



本篇文章發表於2011-11-13 14:38
1樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
隨機選題200取50
是邏輯問題,加上一部份你的程式問題

1.隨機排序
2.MySQL筆數取50
本篇文章回覆於2011-11-14 01:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

林鑫宏
檢舉此回應
我要的是MYSQL上有的資料不管有幾題我只要取固定的題數然後隨機排列
本篇文章回覆於2011-11-14 09:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
蔥大不是回答的很明白。

先隨機排序後再取50題啊???這不就是你要的??
還是你不知道如何這樣下語法。

請說清楚明白。這樣才好回答你。
本篇文章回覆於2011-11-14 09:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

林鑫宏
檢舉此回應
耶~我解決了= ="
我在資料及裡面加上
這樣就可以了,但是有人知道limit 50的這個50可以變成取資料庫中的欄位做更變嗎?我想讓它變成一個變數而且讓老師自己改隨機取題的數
本篇文章回覆於2011-11-14 12:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
limit 50用欄位變更????
你這因該是用程式寫出來的吧,怎麼不用程式直接帶值進去不就好了。為什麼還要自找麻煩還用SQL帶值?

你那個排序的寫法??那是比例取值法。並非是完全的亂數。而且你還得要增加一個比例分配的欄位才行。如果該欄位的值都是同值的話。
那就跟直接用RAND()沒什麼兩樣。

我相信你是從人家問的權重取值法學過來的。

不知道你是否有將該篇文章看到最後呢?

你可以將你的需求用範例的方式再說清楚。這樣才好給你意見及改法。
要不然你的基礎不好的情況下,問東西問不出所以然也無法解釋的很清楚。
人家也很難幫你的。

本篇文章回覆於2011-11-14 15:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

林鑫宏
檢舉此回應
請問網頁表單送出後出現
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2' at line 1
這是甚麼問題呢???
本篇文章回覆於2011-11-14 19:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
人品問題





起碼把你的query的語法弄出來,天曉得你query了啥鳥
本篇文章回覆於2011-11-14 20:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
唉~~~這錯誤訊息光看英文意思也該知道是什麼問題吧。
難不成你連「You have an error in your SQL syntax;」這句也不知道意思嗎???用一下GOOGLE的翻譯也該了解什麼意思吧。

連這也要問,然後也不說清楚。程式碼全自已自我意念行就行的感覺。完全不聽人家的,也不說你的錯誤,也不說你想做的東西。

那我們就只能像#7的答案。人品問題啦!!!

你問個問題一問三不知。再問問更多,三問無知謂。

你之前問的東西就已經犯了這樣的毛病,東西都不說清楚,讓回答者一問三不知,無視回答者。
你再這樣,就只好將你列為黑名單,不再回答你的問題了。
本篇文章回覆於2011-11-15 10:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

林鑫宏
檢舉此回應
那些問題都解決了,You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2' at line 1這個的問題是,MYSQL的資料有錯誤因為好像含有%和'的小寫資料吧!我只是當初一直跑不出資料覺得很納悶為何小寫的%和'不能跑入資料集呢?
還有關於取題我將其php寫成這樣,不知這樣子會不會有所問題呢?
本篇文章回覆於2011-11-15 21:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

林鑫宏
檢舉此回應
關於我要的我能否把上面的PHP裡的ORDER BY rand() limit 50這個50變成利用前一頁POST數字進去呢?而我測試了如果我用資料集隨機取出題目,但是紀錄的答案卻沒有辦法與經過隨機抽取的題目答案相符合,EX我取出了第2.3.4.5.6題經過ORDER BY rand()排列為6.2.5.3.4這樣,但是我的考完之後的紀錄頁存檔時卻變成題目是6.2.5.3.4但是答案卻還是2.3.4.5.6這樣附上我的考完送出和紀錄頁面


以及查詢歷史紀錄的頁面
<?php require_once('../Connections/engtest.php'); ?>
<?php
$colname_rs = "-1";
if (isset($_GET['acc'])) {
$colname_rs = (get_magic_quotes_gpc()) ? $_GET['acc'] : addslashes($_GET['acc']);
}
mysql_select_db($database_engtest, $engtest);
$query_rs = sprintf("SELECT * FROM stu WHERE s_acc = '%s'", $colname_rs);
$rs = mysql_query($query_rs, $engtest) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs = mysql_num_rows($rs);

$colname_rs3 = "-1";
if (isset($_GET['teid'])) {
$colname_rs3 = (get_magic_quotes_gpc()) ? $_GET['teid'] : addslashes($_GET['teid']);
}
mysql_select_db($database_engtest, $engtest);
$query_rs3 = sprintf("SELECT * FROM tea_testing a left outer join itemtest b on a.it_id = b.i_id WHERE a.te_id = %s", $colname_rs3);
$rs3 = mysql_query($query_rs3, $engtest) or die(mysql_error());
$row_rs3 = mysql_fetch_assoc($rs3);
$totalRows_rs3 = mysql_num_rows($rs3);

$colname_rs2 = "-1";
if (isset($_GET['id'])) {
$colname_rs2 = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_engtest, $engtest);
$query_rs2 = sprintf("SELECT * FROM stu_testing WHERE st_id = %s", $colname_rs2);
$rs2 = mysql_query($query_rs2, $engtest) or die(mysql_error());
$row_rs2 = mysql_fetch_assoc($rs2);
$totalRows_rs2 = mysql_num_rows($rs2);
?><!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
<style type="text/css">
<!--
.style4 {
font-size: 12px;
color: #000;
font-family: "微軟正黑體";
}
.style6 {
color: #000;
font-weight: bold;
font-family: "微軟正黑體";
font-size: 24px;
}
.style17 {
color: #000;
font-size: 12px;
font-family: "微軟正黑體";
text-align: right;
}
.style19 {
color: #233511;
font-weight: bold;
font-size: 12px;
font-family: "微軟正黑體";
}
.style20 {color: #FF0000}
.style21 {font-size: 12px; color: #330099; }
-->
</style>
</head>

<body>
<div align="center">
<table width="100%" border="0">
<tr>
<td><div align="center" class="style6">線上考試</div></td>
</tr>
</table>
<?php

$aa=split(",",$row_rs2['st_an']);

?><br />
<a href="Javascript:OnClick=history.back()" class="style4">上一頁</a>
<table width="213" border="0">
<tr>
<td class="style17">班級</td>
<td bgcolor="#EEF7E6"><span class="style4"><?php echo $row_rs['s_room']; ?></span></td>
</tr>
<tr>
<td class="style17">姓名</td>
<td bgcolor="#EEF7E6"><span class="style4"><?php echo $row_rs['s_name']; ?></span></td>
</tr>
<tr>
<td class="style17">總分</td>
<td width="138" bgcolor="#EEF7E6"><div align="left" class="style4"><?php echo $_GET['nn']; ?></div></td>
</tr>
</table>


<form id="form1" name="form1" method="post" action="stu_test3.php">
<?php

$j=0;
do { ?>
<table width="657" border="0">
<tr>
<td colspan="2" bordercolor="#D4D0C8" bgcolor="#E9F3DE"><div align="left"><a href="view.php?num=<?php echo $j?>&amp;id=<?php echo $_GET['id']?>&amp;te_id=<?php echo $row_rs3['te_id']; ?>" class="style4"></a><a href="view.php?num=<?php echo $j?>&amp;id=<?php echo $_GET['id']?>&amp;te_id=<?php echo $row_rs3['te_id']; ?>" class="style4">查看答對答錯率</a></div></td>
</tr>
<tr>
<td width="27" bordercolor="#D4D0C8" bgcolor="#DCEDCB"><div align="left" class="style19">
<div align="center"><?php echo $ii+=1;

?></div>
</div></td>
<td width="514" bordercolor="#D4D0C8" bgcolor="#DCEDCB"><div align="left" class="style19">Q:<?php echo $row_rs3['it_item']; ?>(
<?php




if($row_rs3['it_type']=="1"){
echo "單選題";

}elseif ($row_rs3['it_type']=="0"){
echo "是非題";

} elseif ($row_rs3['it_type']=="2"){
echo "填充題";

}




?>
)</div></td>
</tr>
<tr>
<td><span class="style4"></span></td>
<td bgcolor="#F7FBF2"><div align="left" class="style4">A:<?php echo $row_rs3['item1']; ?></div></td>
</tr>
<tr>
<td><span class="style4"></span></td>
<td bgcolor="#F7FBF2"><div align="left" class="style4">B:<?php echo $row_rs3['item2']; ?></div></td>
</tr>
<?php //if($row_rs3['it_type']=="1"){?>
<tr>
<td><span class="style4"></span></td>
<td><div align="left" class="style4">C:<?php echo $row_rs3['item3']; ?></div></td>
</tr>
<tr>
<td><span class="style4"></span></td>
<td bgcolor="#F7FBF2"><div align="left" class="style4">D:<?php echo $row_rs3['item4']; ?></div></td>
</tr>
<tr>
<td><span class="style4"></span></td>
<td bgcolor="#F7FBF2"><div align="left" class="style4 style20">解答:<?php echo $row_rs3['an']; ?></div></td>
</tr>
<tr>
<td><span class="style4"></span></td>
<td bgcolor="#F7FBF2"><div align="left" class="style21">學生選擇:<?php

echo $aa[$j];

if ($aa[$j]==$row_rs3['an']){
echo "<font color=forestgreen >(答對)</font>";
}else{
echo "<font color=red>(答錯)</font>"; }

?></div></td>
</tr>
<?php

//}?>
</table>
<?php
$j+=1;
} while ($row_rs3 = mysql_fetch_assoc($rs3)); ?></form>
</div>
</body>
</html>
<?php
mysql_free_result($rs);

mysql_free_result($rs3);

mysql_free_result($rs2);
?>
不知道我在這過程的哪邊出了錯呢= ="一直找不到還有#7和#8的大大真的很抱歉
不是我無視是我的帳號給我的組員用他們回答的根本不是我本人,我只是一直在除錯卡住了我就要他們幫忙找一下解決辦法,誰知道...
真的很抱歉ˊˋ
幫忙指點一下我的網頁哪邊出了問題,如果你們想看做好的我有暫時放在網路上測試我會再給你們網址去看看!~請幫小弟弟我解決一下問題= ="我寫這些寫到快瘋掉了ˊˋ都沒人肯幫我連組員都只是插花= =全部由我一手包辦= =真的很累
本篇文章回覆於2011-11-15 22:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

林鑫宏
檢舉此回應
= ="阿哩最後 一個頁面沒有用到php的窗= ="不知道這樣子你們是不是看得懂呢
本篇文章回覆於2011-11-15 22:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
了解,先暫時原諒你吧。

不過你要注意,就算是別人用你的帳號。對我們來講還是視同您的。所以盡量不要讓別人來使用您的帳號,這樣會造成錯覺及誤會。

我有發現你是用dw來做的。
其中這一段
sprintf("SELECT * FROM tea_testing a left outer join itemtest b on a.it_id = b.i_id WHERE a.te_id = %s", $colname_rs3);
因該是你要用取代式的方式來處理你的sql字串。

不過有一點要注意。你的%s並未用單引號包住,這會變成該條件只能接受數字。
如果你的$colname_rs3並非是數字的情況,這會造成SQL語法的錯誤。(空值也算是非數字)

由於這一類的SQL語法我看很多處都有,我想你碰上的問題因該就是這些。因為替代過來的字並非是數字,所以就會讓SQL無法了解這段語句而發生錯誤。

一般來說,我看你的條件大多是有尾ID的字樣,理論上來講這些因該是數字才對。但如果還是會錯誤,那就是可能你要替代的字是空值的情況了。
所以你最主要的問題因該還是在參數上空值產生的可能性。

另外,為何你每一次下SQL都還要跑一次mysql_select_db啊~~~我看你都是讀同一個資料庫啊,沒必要每次都再連結一次吧。
本篇文章回覆於2011-11-16 11:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

林鑫宏
檢舉此回應
關於mysql_select_db這一行那是DW每多一個資料及就會自動去新增,所以我就沒有多去理會他,那如果我把%s通通變成'%s'但之中的值有數字或其他的文字這樣OK嗎?
而且我在

這一頁的rs3資料集中的ORDER BY rand() limit 50可以把他的50用'".$_POST['前頁送出的值']."'
這樣子會不會有問題呢?那如我我是用POST的值取題目的,那麼我在紀錄的頁面又要怎麼樣存下資料呢?
而他的題目會是正確的排列和答案,因為我用隨機抽題的這樣取題之後,反而變成存到資料庫中的歷史考試紀錄的題目和答案卻沒有辦法對上= ="是否是我存答案時發生了問題呢???
本篇文章回覆於2011-11-16 16:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
因為你處理答案的方式不對。
你題目跟答案是各自分開讀取的。正常來講最好是用關聯式的取得方式。
這樣不管題目如何的打亂。答案一定是跟著題目跑。

還有~~~建議你~~不要再用DW編輯程式了。
你會被它害死:請先學習好基礎後,再來使用DW處理。

看你的程式碼,就有點想昏頭的感覺。
本篇文章回覆於2011-11-17 10:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.