2013-05-30 5 views
0

У меня есть небольшой скрипт, который позволяет мне обновлять мою базу данных MySQL. Сначала он показывает мне все записи моего стола и помещает его в форму. Затем он должен обновить все изменения до базы данных. Но, к сожалению, скрипт не работает. Может ли кто-нибудь мне помочь?Обновление таблицы MySQL с PHP

Это файл: updateform.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> 
<style type="text/css"> 

body { 
    margin:50px 0px; padding:0px; 
    text-align:center; 
     font:13px Tahoma,Geneva,sans-serif 
    } 

#content { 
    width:1000px; 
    margin:0px auto; 
    text-align:left; 
    padding:15px; 
    border:1px dashed #333; 
    background-color:#eee; 
    } 
</style> 

</head> 
<body> 
<div id='content'><h3><center>Update Information</center></h3> 
<?php 
// connect to the database 
mysql_connect(host,dbuser,passwd); 

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

// run the query and put the results in an array variable called $result 
$result = mysql_query("SELECT * FROM program ORDER BY 'id'"); 
// find out how many records there are to update 
$size = count($_POST['id']); 

// start a counter in order to number the input fields for each record 
$i = 0; 
print "<table width='100%' border='0' cellspacing='1' cellpadding='0'><tr><td>"; 
// open a form 
print "<form name='id' method='post' action='update.php'> 
<table width='100%' border='0' cellspacing='1' cellpadding='1'><tr> 

<td align='center'><strong>ID</strong></td> 
<td align='center'><strong>Vorname</strong></td> 
<td align='center'><strong>Nachname</strong></td> 
<td align='center'><strong>Punkte</strong></td> 
</tr>\n"; 

// start a loop to print all of the courses with their book information 
// the mysql_fetch_array function puts each record into an array. each time it is called, it moves the array counter up until there are no more records left 
while ($Update = mysql_fetch_array($result)) { 
    print "<tr>\n"; 
// assuming you have three important columns (the index (id), the course name (course), and the book info (bookinfo)) 
    // start displaying the info; the most important part is to make the name an array (notice bookinfo[$i]) 
    print "<td align='center'><p>{$Update['id']}</p></td>\n"; 

    print "<td align='center'><input type='text' size='40' name='vorname[$i]' value='{$Update['vorname']}' /></td>\n"; 

    print "<td align='center'><input type='text' size='40' name='nachname[$i]' value='{$Update['nachname']}' /></td>\n"; 

    print "<td align='center'><input type='text' size='40' name='punkte[$i]' value='{$Update['punkte']}' /></td>\n"; 

    print "</tr>\n"; 

// add 1 to the count, close the loop, close the form, and the mysql connection 
++$i; 
} 
print "<tr> 
<td colspan='4' align='center'><input type='submit' value='submit' />"; 
print "</td> 
</tr> 
</table> 
</td> 
</tr> 
</form> 
</table>"; 
mysql_close(); 
?><br /><br /><div></body> 
</html> 

это файл: update.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> 
<style type="text/css"> 

body { 
    margin:50px 0px; padding:0px; 
    text-align:center; 
     font:13px Tahoma,Geneva,sans-serif 
    } 

#content { 
    width:1000px; 
    margin:0px auto; 
    text-align:left; 
    padding:15px; 
    border:1px dashed #333; 
    background-color:#eee; 
    } 
</style> 

</head> 
<body> 
<div id='content'><h3><center>Success! </center></h3> 
<table width='100%' border='0' cellspacing='1' cellpadding='0'><tr><td> 


<table width='100%' border='0' cellspacing='1' cellpadding='1'> 
<tr> 

<td align='center'><strong>Vorname</strong></td> 
<td align='center'><strong>Nachname</strong></td> 
<td align='center'><strong>Punkte</strong></td> 
<td align='center'><strong>ID</strong></td> 
</tr> 
<?php 
// connect to the database and select the correct database 
mysql_connect(host,dbuser,passwd); 
mysql_select_db(db) or die("Unable to select database"); 

// find out how many records there are to update 
$size = count($_POST['id']); 

// start a loop in order to update each record 
$i = 0; 
while ($i < $size) { 
// define each variable 
$vorname = $_POST['vorname'][$i]; 
$nachname = $_POST['nachname'][$i]; 
$punkte = $_POST['punkte'][$i]; 
$id = $_POST['id'][$i]; 

// do the update and print out some info just to provide some visual feedback 

$query = "UPDATE `program` SET `vorname` = '$vorname', `nachname` = '$nachname', `punkte` = '$punkte' WHERE `id` = '$id' LIMIT 1"; 
mysql_query($query) or die ("Error in query: $query"); 
print " 

</tr> 
<td align='left'><p>$vorname</p></td> 
<td align='left'>$nachname</td> 
<td align='left'>$punkte</td> 
<td align='left'>$id</td> 
</tr> 
"; 
++$i; 
} 
mysql_close(); 
?> 
<tr> 
<td colspan='4' align='center'> 
</td> 
</tr> 
</table> 
</td> 
</tr> 

</table></div></body></html> 

Пожалуйста, кто может мне помочь? Greets Alex

+2

Что похоже на ошибку? Вы получаете ошибки? – showdev

+1

Посмотрите на использование функций mysqli_ *, поскольку функции mysql_ * устарели. – wazy

+0

О, извините, забыл, что ..: D № Все идет правильно. Я могу видеть все данные из базы данных. Но когда я «подчиняюсь», я могу видеть только «Sucess» в качестве заголовка и ниже, есть заголовки колонок базы данных. (Vorname, Nachname, Punkte, ID) И если я проверю базу данных, ничего не изменилось. – linx

ответ

1

Изменить

print "<td align='center'><p>{$Update['id']}</p></td>\n"; 

Для

print "<td align='center'> 
    <p>{$Update['id']}</p> 
    <input type=\"hidden\" name=\"id[$i]\" value=\"{$Update['id']}\" /> 
</td>\n"; 
+0

попробовал. происходит ошибка .. Ошибка синтаксического анализа: ошибка синтаксиса, неожиданный T_STRING в /../../../../updateform.php на линии 56 который эта строка: <входной тип = "скрытый "name =" id [$ i] "value =" {$ Update ['id']} "/> – linx

+0

жаль, что я забыл добавить \ перед". Посмотрите на мой отредактированный ответ – lexmihaylov

+0

ну кажется ошибка исправлена, но она создала новую. Ошибка анализа: синтаксическая ошибка, неожиданный T_PRINT в /../../../../updateform.php в строке 60 которая является этой строкой: print " \ n "; – linx

0

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

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

Например:

print "<td align='center'><input type='text' size='40' name='vorname_".$Update['id']."' value='".$Update['vorname']."' /></td>\n"; 

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

+0

спасибо. У меня уже есть! – linx

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