2015-05-09 94 views
2

我的代碼基本上覆蓋了學生向特定教授提交的請求(對於容量已滿的類)。假設有兩名學生要求對同一個班級進行重寫,當教授登錄時,代碼通過選擇接受/拒絕來獲取兩個重寫請求,當我作爲教授接受/拒絕單個重寫請求時,它會這兩個覆蓋請求的行動,而不是我選擇的。表單向數據庫提交多個條目而不是單個

基本上它不接受/拒絕所選的請求,它對所有覆蓋都做同樣的動作。

代碼:

<?php 
} else if ($usertype == 1) { 
$server = ""; 
$user = ""; 
$pass = ""; 
$db = ""; 
$db2 = ""; 
$db3 = ""; 
$user1 = $_SESSION['username']; 
$mysqli = new Mysqli($server, $user, $pass, $db) or mysqli_error($mysqli); 
$mysqli2 = new Mysqli($server, $user, $pass, $db2) or mysqli_error($mysqli); 
$mysqli3 = new Mysqli($server, $user, $pass, $db3) or mysqli_error($mysqli); 

$status= $mysqli->query("SELECT status FROM Overrides WHERE professor = '$user1'")->fetch_object()->status; 
$overrides = $mysqli->query("SELECT * FROM Overrides WHERE professor = '$user1'"); 
$num_rows = mysqli_num_rows($overrides); 
?> 
      <form method="post" action="dbheads.php" name="HF" id="HF" autocomplete="off"> 
      <script type="text/javascript"> 
    function submitForm(action) 
    { 
     document.getElementById('HF').action = action; 
     document.getElementById('HF').submit(); 
    } 
</script> 
<?php if ($status == 1) { 

echo "&nbsp;Overrides today: " . $num_rows; 
?> 
    <?php 
    while($row = mysqli_fetch_array($overrides)) { ?> 
    <fieldset> <?php 
     echo "First Name:&nbsp;&nbsp; " . $row['name'] . "<br />"; 
     echo "<br />Mid. Name:&nbsp;&nbsp; " . $row['mname'] . "<br />"; 
     echo "<br />Fam. Name:&nbsp;&nbsp; " . $row['fname'] . "<br />"; 
     echo "<br />Student ID:&nbsp;&nbsp;&nbsp;&nbsp;" . $row['sid'] . "<br />"; 
     echo "<br />Scolarship:&nbsp;&nbsp;&nbsp;&nbsp; " . $row['sc'] . "<br />"; 
     echo "<br />Phone No:&nbsp;&nbsp;&nbsp;&nbsp; " . $row['phone'] . "<br />"; 
     echo "<br />Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " . $row['email'] . "<br />"; 
     echo "<br />Subject:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " . $row['subject'] . "<br />"; 
     echo "<br />Section:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " . $row['section'] . "<br />"; 
     echo "<br />Semester:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " . $row['semester'] . "<br />"; 

      $name = $row['name']; 
      echo "<input type='hidden' name='name' value='$name'>"; 
     $mname = $row['mname']; 
     echo "<input type='hidden' name='mname' value='$mname'>"; 
     $fname = $row['fname']; 
     echo "<input type='hidden' name='fname' value='$fname'>"; 
     $sid = $row['sid']; 
     echo "<input type='hidden' name='sid' value='$sid'>"; 
     $sc = $row['sc']; 
     echo "<input type='hidden' name='sc' value='$sc'>"; 
     $phone = $row['phone']; 
     echo "<input type='hidden' name='phone' value='$phone'>"; 
     $email = $row['email'];     
      echo "<input type='hidden' name='email' value='$email'>"; 
     $subject = $row['subject']; 
        echo "<input type='hidden' name='subject' value='$subject'>"; 
     $section = $row['section']; 
        echo "<input type='hidden' name='section' value='$section'>"; 
     $semester = $row['semester']; 
        echo "<input type='hidden' name='semester' value='$semester'>"; 

     ?> 
<br /> 
<div> 
<label for="comments" accesskey="c">Notes & Comments:</label><br /> 
<input type="textarea" name="comments" id="comments" cols="35" rows="10"> 
<br> 
</div> 
<br> 
<script type="text/javascript"> 
    function submitForm(action) 
    { 
     document.getElementById('HF').action = action; 
     document.getElementById('HF').submit(); 
    } 
</script> 

... 

<input type="button" onclick="submitForm('dbheads.php')" value="Accept" /> 
<input type="button" onclick="submitForm('dbheads2.php')" value="Deny" /></form> 

    </fieldset> 
    <br> 
<?php  } } 
?> 
<br /> 

dbheads.php

<?php 
include_once 'includes/db_connect.php'; 
include_once 'includes/functions.php'; 
sec_session_start(); 
?> 
<html> 

    <?php 
    $mysql_host  = ""; 
    $mysql_username = ""; 
    $mysql_password = "r!~"; 
    $mysql_database = ""; 
    $user = $_SESSION['username']; 
     if (login_check($mysqli) == true) : ?> 
       <p>Welcome <?php echo htmlentities($user); ?>!</p> 
       <?php 
    $mysqli = new Mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_database) or die(mysqli_error()); 
    $status = 2; 

    $stmt = $mysqli->prepare("UPDATE Overrides SET status=? WHERE username='$user'"); 
    $stmt->bind_param("s", $status); 
    $stmt->execute(); 
    echo htmlentities(accepted); 
    ?> 
      <?php else : ?> 
       <p> 
        <span class="error">You are not authorized to access this page.</span> Please <a href="index.php">login</a>. 
       </p> 
      <?php endif; ?> 

    </html> 

