|
|
|
| Всем привет, мне нужно через web форму отредактировать некоторые записи, как это сделать средствами php, так чтобы в таблице вместо старых данных были новые. | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 11:22)
| | Для этого предназначен SQL-запрос UPDATE, для того, чтобы более подробно ответить на вопрос нужна структура вашей таблицы. | |
|
|
|
|
|
|
|
для: cheops
(14.05.2008 в 12:13)
| | База называется test, таблица stud, в ней 3 поля id,fio,ocenka. Я вывожу всю таблицу, мне нужно редактировать данные, которые находятся в поле ocenka. У меня не получается, измененные данные не попадают в таблицу. | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 13:23)
| | У вас уже имеет набросок скрипта? Можете прикрепить его к сообщению? Вы редактируете по одной записи или все скопом? | |
|
|
|
|
 2.5 Кб |
|
|
для: cheops
(14.05.2008 в 13:58)
| | Я редактирую по доной записи.
<? php
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "test";
$table = "stud";
mysql_connect($hostname, $username, $password) or die ("");
mysql_select_db($dbName) or die (mysql_error());
if(@$submit) {
$query = "UPDATE $table SET fio='$fio', ocenka='$ocenka' WHERE id='$id'";
mysql_query($query) or die (mysql_error());
}
$query = "SELECT * FROM $table";
$res = mysql_query($query) or die(mysql_error());
$row = mysql_num_rows($res);
echo ("
<!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>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
<title>редактирование</title>
<style type=\"text/css\">
<!--
body { font: 12px Georgia; color: #666; }
h3 { font-size: 16px; text-align: center; }
table { width: 400px; border-collapse: collapse; margin: 5px auto; background: #E6E6E6; }
td { padding: 3px; vertical-align: middle; }
input { width: 250px; border: solid 1px #CCC; color: #FF6666; }
textarea { width: 250px; height: 100px; border: solid 1px #CCC; color: #FF6666; }
.buttons { width: auto; border: double 1px #666; background: #D6D6D6; color: #000; }
#num { width: 20px; text-align: right; margin-right: 5px; float: right; }
-->
</style>
</head>
<body>
");
while ($row = mysql_fetch_array($res)) {
echo "<form action=\"52.php\" method=\"post\" name=\"edit_form\">\n";
echo "<input type=\"hidden\" name=\"id\" value=\"".$row["id"]."\" />\n";
echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo "<tr>\n";
echo "<td colspan=\"2\" style=\"border-bottom:solid 1px #CCCCCC;\"><b><i><div id=\"num\">#".$row["id"]."</div>";
echo "</tr><tr>\n";
echo "<td>fio:</td><td><input type=\"text\" value=\"".$row['fio']."\" name=\"fio\" /></td>\n";
echo "</tr><tr>\n";
echo "<td>ocenka:</td><td><input type=\"text\" value=\"".$row['ocenka']."\" name=\"ocenka\" /></td>\n";
echo "</tr><tr>\n";
echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit\" class=\"buttons\" value=\"sohranit izmeneniya\" /></td>\n";
echo "</tr></table></form>\n\n";
}
mysql_close();
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">назад</a></div>");
?> | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 14:04)
| | А у вас директива register_globals включена или отключена? Если отключена, то получать данные из HTML-формы следует из суперглобального массива, т.е. обработчик формы лучше переписать следующим образом
<?php
if(@$_POST['submit']) {
$_POST['id'] = intval($_POST['id']); // Эта строка необходима, если id - целочисленное значение
$query = "UPDATE $table SET fio='$fio', ocenka='$ocenka' WHERE id='".$_POST['id']."'";
mysql_query($query) or die (mysql_error());
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.05.2008 в 16:41)
| | А где можно посмотреть включена директива или нет register_globals? Что-то не изменяются данные. | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 16:46)
| | Директива выключена. А на что она влияет? | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 16:49)
| | Если она включена, то все внешние переменные, полученные методами POST, GET, через COOKIE преобразуются непосредственно в PHP-переменные, в противном случае необходимо использовать суперглобальные массивы вроде $_POST, $_GET, $_COOKIE и т.п. В новых версиях PHP эта директива отключена, так как это повышает безопасность - подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1309. | |
|
|
|
|
|
|
|
для: cheops
(14.05.2008 в 16:57)
| | Ясно, но данные все равно не обновляются. А вы у себя не пробовали на компе, может, код неправильно составлен? | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 17:05)
| | значения переменных $fio и $ocenka тоже следует получить из элементов массива $_POST | |
|
|
|
|
|
|
|
для: colnce88
(14.05.2008 в 17:05)
| | Чтобы запустить и отладить скрипт необходима структура таблицы stud (получить её можно при помощи оператора SHOW CREATE TABLE). | |
|
|
|
|
|
|
|
для: cheops
(14.05.2008 в 23:58)
| | Спасибочки Всем огромное, у меня получилось. действительно нужно было fio и ocenka получать с помощью post. | |
|
|
|