2015-05-15 6 views
2

мой код извлекает записи из базы данных и печатает их в отдельных формах, чтобы я мог принимать или отклонять каждый из них с помощью кнопок разных действий. Всякий раз, когда я выполняю действие в одной из форм, он не будет выполнять операцию в той же форме, но вместо этого он перемещается по порядку, начиная с первой записи в базе данных.Получение и отправка данных в базу данных

enter image description here

В приведенном выше рисунке, если я принял вторую форму, она будет выполнять функцию на первой форме.

Код:

<?php 
} else if ($usertype == 1) { 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(-1); 
$server = ""; 
$user = ""; 
$pass = "r=~"; 
$db = ""; 
$db3 = "aukwizcq_professors"; 
$user1 = $_SESSION['username']; 
$mysqli = new Mysqli($server, $user, $pass, $db) or mysqli_error($mysqli); 
$mysqli5 = new Mysqli($server, $user, $pass, $db3) or mysqli_error($mysqli); 
$name= $mysqli5->query("SELECT name FROM professor WHERE username= '$user1'")->fetch_object()->name; //taking name from list of professors that are equal to the userid logged in (if hes a professor, it will show, if not 0) 
$overrides = $mysqli->query("SELECT * FROM Overrides WHERE professor= '$name' AND status ='1'"); 
$num_rows = mysqli_num_rows($overrides); 



echo "&nbsp;Pending Overrides: " . $num_rows; 
?> 
    <?php 
    while($row = mysqli_fetch_array($overrides)) { ?> 
    <fieldset> 
        <form method="post" action="dbheads.php" name="HF" id="HF" autocomplete="off"> 

    <?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 />"; 
        echo "<br />Professor:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " . $row['professor'] . "<br />"; 

        $id = $row['id']; 
        echo "<input type='hidden' name='id' value='$id'>"; 
      $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'>"; 
     //$professor = $row['professor']; 
       // echo "<input type='hidden' name='professor' value='$professor'>"; 



     ?> 
<br /> 
<div> 
<label for="comments" accesskey="c">Notes & Comments:</label><br /> 
<textarea name="comments" id="comments" cols="50" rows="5"></textarea> 
<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  
} 

?> 

dbheads.php

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

<?php 
$mysql_host  = "localhost"; 
$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 = 2; 
$id = $_POST['id']; 

$stmt = $mysqli->prepare("UPDATE Overrides SET status=? WHERE id='$id'"); 
$stmt->bind_param("s", $status); 
$stmt->execute(); 
print 'Error : ('. $mysqli->errno .') '. $mysqli->error; 
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> 

Любая помощь для крепления пожалуйста?

ответ

0

Это потому, что вы отправляете форму по ID, и у вас есть одинаковый идентификатор (он недействителен) для всех форм.

если вы сделаете уникальный идентификатор для формы, как это:

<form method="post" name="HF" id="HF_<?php echo $row['id'] ?>" autocomplete="off"> 

И после того, как вы измените JavaScript, как это:

document.getElementById('HF_<?php echo $row['id'] ?>').action = action; 
document.getElementById('HF_<?php echo $row['id'] ?>').submit(); 

Он будет работать

Если я могу немного улучшите свой код. У меня есть эти предложения для вас:

Если вы будете использовать Вам не нужно больше вашего JavaScript, и вы можете проверить, какая кнопка была представлена ​​в PHP (передовая практика). Пример:

<form method="post" name="HF" id="HF_<?php echo $row['id'] ?>" autocomplete="off"> 
     <input type="hidden" name="HF[id]" /> 
     <input type="hidden" name="HF[name]" /> 
     <input type="hidden" name="HF[mname]" /> 
     <input type="hidden" name="HF[fname]" /> 
     <input type="hidden" name="HF[sid]" /> 
     <button type="submit" value="1" name="HF[accept]">Accept</button> 
     <button type="submit" value="1" name="HF[reset]">Reset</button> 
    </form> 

И PHP тестирование

if(isset($_POST['HF'])){ 
    if($_POST['HF']['accept']){ 
     // do accept 
    } 
    elseif($_POST['HF']['reset']){ 
     // do reset 
    } 
} 

Если вы видите, я не нужно устанавливать отдельные действия за каждое действие и у меня есть форма префикс и это означает, что я могу отправить несколько форм на эту ссылку, но только один будет обработан

+0

hello lukas, я проверил ваше первое исправление, изменил javascript и идентификатор формы, но он по-прежнему представляет формы в порядке, а не тот, который я выбираю. –

+0

на самом деле это сработало! СПАСИБО ЛУКАС! +1 –

0

Есть одна вещь, на мой взгляд: Вы используете JS

<script type="text/javascript"> 
    function submitForm(action) 
    { 
     document.getElementById('HF').action = action; 
     document.getElementById('HF').submit(); 
    } 
</script> 

представить свою форму на основе формы ID. Но вы предоставили одинаковый идентификатор для всех форм, сгенерированных в цикле. И JS выполняет первое обнаружение ID.

Смежные вопросы