X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Не обновляется информация в БД
in3gan
in3gan
Topic Starter сообщение 2.3.2011, 18:11; Ответить: in3gan
Сообщение #1


Всем привет.
Походу дела некая неурядица в коде.
Проблема заключается в том, что информация, которую я редактирую не обновляется в базе данных. Сообщений об ошибке не наблюдается, после редактирования выходит информация о том, что данные были обновлены, но изменений никаких !
Есть 2 файла: edit_text.php и update_text.php
В 1 файле содержится форма с информацией, которая будет вытаскиваться из БД с целью дальнейшего ее редактирования.
Во 2 файле будет сам процесс обработки.

Содержимое кода страницы edit_text.php:

[PHP]<?php
include("blocks/bd.php"); /* Подключение к базе */
if (isset ($_GET['id'])) {$id = $_GET['id'];}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Страница изменений текста</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<link href="style.css" rel="stylesheet" type="text/css" />

</head>
<body>
<?php include('blocks/header.php');?>
<!-- end #header -->
<div id="menu">
<?php include('blocks/menu.php');?>
</div>
<!-- end #menu -->
<div id="content">
<div id="posts">
<div class="post">
<h2>Выберите страницу для редактирования</h2>

<?php

if (!isset($id)) { /* Выводим список названий всех имеющихся в базе страниц */
$result = mysql_query ("SELECT `title`, `id` FROM `settings`");
$myrow = mysql_fetch_array ($result);
do
{
printf ("<p><a href='edit_text.php?id=%s'>%s</a></p>", $myrow["id"], $myrow["title"]);
}
while ($myrow = mysql_fetch_array ($result));
}

else { /* Выводим форму с информацией в полях для дальнейшего редактирования */
$result = mysql_query ("SELECT * FROM `settings` WHERE id=$id");
$myrow = mysql_fetch_array ($result);

print <<<HERE
<form action="update_text.php" method="post">
<p>
<label>Введите название страницы
<input value=$myrow[title] type="text" name="title" id="title" />
</label>
</p>
<p>
<label>Введите ключевые слова страницы
<input value=$myrow[meta_k] type="text" name="meta_k" id="meta_k" />
</label>
</p>
<p>
<label>Введите краткое описание страницы
<input value=$myrow[meta_d] type="text" name="meta_d" id="meta_d" />
</label>
</p>
<p>
<label>Введите полный текст<br />
<textarea name="text" id="text" cols="50" rows="10">$myrow[text]</textarea>
</label>
</p>

<input name="id" type="hidden" value="$myrow[id]" />

<input name="Submit" type="submit" value="Сохранить изменения" />
</form>
HERE;
}

?>

</div>
</div>
<!-- end #posts -->

<?php include('blocks/links_rightmenu.php');?>
<!-- end #links -->
<div style="clear: both;">&nbsp;</div>
</div>
<!-- end #content -->
<?php include('blocks/footer.php');?>
<!-- end #footer -->
</body>
</html>[/PHP]

Содержимое кода страницы: update_text.php

[PHP]<?php include('blocks/bd.php'); /* Подключение к базе */

if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Редактирование страницы</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<link href="style.css" rel="stylesheet" type="text/css" />

</head>
<body>
<?php include('blocks/header.php');?>
<!-- end #header -->
<div id="menu">
<?php include('blocks/menu.php');?>
</div>
<!-- end #menu -->
<div id="content">
<div id="posts">
<div class="post">
<?php
if (isset($id) && isset($title) && isset($meta_d) && isset($meta_k) && isset($text))
{
/* Заносим редактирование в базу */

$result = mysql_query ("UPDATE `settings` SET `id`='$id', `title`='$title', `meta_d`='$meta_d', `meta_k`='$meta_k', `text`='$text' WHERE `id`='$id'");
echo mysql_error();

if ($result == true) {echo "<p>Информация была успешно редактирована !</p>";}
else {echo "<p>Произошла ошибка при обновлении информации</p>";}

}
else
{ echo "<p>Вы ввели не все данные. Информация не была обновлена !</p>";}
?>


</div>
</div>
<!-- end #posts -->

<?php include('blocks/links_rightmenu.php');?>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include('blocks/footer.php');?>
</body>
</html>[/PHP]

Для максимального понимания моей проблемы я сделал скриншоты.
На картинке в edit_text.jpg в поле "Введите полный текст" я после заголовка написал предложение с абзаца.
После нажатия кнопки "Сохранить изменения" я перехожу в phpmyadmin (см рисунок update_text.jpg)и вижу, что та информация, что должна была поменяться - осталась не измененной абсолютно. Хотя вышло сообщение, что инфа была успешно сохранена.

Вопрос #2:
Почему в форме (напр.в поле "описание") не выводится остальной текст после пробела ?

Php изучаю только неделю(по видео курсам - Е. Попова), прошу сильно не ругать :rolleyes:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 2.3.2011, 18:19; Ответить: DoctorX
Сообщение #2


