3

私はアーカイブを検索しましたが、この質問は私自身に最も近いようです。しかし、残念ながら私はそれから解決策を導き出すことができませんでした。大規模なクイズデータベースから質問のリストを作成するためにユーザーが記入するフォームがあります。質問は科目ごとに分類され、難易度(1、2、3、4)で評価されます。ユーザーは、主題と難易度を選択することにより、質問のリストを作成できます。正常に動作します。ただし、一部の科目についてはグレード1の質問があまりないため、1と2を1つの「簡単な」グレードにまとめたいと考えています。フォームのオプションリストは以下のように正常に機能しますが、2番目のオプションで2だけでなく値1と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 に答える