3

我搜索了档案,这个问题似乎最接近我自己的问题。但是,不幸的是,我无法从中得出解决方案。我有一个用户填写的表单,用于从大型测验数据库创建问题列表。这些问题按科目分类并按难度分级(1、2、3、4)。用户可以通过选择主题和难度来创建问题列表。它工作正常。但是,我们在某些科目上没有很多 1 年级的问题,因此希望将 1 和 2 组合成一个“简单”等级。表单的选项列表工作正常,如下所示,但我希望第二个选项搜索值 1&2 而不仅仅是 2。这是相关的表单代码(它不包括所有主题细节,只是难度选择):

<form action="" method="post" id="quizbuilder">
  <table width="400" border="0">
  <tr>
    <td>number of questions</td>
    <td><input name="quizSize" type="number" value="20" size="2" maxlength="2" min="1" max="50" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>difficulty</td>
    <td><select name="grade">
    <option value="%" selected="selected">any</option>
    <option value="2">easy</option>
      <option value="3">medium</option>
      <option value="4">difficult</option>
    </select>
    <td>&nbsp;</td>
  </tr>
  <tr>

查询如下所示:

mysql_select_db($database_qbquery, $qbquery);
$query_userquiz = sprintf("SELECT * FROM questions WHERE (grade LIKE %s) AND (topic1 LIKE %s OR topic2 LIKE %s OR topic3 LIKE %s) ORDER BY RAND() LIMIT %s", GetSQLValueString($userGrade_userquiz, "text"),GetSQLValueString($userTopic_userquiz, "text"),GetSQLValueString($userTopic_userquiz, "text"),GetSQLValueString($userTopic_userquiz, "text"),GetSQLValueString($userQuizSize_userquiz, "int"));
$userquiz = mysql_query($query_userquiz, $qbquery) or die(mysql_error());
$row_userquiz = mysql_fetch_assoc($userquiz);
$totalRows_userquiz = mysql_num_rows($userquiz);

当然,我想做的只是:

<option value="1,2">easy</option>

但我知道这行不通,因为它被读取为字符串而不是值。任何帮助将不胜感激,我现在​​头晕目眩,看起来应该很简单,但对我来说不是。

4

1 回答 1

0

正如我在评论中发布的那样,您可以在使用它之前轻松爆炸值:

$value = $_POST['name'];
$name = explode( ',', $value );

现在你在这里有一个数组,有 1 个或多个值,你可以根据需要使用它们。但有点不清楚,你期望的最终代码是什么。

PS:记得在将它们提供给您的查询之前进行一些额外的 sql 注入检查。

于 2013-01-08T12:36:35.877 回答