Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление записей в MYSQL через php
 
 автор: colnce88   (14.05.2008 в 11:22)   письмо автору
 
 

Всем привет, мне нужно через web форму отредактировать некоторые записи, как это сделать средствами php, так чтобы в таблице вместо старых данных были новые.

   
 
 автор: cheops   (14.05.2008 в 12:13)   письмо автору
 
   для: colnce88   (14.05.2008 в 11:22)
 

Для этого предназначен SQL-запрос UPDATE, для того, чтобы более подробно ответить на вопрос нужна структура вашей таблицы.

   
 
 автор: colnce88   (14.05.2008 в 13:23)   письмо автору
 
   для: cheops   (14.05.2008 в 12:13)
 

База называется test, таблица stud, в ней 3 поля id,fio,ocenka. Я вывожу всю таблицу, мне нужно редактировать данные, которые находятся в поле ocenka. У меня не получается, измененные данные не попадают в таблицу.

   
 
 автор: cheops   (14.05.2008 в 13:58)   письмо автору
 
   для: colnce88   (14.05.2008 в 13:23)
 

У вас уже имеет набросок скрипта? Можете прикрепить его к сообщению? Вы редактируете по одной записи или все скопом?

   
 
 автор: colnce88   (14.05.2008 в 14:04)   письмо автору
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>");

?>

   
 
 автор: cheops   (14.05.2008 в 16:41)   письмо автору
 
   для: 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()); 
}
?>

   
 
 автор: colnce88   (14.05.2008 в 16:46)   письмо автору
 
   для: cheops   (14.05.2008 в 16:41)
 

А где можно посмотреть включена директива или нет register_globals? Что-то не изменяются данные.

   
 
 автор: colnce88   (14.05.2008 в 16:49)   письмо автору
 
   для: colnce88   (14.05.2008 в 16:46)
 

Директива выключена. А на что она влияет?

   
 
 автор: cheops   (14.05.2008 в 16:57)   письмо автору
 
   для: 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.

   
 
 автор: colnce88   (14.05.2008 в 17:05)   письмо автору
 
   для: cheops   (14.05.2008 в 16:57)
 

Ясно, но данные все равно не обновляются. А вы у себя не пробовали на компе, может, код неправильно составлен?

   
 
 автор: Trianon   (14.05.2008 в 23:47)   письмо автору
 
   для: colnce88   (14.05.2008 в 17:05)
 

значения переменных $fio и $ocenka тоже следует получить из элементов массива $_POST

   
 
 автор: cheops   (14.05.2008 в 23:58)   письмо автору
 
   для: colnce88   (14.05.2008 в 17:05)
 

Чтобы запустить и отладить скрипт необходима структура таблицы stud (получить её можно при помощи оператора SHOW CREATE TABLE).

   
 
 автор: colnce88   (15.05.2008 в 12:33)   письмо автору
 
   для: cheops   (14.05.2008 в 23:58)
 

Спасибочки Всем огромное, у меня получилось. действительно нужно было fio и ocenka получать с помощью post.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования