2016-07-25 4 views
0

Похоже, что все работает отлично с этим кодом, но на самом деле не удается обновить базу данных, данные отображаются правильно при извлечении данных, но когда я нажимаю кнопку обновления, данные исчезают, но обновление отсутствует был выполнен. Это выглядит хорошо для меня, но кажется, что я ошибаюсь. Это проект для моего профессора, поэтому мне не нужны инъекции SQL и другие.Не удалось обновить новые данные, введенные администратором

<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="btnstyle.css"> 
    <title>Managament System</title> 
</head> 

<body> 

    <h1>TU Chemnitz Student managament system</h1> 

    <br> 
    <a href="insert_form.html" class="myButton">ADD Person</a> 
    <a href="insert_form.html" class="myButton">Edit Person</a> 
    <a href="insert_form.html" class="myButton">Manage Boards</a> 
    <a href="insert_form.html" class="myButton">Manage Departments</a> 
    <a href="search_personel.html" class="myButton">Search N&S</a> 
    <a href="three_search.html" class="myButton">Triple Search</a> 
    <a href="mtable.php" class="myButton">Membership</a> 

    <br> 
    <br> 

<?php 

// set database server access variables: 
$host = "localhost"; 
$user = ""; 
$pass = ""; 
$db = ""; 

// open connection 
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!"); 

// select database 
mysql_select_db($db) or die ("Unable to select database!"); 

// create query 
$querys = "SELECT * FROM tblperson"; 



// execute query 
$result = mysql_query($querys) or die ("Error in query: $query. ".mysql_error()); 


echo "<table border=1 align=center> 
<tr> 
<th>Personal ID</th> 
<th>First Name</th> 
<th>Last Name</th> 
<th>Deparment</th> 
<th>Board</th> 
<th>Marticulation Number</th> 
<th>Reg Date</th> 
<th>Action</th> 

</tr>"; 
while($row = mysql_fetch_array($result)) { 
    ?> 
    <?php 
     echo '<tr>'; 
     echo '<td>'. $row['personid'].'</td>'; 
     echo '<td>'. $row['personname'].'</td>'; 
     echo '<td>'. $row['personsurname'].'</td>'; 
     echo '<td>'. $row['persondepartment'].'</td>'; 
     echo '<td>'. $row['personboard'].'</td>'; 
     echo '<td>'. $row['martinumber'].'</td>'; 
     echo '<td>'. $row['personregdate'].'</td>'; 
     echo '<td>'.'<a href="edit20.php?edit='.$row['personid'] . '"> EDIT </a> '.'</td>'; 

} 
?> 
</body> 
</html> 

и это файл редактирования, который кажется проблематичным.

<?php 

include_once('coneksioni.php'); 

if(isset($_GET['edit'])) 
{ 
     $personid = $_GET['edit']; 
     $res = mysql_query("SELECT * FROM tblperson WHERE personid='$personid'"); 
     $row = mysql_fetch_array($res); 
} 
     if(isset($_POST['newpersonname'])) 
     { 
      $newpersonname = $_POST['newpersonname']; 
      $personid = $_POST['personid']; 
      $sql = "UPDATE tblperson SET personname = '$newpersonname' WHERE personid = '$personid'"; 
      $res = mysql_query($sql) or die ("Cant be updated"); 
      echo "< meta http-equiv='refresh' content='0;url=home.php'>"; 
     } 