bheads2.php

<html> 

<?php 
$mysql_host  = ""; 
$mysql_username = ""; 
$mysql_password = ""; 
$mysql_database = ""; 
$user = $_SESSION['username']; 
    if (login_check($mysqli) == true) : ?> 
      <p>Welcome <?php echo htmlentities($user); ?>!</p> 
      <?php 
$mysqli = new Mysqli($mysql_host, $mysql_username, $mysql_password, $mysql_database) or die(mysqli_error()); 
$status = 5; 

$stmt = $mysqli->prepare("UPDATE Overrides SET status=? WHERE username='$user'"); 
$stmt->bind_param("s", $status); 
$stmt->execute(); 
echo htmlentities(denied); 
?> 
     <?php else : ?> 
      <p> 
       <span class="error">You are not authorized to access this page.</span> Please <a href="index.php">login</a>. 
      </p> 
     <?php endif; ?> 

</html> 

我如何能解決這個問題的任何幫助嗎?我是一個初學者,所以忽略了凌亂的代碼。

+0

您可以發佈您的代碼,當您單擊接受或拒絕請更新數據庫請 – Polaris

+0

@Polaris完成,補充說。 –

回答

-1

似乎你用下面的查詢

$stmt = $mysqli->prepare("UPDATE Overrides SET status=? WHERE username='$user'") 

這簡直是說,其中用戶名登錄的人或使用該頁面將更新爲您所選擇的狀態更新數據庫,你對每一行覆蓋都有一個唯一的標識符? Override_ID也許。

如果是的話我會取你的第一頁上的數據,並把它變成像其他數據隱藏的輸入,然後使用以下查詢:

$ovid = $_POST['ovid']; 
$stmt = $mysqli->prepare("UPDATE Overrides SET status=? WHERE override_id='$ovid'") 

編輯:

也似乎更新WHERE username='$user'而不是WHERE professor='$user'更新頁面

+0

我目前使用的唯一標識符是登錄的用戶名。我只是希望它一次更新一個提交,但是當前當我接受/拒絕重寫時,它會接受/拒絕所有重寫。 –

+0

如果數據庫中存在唯一字段,則一次只能執行一次,最佳做法是將該字段作爲主鍵並自動增量,以使其始終是唯一的。你可以發佈你的數據庫結構? – Polaris

+0

不確定它是否相關,但是在你正在使用的更新頁面上,WHERE username ='$ user'',不應該是'WHERE professor ='$ user''就像你原來的陳述嗎? – Polaris