2016-07-24 10 views
0

私はこのデータベースに質問用のテーブルと回答用のテーブルが含まれています。質問と回答を更新するにはPHPを使用する必要がありますが、質問と回答を選択するクエリを実行するときには4つの質問と4つの回答または1つの質問一つの答えはここにPHP mysqlの重複データの更新を避けますか?

------------------------------------------------------- --------------------- 
| question           | |  answers  | 
------------------------------------------------------- --------------------- 

PHP server scripts are surrounded by delimiters, which?| | <&>...</&> 
                 | | <?php>...</?> 
                 | | <script>..</script> 
                 | | <?php...?> 

ここにある私の完全なコード

<?php include ("connection.php"); ?> 
<?php 
$msg = ""; 
if (isset($_POST['update'])) { 
    if (is_numeric($_POST['question_id'])) { 

     $question_id = mysqli_real_escape_string($link, htmlspecialchars($_POST['question_id'])); 
     $question_text = mysqli_real_escape_string($link, htmlspecialchars($_POST['question_text'])); 
     $test_id = mysqli_real_escape_string($link, htmlspecialchars($_POST['test_id'])); 

     if ($question_text == "" || $test_id == "") { 
      $msg = "يرجى تعبيئة كافة الحقول"; 
     } else { 
      $sql = mysqli_query($link, " UPDATE `question` SET `question_text`='".$question_text."',`test_id`= '".$test_id."' 
      WHERE `question_id` = '".$question_id."' ")or die(mysqli_error($link)); 

      /* UPDATE `question` SET `question_text`='".."',`test_id`= '".."' WHERE `question_id` =   */ 
     } 
    } else { 
     echo "Error !"; 
    } 
}else { 
    if (isset($_GET['question_id']) && is_numeric($_GET['question_id']) && $_GET['question_id'] > 0) { 

     $question_id = $_GET['question_id']; 

     $query = mysqli_query($link, "SELECT * FROM `question` WHERE `question_id` = '".$question_id."' ") 
       or die(mysqli_error($link)); 
     while ($row = mysqli_fetch_assoc($query)) { 
      $question_id = $row ['question_id']; 
      $question_text = $row ['question_text']; 
      $test_id = $row['test_id']; 


      $query2 = mysqli_query($link,"SELECT * FROM `answers` WHERE answers.question_id = '".$question_id."' ") or die(mysqli_error($link)); 
      while($row2 = mysqli_fetch_assoc($query2)){ 
       $answer_text = $row2 ['answer_text']; 
       $correct = $row2 ['correct']; 

      } 




/* 
SELECT question.question_id,question.question_text,question.test_id,test.test_name 
FROM question,test 
WHERE question.test_id = test.test_id 
AND question.question_id= '".$question_id."' 

*/ 
/* SELECT `answer_text`, `correct` FROM `answers` WHERE answers.question_id = 6 AND answers.correct = 1 */ 
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="RTL" lang="Ar"> 

    <head> 


     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

     <link href="css/style.css" media="screen" rel="stylesheet" type="text/css" /> 

     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 


     <meta http-equiv="refresh" content="30"> 



</head> 

<body> 

    <form method= "POST" action = "" > 



      <p> 
       <label><p>الحقل المخصص للسؤال</p></label> 
       <textarea name = "question_text"><?php echo $question_text ; ?> </textarea> 

      </p> 

      <p> 
       <label>رقم الاختبار</label> 
       <td><input type="text" name="test_id" value="<?php echo $test_id ; ?>" /></td> 
      </p> 

      <p> 
       <label>الخيار الاول</label> 
      <input type="text" name="" value="<?php echo $answer_text ; ?>" /> 
      </p> 
      <p> 
       <label>الخيار الثانى</label> 
       <td><input type="text" name="" value="<?php echo $answer_text ; ?>" /></td> 
      </p> 
       <p> 
       <label>الخيار الثالث</label> 
       <td><input type="text" name="" value="<?php echo $answer_text ; ?>" /></td> 
      </p> 
      <p> 
       <label>الخيار الرابع</label> 
       <td><input type="text" name="" value="<?php echo $answer_text ; ?>" /></td> 
      </p> 


      <p> 

       <input type="submit" name="update" value="تحديث البيانات" class="button save" /> 
      </p> 

      <p> 

       <input type="hidden" name = "question_id" value="<?php echo $_GET['question_id']; ?>" /> 
      </p> 


    </form> 
</body> 
</html> 
<?php 
     } 
    } 
} 


?> 
+1

SQLとそれが与える予期しない結果を入力してください。これはあまりよく構造化された質問ではありません。 –

+0

@JakubKopřivaここに私のコード – mohammed

+0

あなたはまずデータベースに重複した行がないことを確認できますか?次のコマンドを実行することで問題を再現できますか?(xは複数の回答を持つ質問id):select_count(*)from question_id = "x"; – Cathal

答えて

0

さて、問題は、あなたの中のサイクルである私のテーブル構造です。コードはあまりきれいではありませんが、すべての質問ではなく、すべての質問に4回同じ回答(最後にmysqlデータベースにあります)を印刷しています。私はコードを実行することができないので、これを試すことができます、私はtypoがないかどうかはわかりません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="RTL" lang="Ar"> 

    <head> 


     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

     <link href="css/style.css" media="screen" rel="stylesheet" type="text/css" /> 

     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 


     <meta http-equiv="refresh" content="30"> 



</head> 

<body> 

    <form method= "POST" action = "" > 

<?php include ("connection.php"); ?> 
<?php 
$msg = ""; 
if (isset($_POST['update'])) { 
    if (is_numeric($_POST['question_id'])) { 

     $question_id = mysqli_real_escape_string($link, htmlspecialchars($_POST['question_id'])); 
     $question_text = mysqli_real_escape_string($link, htmlspecialchars($_POST['question_text'])); 
     $test_id = mysqli_real_escape_string($link, htmlspecialchars($_POST['test_id'])); 

     if ($question_text == "" || $test_id == "") { 
      $msg = "يرجى تعبيئة كافة الحقول"; 
     } else { 
      $sql = mysqli_query($link, " UPDATE `question` SET `question_text`='".$question_text."',`test_id`= '".$test_id."' 
      WHERE `question_id` = '".$question_id."' ")or die(mysqli_error($link)); 

      /* UPDATE `question` SET `question_text`='".."',`test_id`= '".."' WHERE `question_id` =   */ 
     } 
    } else { 
     echo "Error !"; 
    } 
}else { 
    if (isset($_GET['question_id']) && is_numeric($_GET['question_id']) && $_GET['question_id'] > 0) { 

     $question_id = $_GET['question_id']; 

     $query = mysqli_query($link, "SELECT * FROM `question` WHERE `question_id` = '".$question_id."' ") 
       or die(mysqli_error($link)); 
     $isFirst = TRUE; 
     while ($row = mysqli_fetch_assoc($query)) { 
      $question_id = $row ['question_id']; 
      $question_text = $row ['question_text']; 
      $test_id = $row['test_id']; 
      if ($isFirst) { 
?> 
      <p> 
       <label>رقم الاختبار</label> 
       <td><input type="text" name="test_id" value="<?php echo $test_id ; ?>" /></td> 
      </p> 
      <?php 
       $isFirst = FALSE; 
      } 
      ?> 
      <p> 
       <label><p>الحقل المخصص للسؤال</p></label> 
       <textarea name = "question_text"><?php echo $question_text ; ?> </textarea> 

      </p> 
<?php 
      $query2 = mysqli_query($link,"SELECT * FROM `answers` WHERE answers.question_id = '".$question_id."' ") or die(mysqli_error($link)); 
      while($row2 = mysqli_fetch_assoc($query2)){ 
       $answer_text = $row2 ['answer_text']; 
       $correct = $row2 ['correct']; 



/* 
SELECT question.question_id,question.question_text,question.test_id,test.test_name 
FROM question,test 
WHERE question.test_id = test.test_id 
AND question.question_id= '".$question_id."' 

*/ 
/* SELECT `answer_text`, `correct` FROM `answers` WHERE answers.question_id = 6 AND answers.correct = 1 */ 
?> 
      <p> 
       <label>الخيار الاول</label> 
      <input type="text" name="" value="<?php echo $answer_text ; ?>" /> 
      </p> 
<?php 
      } 
      ?> 
      <p> 
       <input type="submit" name="update" value="تحديث البيانات" class="button save" /> 
      </p> 

      <p> 
       <input type="hidden" name = "question_id" value="<?php echo $_GET['question_id']; ?>" /> 
      </p> 
      <?php 
     } 
    } 
} 
?> 


    </form> 
</body> 
</html> 
+0

あなたの努力に感謝しています – mohammed

関連する問題