?> 


    <form action="edit20.php" method="POST"> 
    <table border="0"> 
     <tr> 
     <td>First Name</td> 
     <td><input type="text" name="newpersonname" value="<?php echo $row[1];?>" maxlength="30" size="13"></td> 
     </tr> 
     <tr> 
     <td>Last Name</td> 
     <td> <input type="text" name="personsurname" value="<?php echo $row[2];?>" maxlength="30" size="30"></td> 
     </tr> 
     <tr> 
     <td>Department</td> 
     <td> 
      <select name='persondepartment'> 
      <option>Production</option> 
      <option>Sales</option> 
     </select> 
     </td> 
     </tr> 
     <tr> 
     <td>Board</td> 
     <td> 
      <select name='personboard'> 
      <option>Evaluation</option> 
      <option>Executive</option> 
      <option>Research</option> 
     </select> 
     </td> 
     </tr> 
     <tr> 
     <td>Marticulation Number</td> 
     <td> <input type="text" name="martinumber" maxlength="60" size="30"></td> 
     </tr> 
     <tr> 
     <td>Date of Registration</td> 
     <td><input type="date" name="personregdate" maxlength="7" size="7"></td> 
     </tr> 
     <tr> 
     <td colspan="2"><input type="submit" value=" Update"></td> 
     </tr> 
    </table> 
    </form> 
+0

Это не код mysqli! – Saty

+0

Что делает '$ _GET ['edit'];' return? Это верно? Попробуйте отладить его. Не выполняйте мета-команду, пока не получите ее правильно. Вероятно, вы получите ошибку, если не осознаете ее. Возможно, вы этого не понимаете, но когда вы обновляете страницу, ваше значение редактирования исчезнет. – Dorvalla

+0

ответ

0

Вы ищете PersonId, когда кнопка Update нажата на форме в edit20.php, но это значение никогда не было установлено, так что будет пустым и обновление не будет выполнено.

После

<form action="edit20.php" method="POST"> 

оных:

<input type="hidden" name="personid" value="<?php echo $personid; ?>"> 
+0

Не забывайте, что ему нужно изменить значение Get для публикации на этапе обработки. – Dorvalla

+0

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

+0

Да, я понял, что я пропустил ту часть, что он уже разместил этот идентификатор. просто не возбуждал в его коде – Dorvalla

0

На странице редактирования, кажется, ваш запутанным ту же переменную с различными значениями. Если вы укажете переменную $ personid, чтобы содержать значение редактирования из get, тогда просто повторное использование переменной не присваивает новое значение. На этой строке присвоить новое значение:

$personid = $_POST['personid']; 

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

$personid = $_GET['edit']; 

Или создать скрытый элемент и передать в него значение редактирования.

0

Пожалуйста, добавьте имя атрибута для кнопки обновления

<td colspan="2"><input type="submit" name="update" value=" Update"></td> 

и ЧК, установлен ли кнопка обновления или сброса, как на месте

if(isset($_POST['newpersonname'])) // change text 'newpersonname' as 'update' 
0

Вы используете переменную, которая не спроста:

<?php 

include_once('coneksioni.php'); 

if(isset($_GET['edit'])) 
{ 
     $personid = $_GET['edit']; 
     $res = mysql_query("SELECT * FROM tblperson WHERE personid='$personid'"); 
     $row = mysql_fetch_array($res); 
} 
if(isset($_POST['newpersonname'])) 
{ 
      $newpersonname = $_POST['newpersonname']; 
      $personid = $_POST['personid']; // this doesn't excist 
      $sql = "UPDATE tblperson SET personname = '$newpersonname' WHERE personid = '$personid'"; 
      $res = mysql_query($sql) or die ("Cant be updated"); 
      echo "< meta http-equiv='refresh' content='0;url=home.php'>"; 
     } 
?> 

$personid = $_POST['personid']; не активирует ваш код. Его просто фрагмент кода, который вы туда помещаете, вероятно, обрабатывает, но забыл определить переменную в коде. Вставьте форму в свою форму.

<input type="hidden" name="personid" value="<?php echo $_GET['edit']; ?>">

Вы только использовать это только один раз, потому что вы посылаете форму обратно после того, как предпоса к вашему дому, поэтому он не будет больше использоваться. Вы также можете использовать avariable, который вы определили как $personid; в этой позиции.

Если это не удается, возможно, что-то не так в вашем запросе. Попробуйте выполнить эхо-запрос (удалите qucikly мета-команду) просто просто сделайте echo $sql после выполнения запроса sql. 9 из 10 раз, это опечатка.

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