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



 

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

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

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Запутался (:
Кирилл013
Кирилл013
Topic Starter сообщение 28.9.2012, 19:36; Ответить: Кирилл013
Сообщение #1


Продолжаю изучать php. Создал небольшой сайт с подключением к БД.
Вообщем, на администраторской странице есть функция "редактировать урок", при выборе которой открывается окно со списком всех созданных ранее уроков. Вывод уроков происходит через массив mysql_fetch_array и при нажатии на него, выберается его id. Выберая нужный для редактирования урок, открывается еще одно окошко, в котором все необходимые поля урока заполнены текстом старого урока, а под ними кнопка "сохранить изменения".
Проблема в том, что при на эту кнопку, у старого урока все поля просто становятся пустыми. Заполняется лишь поле даты, которое устанавливается при помощи временной метки.
Такой объемный код пишу впервые, пока сам путаюсь. Помогите разобраться.
Вот страница для редактирования:

[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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Страница Администратора</title>
<link href="style.css" type="text/css" rel="stylesheet">
</head>

<body background="bg1.jpg">

<div align="center">
<table id="table" bgcolor="#FFFFFF" border="1"
width="707" cellspacing="0" cellpadding="0" align="center">


<!--Шапка-->

<tr>
<td colspan="2"><img src="head.jpg" width="703" height="9%" /></td>
</tr>


<!--Колонка под меню-->

<tr valign="top">
<td width="20%">
<?php include "menu.inc.php" ?>

</td>

<!--Контент-->

<td valign="top">
<table cellpadding="4"><tr><td>

<?php
$id=$_GET['id'];

// Если id еще нет, то выбираем урок для редактирования.

if(!isset($_GET['id']))
{
echo "<p>Выберите урок для редактирования:</p><br>";
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
$result=mysql_query("SELECT title, id, date FROM lessons ORDER BY id DESC");
$myrow=mysql_fetch_array($result);
do
{ // Выбор редактируемого урока
printf("
<table class='lesson' align='center' cellpadding='5px'>
<tr>
<td class='lesson_title'>
<p>
<font color='blue'>%s</font></p>
<p><font size='-1'>Дата: %s</font></p>
</td>
</tr>
<tr>
<td><p align='right'><u><a href='edit_lesson.php?id=%s'><font size='-1'>Редактировать</font></a></u></p></td>
</tr>
</table>", $myrow['title'], $myrow['date'], $myrow['id'] );


}
while($myrow=mysql_fetch_array($result));
}
else // Если id уже есть:
{
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
$result=mysql_query("SELECT * FROM lessons WHERE id='$id'");
$myrow=mysql_fetch_array($result); // создаем форму для редактирования
print <<<HERE

<form action="edit_lesson.php" method="POST">
<br>Название урока:
<br><input value="$myrow[title]" type="text" name="addless" size="20">
<br>Краткое описание урока:
<br><input value="$myrow[description]" type="text" name="opless" size="20">
<br>Автор урока:
<br><input value="$myrow[author]" type="text" name="authorless" size="20">
<br>Текст урока:
<br><textarea name="textless" rows="10">$myrow[text]</textarea>
<br><input type="submit" value="Сохранить">


HERE;

// Присваиваем переменным полученные из формы данные
$add=$_POST['addless'];
$op=$_POST['opless'];
$time=mktime();
$dateless=date("Y-m-d H:i:s", $time);
$author=$_POST['authorless'];
$text=$_POST['textless'];
// Подключаемся к базе, выбераем "изменить" поля, у который id совпадает с $_GET[id]
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
mysql_query("UPDATE lessons
SET title='$add',date='$dateless',description='$op',text='$text',author='$author'
WHERE id='$id'");

echo "</form>";
}
?>

</td></tr></table></td>
</tr>




<!--Подвал-->
<tr>
<td colspan="2"><div align="center">
2012 год.
<br><?=date('Y')?></div></td>
</tr>


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


[/PHP]

П.С. Сначала думал что что-то с подключением к базе намудрил, но у редактируемого урока изменяется дата создания, значит редактируется нужный урок.
Заранее спасибо))
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ELked
ELked
сообщение 28.9.2012, 21:50; Ответить: ELked
Сообщение #2


если значения обновляются, то проблема в переменных, перепроверьте их.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ELked
ELked
сообщение 28.9.2012, 21:55; Ответить: ELked
Сообщение #3


(Кирилл013 @ 28.9.2012, 22:36) *
action="edit_lesson.php

а зачем это? Дайте этот код.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
omfg
omfg
сообщение 28.9.2012, 22:07; Ответить: omfg
Сообщение #4


Хочу вас поздравить!Вы написали бред,если я понял задумку,итак:
При загрузке страницы вы сразу пытаетесь получить данные и занести их в базу данных,вы не поняли смысл,вам требуется заносить данные после изменения + заносить полученные данные сразу в базу данных не обработов их глупо,вот,накидал,что-то типо...
[PHP]<?php
$id=$_GET['id'];
if(!isset($_GET['id']))
{
echo "<p>Выберите урок для редактирования:</p>";
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
$result=mysql_query("SELECT title, id, date FROM lessons ORDER BY id DESC");
$myrow=mysql_fetch_array($result);
do
{
printf("
<table class='lesson' align='center' cellpadding='5px'>
<tr>
<td class='lesson_title'>
<p>
<font color='blue'>%s</font></p>
<p><font size='-1'>Дата: %s</font></p>
</td>
</tr>
<tr>
<td><p align='right'><u><a href='edit_lesson.php?id=%s'><font size='-1'>Редактировать</font></a></u></p></td>
</tr>
</table>", $myrow['title'], $myrow['date'], $myrow['id'] );

}
while($myrow=mysql_fetch_array($result));
}
else
{
$add=htmlspecialchars($_POST['addless']);
$op=htmlspecialchars($_POST['opless']);
$author=htmlspecialchars($_POST['authorless']);
$text=htmlspecialchars($_POST['textless']);
$time=mktime();
$dateless=date("Y-m-d H:i:s", $time);
if($add!="" && $op!="" && $author!="" && $text!="")
{
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
mysql_query("UPDATE lessons SET title='$add',date='$dateless',description='$op',text='$text',author='$author' WHERE Yid='$id'");
echo "Новые данные успешно занесены в базу данных!";
}
$db=mysql_connect('localhost','root');
mysql_select_db('mysite',$db);
$result=mysql_query("SELECT * FROM lessons WHERE id='$id'");
$myrow=mysql_fetch_array($result);
print <<<HERE
<form action="" method="POST">
Название урока:
<input value="$myrow[title]" type="text" name="addless" size="20">
Краткое описание урока:
<input value="$myrow[description]" type="text" name="opless" size="20">
Автор урока:
<input value="$myrow[author]" type="text" name="authorless" size="20">
Текст урока:
<textarea name="textless" rows="10">$myrow[text]</textarea>
<input type="submit" value="Сохранить">
</form>
HERE;
}
?>[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Кирилл013
Кирилл013
Topic Starter сообщение 29.9.2012, 0:15; Ответить: Кирилл013
Сообщение #5


(omfg @ 29.9.2012, 01:07) *
omfg

Спасибо огромное)) Помогло.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Кирилл013
Кирилл013
Topic Starter сообщение 29.9.2012, 0:17; Ответить: Кирилл013
Сообщение #6


Еще вопрос:
[PHP]if($add!="" && $op!="" && $author!="" && $text!="")[/PHP]
Что эта строка означает?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 29.9.2012, 0:52; Ответить: Den1xxx
Сообщение #7


(Кирилл013 @ 29.9.2012, 03:17) *
Что эта строка означает?

Это говнокод. Правильнее проверять так:
if(!empty(array($add, $op, $author, $text)))

В этом уроке 80% говнокода.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
omfg
omfg
сообщение 29.9.2012, 0:52; Ответить: omfg
Сообщение #8


$add=htmlspecialchars($_POST['addless']); //сначала приравняли полученные вами данные из формы и отсеяли детские попытки взлома
а потом проверяем если переменная $add не пустая,то есть если она не равна пустоте то заносим её значение в базу данных и так со всеми переменными,чтобы проверить во всех ли переменных информация,если не во всех или мы просто еще не пытались изменить информацию в базе данных то ничего не делаем,а у вас информация сразу при загрузке страницы заносилась в базу данных,то есть пустая информация,а нажав на кнопку "сохранить" как заметил ELked вы просто переходили на страницу edit_lesson.php
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Кирилл013
Кирилл013
Topic Starter сообщение 29.9.2012, 1:07; Ответить: Кирилл013
Сообщение #9


Спасибо еще раз. А не подскажите, как сделать, чтоб при перезагрузке страницы данные из формы каждый раз снова не отправлялись?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
omfg
omfg
сообщение 29.9.2012, 1:09; Ответить: omfg
Сообщение #10


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Выручайте, совсем запутался!
0 Vjvan064 6118 11.2.2010, 19:27
автор: -Vjvan064-


 



RSS Текстовая версия Сейчас: 25.4.2024, 14:13
Дизайн