$result = mysql_query ("UPDATE `music` SET `id`='$id', `title`='$title', `meta_d`='$meta_d', `meta_k`='$meta_k', `text`='$text' WHERE `id`='$id'");
Занестие запрос в переменную и выведите его вардампом/

if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}

- надо переписать.

+ Защитите от иньекций.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
сообщение 2.3.2011, 18:22; Ответить: Salikhoff_hb
Сообщение #3


in3gan, е поповэто не есть хорошо, введите в поиске на форуме и почитайте о нем отзывы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 2.3.2011, 18:27; Ответить: DoctorX
Сообщение #4


Вопрос #2:
Почему в форме (напр.в поле "описание") не выводится остальной текст после пробела ?


value=dfd
-->
value="dfd"


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
in3gan
in3gan
Topic Starter сообщение 2.3.2011, 18:29; Ответить: in3gan
Сообщение #5


(Doc.X @ 2.3.2011, 20:19) *
+ Защитите от иньекций.


Не имею представления каким образом это можно грамотно сделать.

(' post='103454 @ 2.3.2011, 20:22)
in3gan, е поповэто не есть хорошо, введите в поиске на форуме и почитайте о нем отзывы


Я читал как положительные, так и отрицательные отзывы про него. Решил позаниматься по его видео урокам. Объясняет доходчиво и все понятно. А что из видео курса по php Вы можете посоветовать?
По учебникам заниматься трудно. Очень удобно по видео курсу, когда идет алгоритм всех действий, как все показывается шаг за шагом и в то же время объясняется что, да как.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 2.3.2011, 18:32; Ответить: DoctorX
Сообщение #6


Если вам трудно читать книгу - программирование не для вас.

(in3gan @ 2.3.2011, 20:29) *
Не имею представления каким образом это можно грамотно сделать.

Гугл --> Sql иньекции


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
in3gan
in3gan
Topic Starter сообщение 2.3.2011, 18:34; Ответить: in3gan
Сообщение #7


(Doc.X @ 2.3.2011, 20:27) *
value=dfd
-->
value="dfd"


Действительно, нужны были двойные кавычки.
Хотя в видео уроке их не было и без них все выводилось полностью, а у меня нет. Похоже там исп. старая версия денвера.
Спасибо !
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
DoctorX
DoctorX
сообщение 2.3.2011, 18:37; Ответить: DoctorX
Сообщение #8


Версия дневера тут не причём. Это HTML суть которого остаётся неизменной уже дофига лет.
Просто качество вашего видео урока оставляет жедать лучшего... Как можно вообще учить кодинг по видео урокам?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 2.3.2011, 18:45; Ответить: Apay
Сообщение #9


ОПЯТЬ ПОПОВ!!!
чем скорее вы по нему перестанете изучать, тем лучше для вас, у него многие ошибки основанны на непонимании принципов программирования.

первое - почитайте по форуму как ПРАВИЛЬНО извлекать данные из базы

второе - не проще ли вот это
[PHP]if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);}}
...[/PHP]
и
[PHP]if( isset($title) && ... ){
$result = mysql_query ("UPDATE `settings` SET `id`='$id', `title`='$title', ...");
[/PHP]заменить на
[PHP]if( !empty($_POST['title']) && ... ){
$result = mysql_query ("UPDATE `settings` SET `id`='$id', `title`='{$_POST['title']}', ...");
[/PHP]

третье - вы не считаете это тафтологтей (типа масло маслянное)? :
[PHP]$result = mysql_query ("UPDATE `settings` SET `id`='$id', ... WHERE `id`='$id'");[/PHP]

четвертое - все данные перед запросом должны быть обработанны с помощью mysql_real_escape_string за исключением $id, здесь должна применяться ф-я intval
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
сообщение 2.3.2011, 19:35; Ответить: Salikhoff_hb
Сообщение #10


in3gan, из литературы есть тема на форуме, из видео уроков вы нечего не когда не поймете, т.к. там идет только объяснение опр. темы. В книги вам будут все разжевывать и доходчиво объяснят. Появится вопросы велком на форум!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) ВНИМАНИЕ: Пользователям RuSEO.net, Важная информация!
32 jack 579179 31.10.2021, 18:31
автор: ZennoMan
Открытая тема (нет новых ответов) Юридический информационный сайт, вечные статьи, СДЛ, контент обновляется каждый
4 seosage_mw 1573 1.7.2015, 13:48
автор: seosage_mw
Горячая тема (нет новых ответов) Готовый контент ( рерайт ) - список постоянно обновляется.
48 DarkUnicorn 38159 6.6.2015, 19:17
автор: DarkUnicorn
Открытая тема (нет новых ответов) Информация для тех, кому нужны продажи и качественные тексты на ЛП
1 inesha_hb 3893 9.9.2014, 13:09
автор: -DeeP5-
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыВыпадающая информация для Укоз
0 shannon1791 1459 1.4.2012, 1:30
автор: shannon1791


 



RSS Текстовая версия Сейчас: 29.3.2024, 15:29
Дизайн