[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Неизвестная переменная неизвестно откуда
Димка_СПб
Представлюсь, - новичок в php, делаю первый пробный сайт, пользовался курсами Попова, но речь не о нём.
В админке, на странице правки существующих в БД статей, выскакивает непонятная ошибка с неизвестной (для меня) переменной.
Вот, что пишет интерпретатор кода
Цитата
Parse error: syntax error, unexpected $end in C:\Apache 2.2\site_2\First_php_site\Admin\Edit_Articles.php on line 79


Поясню, что стр. 79 это просто закрывающий тэг </html>, при смещении которого все равно в ошибке указывается на него.
Что это за переменная $end и откуда она взялась?!

Вот, что у меня прописано в php-коде (для информации)

if (!isset($id))
{
$result = mysql_query ("SELECT id,name,title FROM vestnik",$db);
$myrow = mysql_fetch_array ($result);
/*выводится список статей*/
do
{
printf ("<p><a href='Edit_Articles.php?id=%s'>%s - %s</a></p>", $myrow['id'], $myrow['name'], $myrow['title']);
}
while($myrow = mysql_fetch_array($result));

}
else
{
$result = mysql_query ("SELECT * FROM vestnik WHERE id=$id",$db);
$myrow = mysql_fetch_array ($result);
/*выводится форма с данными конкретной статьи*/
echo <<<HEREDOC
<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="
$myrow[name]" size="50" maxlength="50">
<br>
<input name="title" type="text" value="
$myrow[title]" size="50" maxlength="100">
<br>
<input name="meta_d" type="text" value="
$myrow[meta_d]" size="50" maxlength="100">
<br>
<input name="meta_kw" type="text" value="
$myrow[meta_kw]" size="50" maxlength="150">
<br>
<textarea name="description" cols="74">
$myrow[description]</textarea>
<br>
<input name="year" type="text" value="
$myrow[year]" size="8" maxlength="4">
<br>
<input name="number" type="text" value="
$myrow[number]" size="8" maxlength="5">
<br>
<textarea name="content" cols="74" rows="20">
$myrow[content]</textarea>
<br>
<input name="id" type="hidden" value="
$myrow[id]">
<input name="submit" type="submit" value="обновить в базе данных">
<br>
</form>
HEREDOC;
}


Страничка простая, с php-шаблонами шапки, навигации и т.д. Ничего мудрёного.
Вместо echo писал print, результат прежний.

Установлен Апач 2.2, PHP 5.5, phpMyAdmin 3.3
ОС Wista x64 SP2
Подскажите, в чем дело.
П.С.
Я понимаю, что операцию с формой можно следать по-другому, но тут главный вопрос в неизвестной переменной, мешающей исполняться php-коду.




Спустя 8 минут, 5 секунд (11.06.2011 - 18:20) Mirexzpalich написал(а):
http://www.php.net/manual/ru/language.type....syntax.heredoc
Прочитай, там в красной блоке....

HEREDOC; - не должно быть ни отступов до этого слова, не после....

Спустя 4 минуты, 15 секунд (11.06.2011 - 18:24) allplayer написал(а):
Вобщем так... Смотри внимательно, но всё-равно объясню. Разделяй не запятыми, а точками, пиши echo и убери нахрен эти скобки!. Это первое, что бросилось в глаза:
echo "<p><a href='Edit_Articles.php?id=%s'>%s - %s</a></p>".$myrow['id'].$myrow['name'].$myrow['title'];

Спустя 5 минут, 2 секунды (11.06.2011 - 18:29) allplayer написал(а):
Второе. Внимательно на точки, кавычки, опострафы и скобки:
$result = mysql_query ("SELECT * FROM vestnik WHERE (id=`".$id."` AND id=`".$db."`)");

Спустя 11 минут, 8 секунд (11.06.2011 - 18:41) XCross написал(а):
Второе:
$myrow = mysql_fetch_array ($result);


Третье:
$result = mysql_query ("SELECT * FROM vestnik WHERE id=$id",$db);


Четвертое, пятое и т.д:

<input name="name" type="text" value="$myrow[name]" size="50" maxlength="50">

Спустя 9 минут, 36 секунд (11.06.2011 - 18:50) allplayer написал(а):
О да.... Меняй двойные кавычки на обычные в пхп-коде, а в хтмл-оставь двойные

Спустя 9 минут, 17 секунд (11.06.2011 - 18:59) Димка_СПб написал(а):
Allplayer,
там где убираем скобки и меняем запятые, выдаёт
Цитата

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Apache 2.2\site_2\First_php_site\Admin\Edit_Articles.php on line 33

По-моему здесь конактенация не совсем то, что нужно. В других местах всё работает и с запятыми.

Во второй части, где изменяем запрос на
(id=`".$id."` AND id=`".$db."`)
пишет тоже самое, что и раньше.
Цитата
Parse error: syntax error, unexpected $end in C:\Apache 2.2\site_2\First_php_site\Admin\Edit_Articles.php on line 78

Здесь мы просто улучшили, грамотнее написали, а по сути ничего не меняли.

Mirexzpalich,
отступов и пробелов как таковых нет ни перед, ни после HEREDOC. Отступы в коде делались кнопкой отступа (в DW).

Короче по-прежнему выдаёт $end

Спасибо за ответы.

Спустя 2 минуты, 29 секунд (11.06.2011 - 19:02) VolDroN написал(а):
kmaks чем вас неустраивает $myrow = mysql_fetch_array ($result);?
Лучше бы подсказали как сделать).

Главная проблема - не смотрите Попова
Используйте mysql_fetch_assoc в этом случае.
$end это не переменная, это говорит о том что вы что то не завершили, (скобку, } ] и.т.д.) и php просто не нашла ожидаемый конец какой то функции/вывода.
У вас куча ошибок с скобками.
Если это массив и к нему обращаетесь по буквенному ключу, то должно быть:
$a['key'], а не $a[key].
Если к массиву обращаетесь по числовому ключу, то должно быть:
$a[0] или $a[100500]
Если в переменной или echo, в строке, есть переменные, то пишите например так:
$param = 'Строка', а не $param = "Строка".
У вас хреново с этим в mysql_query, если используете "" то не соединяйте точками переменные в запрос, а пишите их прям там, если конечно переменная не массив. Если массив или сессия/кукисы/post/get то используйте {$arr['key']}.
т.е. не
$query = mysql_query("SELECT `id` FROM `table` WHERE `login`=".$arr['login']."");

а
$query = mysql_query("SELECT `id` FROM `table` WHERE `login`='{$arr['login']}'");

Спустя 3 минуты, 18 секунд (11.06.2011 - 19:05) VolDroN написал(а):
вот вам,
		echo '
<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="'
.$myrow['name'].'" size="50" maxlength="50">
<br>
<input name="title" type="text" value="'
.$myrow['title'].'" size="50" maxlength="100">
<br>
<input name="meta_d" type="text" value="'
.$myrow['meta_d'].'" size="50" maxlength="100">
<br>
<input name="meta_kw" type="text" value="'
.$myrow['meta_kw'].'" size="50" maxlength="150">
<br>
<textarea name="description" cols="74">'
.$myrow['description'].'</textarea>
<br>
<input name="year" type="text" value="'
.$myrow['year'].'" size="8" maxlength="4">
<br>
<input name="number" type="text" value=".'
$myrow['number'].'" size="8" maxlength="5">
<br>
<textarea name="content" cols="74" rows="20">'
.$myrow['content'].'</textarea>
<br>
<input name="id" type="hidden" value="'
.$myrow['id'].'">
<input name="submit" type="submit" value="обновить в базе данных">
<br>
</form>
'
;

Спустя 43 минуты, 7 секунд (11.06.2011 - 19:48) Димка_СПб написал(а):
Цитата
Используйте mysql_fetch_assoc в этом случае.
$end это не переменная, это говорит о том что вы что то не завершили, (скобку, } ] и.т.д.) и php просто не нашла ожидаемый конец какой то функции/вывода.


Вы правы похоже. И по цвету кода было видно, что функция не остановилась.

А вот здесь
Цитата
$a['key'], а не $a[key].

это художества Попова, которым я научился. Дело в том, что с использованием HEREDOC при нормальном, правильном обращении по буквенному ключу выдавалась ошибка. Здесь вы совершенно правы.
Я поставил как нужно - $a['key'] - , выкинул HEREDOC, и код сработал.
Типа "переменная" появилась из-за незаконченной работы интерпретатора и поэтому указывалось на последний тэг веб-страницы.

Но появилась другое, - не работает вторая часть, т.е. переменная id, не выводится при нажатии на ссылку запрашиваемая статья; ошибок нет, та же страница без изменений со списком, в частности, всех статей. Просто, как-бы пустая ссылка кликается.
Здесь по части вот этого, наверное,
$query = mysql_query("SELECT `id` FROM `table` WHERE `login`=".$arr['login']."");

и
$query = mysql_query("SELECT `id` FROM `table` WHERE `login`='{$arr['login']}'");

или вот этого

$result = mysql_query ("SELECT * FROM vestnik WHERE id=$id",$db);
$myrow = mysql_fetch_array ($result);

user posted image

Спустя 31 минута, 31 секунда (11.06.2011 - 20:20) VolDroN написал(а):
киньте ещё раз весь код.

Спустя 15 минут, 15 секунд (11.06.2011 - 20:35) Димка_СПб написал(а):
Сейчас так


if (!isset($id))
{
$result = mysql_query ('SELECT `id`,`name`,`title` FROM vestnik',$db);
$myrow = mysql_fetch_array($result);

do
{
printf ("<p><a href='Edit_Articles.php?id=%s'>%s - %s</a></p>",$myrow['id'],$myrow['name'],$myrow['title']);
}
while ($myrow = mysql_fetch_array($result));

}
else
{
$result = mysql_query ("SELECT * FROM vestnik WHERE `id`=$id",$db);
$myrow = mysql_fetch_array($result);

echo '<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="'
.$myrow['name'].'" size="50" maxlength="50">
<br>
<input name="title" type="text" value="'
.$myrow['title'].'" size="50" maxlength="100">
<br>
<input name="meta_d" type="text" value="'
.$myrow['meta_d'].'" size="50" maxlength="100">
<br>
<input name="meta_kw" type="text" value="'
.$myrow['meta_kw'].'" size="50" maxlength="150">
<br>
<textarea name="description" cols="74">'
.$myrow['description'].'</textarea>
<br>
<input name="year" type="text" value="'
.$myrow['year'].'" size="8" maxlength="4">
<br>
<input name="number" type="text" value="'
.$myrow['number'].'" size="8" maxlength="5">
<br>
<textarea name="content" cols="74" rows="20">'
.$myrow['content'].'</textarea>
<br>
<input name="id" type="hidden" value="'
.$myrow['id'].'">
<input name="submit" type="submit" value="обновить в базе данных">
<br>
</form>'
;

}

В последнем запросе mysql_query перепробовал све варианты, в т.ч. что и вы указали; правда не совсем понял с `login`='{$arr['login']}, у меня 'id' соответственно.
Таблица в 9 полей, для id включено auto_increment.

Спустя 29 минут, 32 секунды (11.06.2011 - 21:05) Димка_СПб написал(а):
Спасибо всем, с $end разобрались.
Вот бы ещё форма заработала и начала выводить информацию из БД. Проблема уже с $id.
Есть ещё желающие помогальцы?

Спустя 1 час, 5 минут, 27 секунд (11.06.2011 - 22:10) VolDroN написал(а):
1.Зачем 2 раза $myrow = mysql_fetch_array($result);?
2. ID при запросе к бд, где он находится в WHERE извлекаться не будет. Т.к. то что вы используете id в запросе, уже подразумевает то, что у вас id есть.
3. Лучше не используйте * в запросах, а перечисляйте все колонки через запятую.

4. Насчёт mysql_fetch_...:
4.1. mysql_fetch_array() - даёт в результате вам массив, к которому вы можете обратиться двумя способами: $result['название_колонки'] и $result[цифра] (цифры расположены в том порядке, в каком вы указываете в запросе. тоесть если запрос SELECT `login`, `password`... то чтобы обратиться к логину нужно будет указать $result[0] а паролю $result[1], если запрос SELECT `password`, `login`... то чтобы посмотреть логин нужно обратиться $result[1] а пароль $result[0]). Лично я, эту функцию использую только при запросах наподобие SELECT COUNT(`id`) (запрос чтобы посчитать количество записей), здесь уже по ключу нельзя обратиться, надо использовать mysql_fetch_array() и результат смотреть в $result[0].
4.2. mysql_fetch_assoc() - возвращает только массив с ключами - именами колонок. Т.е. с помощью $result[0] вы к нему не обратитесь. Но это обычно и ненужно. Но зато эта функция экономит php ресурсы.
вот код:

if(!isset($id))
{
$query = mysql_query('SELECT `id`,`name`,`title` FROM vestnik');

while ($myrow = mysql_fetch_assoc($result));
echo "<p><a href=\"Edit_Articles.php?id={$row['id']}\">{$row['name']} - {$row['title']}</a></p>";
}
else
{
$result = mysql_query ("SELECT `name`, `title`, `meta_d`, `meta_kw`, `description`, `year`, `number`, `content` FROM vestnik WHERE `id`='$id'");
$row = mysql_fetch_assoc($result);

echo '<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="'
.$row['name'].'" size="50" maxlength="50" />
<br />
<input name="title" type="text" value="'
.$row['title'].'" size="50" maxlength="100" />
<br />
<input name="meta_d" type="text" value="'
.$row['meta_d'].'" size="50" maxlength="100" />
<br />
<input name="meta_kw" type="text" value="'
.$row['meta_kw'].'" size="50" maxlength="150" />
<br />
<textarea name="description" cols="74">'
.$row['description'].'</textarea>
<br />
<input name="year" type="text" value="'
.$row['year'].'" size="8" maxlength="4" />
<br />
<input name="number" type="text" value="'
.$row['number'].'" size="8" maxlength="5" />
<br />
<textarea name="content" cols="74" rows="20">'
.$row['content'].'</textarea>
<br />
<input name="id" type="hidden" value="'
.$id.'" />
<input name="submit" type="submit" value="обновить в базе данных" />
<br />
</form>'
;
}

Спустя 3 минуты, 37 секунд (11.06.2011 - 22:14) VolDroN написал(а):
<a href=\"Edit_Articles.php?id={$row['id']}\">
обратный слэш (\) говорит php чтобы он впереди идущий знак не считал за служебный. В этом случае чтобы он не обрывал строку увидев ".

Спустя 55 минут, 27 секунд (11.06.2011 - 23:09) Димка_СПб написал(а):
Спасибо огромное, но не фурычит. Форма с данными из-под конкретного id, который появляется в url, напр. при наведении на ссылку, не отображается. Опять же - как будто щелкаешь по пустой ссылке.
Может что-то в БД, но до сих пор нареканий не было?

И ещё я понял, что $query вначале вы просто не заметили, - должно быть $result?..
Тоже $myrow в первой части вместо $row. По крайней мере, это то что я немного понимаю.

Спустя 11 минут, 56 секунд (11.06.2011 - 23:21) Потрашитель написал(а):
опять попов..

Спустя 6 минут, 42 секунды (11.06.2011 - 23:28) Димка_СПб написал(а):
Я не знал, что Попов на плохом счету у вэб-програмистов. Просто других уроков для начинающих, что говорится, днём с огнём...

Спустя 4 минуты, 29 секунд (11.06.2011 - 23:32) sharki написал(а):
Димка_СПб
Курсы от "Специалист" вроде получше будут. На торрентах все есть.

Спустя 8 часов, 6 минут, 5 секунд (12.06.2011 - 07:38) VolDroN написал(а):
Димка_СПб это я поменял название зачем то, уже не помню)
сейчас немогу, но как приду, если не кто не поможет, разберусь.

Спустя 2 минуты, 3 секунды (12.06.2011 - 07:40) VolDroN написал(а):
а всё, поменяйте на 4 или 5ой строчке
while ($myrow = mysql_fetch_assoc($result));
на
while($row = mysql_fetch_assoc($query));

Спустя 4 часа, 4 минуты, 29 секунд (12.06.2011 - 11:45) Димка_СПб написал(а):
Цитата (sharki @ 11.06.2011 - 20:32)
Димка_СПб
Курсы от "Специалист" вроде получше будут. На торрентах все есть.

Спасибо, поищем.

Спустя 7 минут, 54 секунды (12.06.2011 - 11:53) Димка_СПб написал(а):
Цитата (VolDroN @ 12.06.2011 - 04:40)
а всё, поменяйте на 4 или 5ой строчке
while ($myrow = mysql_fetch_assoc($result));
на
while($row = mysql_fetch_assoc($query));

Спасибо, я ещё раз всё проверю и отпишусь.
Возможны какие-то косяки всё-таки в самой таблице. У меня напр., при удалении статьи, порядковый номер id не смещается, остаётся уникальным, т.е. нумерация щербатая остаётся 1,2,3,5,6,7,9,10. Почему так, не было времени разобраться, хотя всё это поправимо.
Может быть дело в настройках каких-то. Короче посмотрим.
И то, что вы про массивы пишете, тоже вроде всё понятно; просто, чтоюы так вертеть и моделировать php-код, нужно долго заниматься. так всегда было в програмировании.
Спасибо за помощь.

Спустя 26 минут, 48 секунд (12.06.2011 - 12:20) allplayer написал(а):
Ищи ошибку :
	while ($myrow = mysql_fetch_assoc($result));
echo "<p><a href=\"Edit_Articles.php?id={$row['id']}\">{$row['name']} - {$row['title']}</a></p>";

У тебя массив присваивается переменной $myrow, а ты пытаешься получить инфу из $row.

А ещё у тебя чуть выше:
	$query = mysql_query('SELECT `id`,`name`,`title` FROM vestnik');

while ($myrow = mysql_fetch_assoc($result));

Задаешь как $query а вытащить хочешь из $result

Спустя 9 минут, 56 секунд (12.06.2011 - 12:30) allplayer написал(а):
Вобщем вот тебе код:
if(!isset($id))
{
$query = mysql_query('SELECT `id`,`name`,`title` FROM vestnik');

while ($myrow = mysql_fetch_assoc($query));
echo '<p><a href="Edit_Articles.php?id='.$myrow['id'].'">'.$myrow['name'].' - '.$myrow['title'].'</a></p>';
}
else
{
$result = mysql_query ("SELECT `name`, `title`, `meta_d`, `meta_kw`, `description`, `year`, `number`, `content` FROM vestnik WHERE `id`='$id'");
$row = mysql_fetch_assoc($result);

echo '
<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="'
.$row['name'].'" size="50" maxlength="50" />
<br />
<input name="title" type="text" value="'
.$row['title'].'" size="50" maxlength="100" />
<br />
<input name="meta_d" type="text" value="'
.$row['meta_d'].'" size="50" maxlength="100" />
<br />
<input name="meta_kw" type="text" value="'
.$row['meta_kw'].'" size="50" maxlength="150" />
<br />
<textarea name="description" cols="74">'
.$row['description'].'</textarea>
<br />
<input name="year" type="text" value="'
.$row['year'].'" size="8" maxlength="4" />
<br />
<input name="number" type="text" value="'
.$row['number'].'" size="8" maxlength="5" />
<br />
<textarea name="content" cols="74" rows="20">'
.$row['content'].'</textarea>
<br />
<input name="id" type="hidden" value="'
.$id.'" />
<input name="submit" type="submit" value="обновить в базе данных" />
<br />
</form>
'
;
}

Спустя 7 часов, 15 минут, 9 секунд (12.06.2011 - 19:45) VolDroN написал(а):
allplayer я уже написал об этом)
я просто случаино названия поменял..

Спустя 9 минут, 58 секунд (12.06.2011 - 19:55) VolDroN написал(а):
Цитата
порядковый номер id не смещается, остаётся уникальным, т.е. нумерация щербатая остаётся 1,2,3,5,6,7,9,10

Димка_СПб так и должно быть, сами подумайте, если бы какой-нибудь сайт (test.ru) размещал ссылку на статью (site.ru/news.php?id=15), а на site.ru удалили бы какую-нибудь 8ую статью, то пользователь, смотря test.ru и кликнув по ссылки, увидел бы не 15ую а 16ую статью, а это уже хреново.
Если хотите заного поставить чтобы id причеслялся с определённой цифры, в phpmyadmin зайдите в таблицу, там опции, и там auto_increment, поставьте нужное значение (1)

Спустя 18 часов, 35 минут, 39 секунд (13.06.2011 - 14:30) Димка_СПб написал(а):
allplayer
Ошибки, что вы указали, я исправил сразу: там ясно, что по недогляду VolDroN пропустил ляп. Не страшно, это азбука.
Беда в том, что всё равно не работает вторая часть кода.
Когда выполняется первое условия ветвления, выводится в цикле список всех статей(-ссылок);
затем, кликая на сслыку должно выполнится второе условие, т.к. мы имеем уже конкретный id (меня совершенно правильно поправили по поводу нумерации), но вот он не читается как переменная (правильно ли я выражаюсь, не знаю) и форма с данными статьи не появляется. При том, что в адресной строке всё указывает на смену запроса, т.е. указывается конкретная статья в БД
Цитата
http://127.0.0.2/First_php_site/Admin/Edit_Articles.php?id=8

Подчеркну, что в сслыке указана та же страница, на которой мы находимся; хотя исполняемому коду это "фиолетово"...
Как только не писал выражение
	while ($myrow = mysql_fetch_assoc($query));
echo '<p><a href="Edit_Articles.php?id='.$myrow['id'].'">'.$myrow['name'].' - '.$myrow['title'].'</a></p>';

но вот это
Цитата
FROM vestnik WHERE `id`='$id'

по-прежнему почему-то не срабатывает, увы.

Спустя 36 минут, 16 секунд (13.06.2011 - 15:07) Димка_СПб написал(а):
И ещё один момент.
Я упростил оператор ветвления и убрал форму на отдельную страницу, указав её в ссылке
	while ($row = mysql_fetch_assoc($result))
echo "<p><a href=\"Edit_Articles_second.php?id={$row['id']}\">{$row['name']} - {$row['title']}</a></p>";

или
	while ($myrow = mysql_fetch_assoc($query));
echo '<p><a href="Edit_Articles_second.php?id='.$myrow['id'].'">'.$myrow['name'].' - '.$myrow['title'].'</a></p>';


Теперь форма появляется, в адресной строке указывается конкретная статья с id, но интерпретатор выдаёт, что он не может определить переменную $id
Цитата
Notice: Undefined variable: id in C:\Apache 2.2\site_2\First_php_site\Admin\Edit_Articles_second.php on line 27

Notice: Undefined variable: id in C:\Apache 2.2\site_2\First_php_site\Admin\Edit_Articles_second.php on line 47

Т.е там, где мы её указываем
Цитата
   $result = mysql_query ("SELECT `name`,`title`,`meta_d`,`meta_kw`,`description`,`year`,`number`,`content` FROM vestnik WHERE `id`='$id'",$db);
...
<input name="id" type="hidden" value="'.$id.'" />

Такая вот чепуха!

Спустя 1 час, 27 минут, 5 секунд (13.06.2011 - 16:34) Димка_СПб написал(а):
Ура, заработало

Дело было в Апач, которому вручную нужно было прописать новую глобальную переменную. Поскольку статья с id "летит" в форму (на этой же или другой странице) методом GET, то и следовало указать, что
<?php $id = $_GET['id'];?>
Потом пришлось поменять синтаксис условия, а $id = $_GET['id'] поместить во вторую часть кода (где таблица). Иначе при первом запросе к Edit_Articles.php возникала ошибка неопределённой переменной $id.
Короче, мы в той или иной степени улучшали код, не решая саму проблему ;) Ничего страшного, я бы всё-равно без посторонней помощи не разобрался.
Кстати, жду и вашего мнения на этот счёт!
Так что теперь вот так.
<?php
if (!isset($_GET['id']))
{
$result = mysql_query ('SELECT `id`,`name`,`title` FROM vestnik',$db);

while ($row = mysql_fetch_assoc($result))
echo "<p><a href=\"Edit_Articles.php?id={$row['id']}\">{$row['name']} - {$row['title']}</a></p>";

}
else
{
$id = $_GET['id'];
$result = mysql_query ("SELECT `name`,`title`,`meta_d`,`meta_kw`,`description`,`year`,`number`,`content` FROM vestnik WHERE `id`='$id'",$db);
$row = mysql_fetch_assoc($result);

echo '<form action="Update_Articles.php" method="post" target="_parent">
<input name="name" type="text" value="'
.$row['name'].'" size="50" maxlength="50" />
<br>
<input name="title" type="text" value="'
.$row['title'].'" size="50" maxlength="100" />
<br>
<input name="meta_d" type="text" value="'
.$row['meta_d'].'" size="50" maxlength="100" />
<br>
<input name="meta_kw" type="text" value="'
.$row['meta_kw'].'" size="50" maxlength="150" />
<br>
<textarea name="description" cols="74">'
.$row['description'].'</textarea>
<br>
<input name="year" type="text" value="'
.$row['year'].'" size="8" maxlength="4" />
<br>
<input name="number" type="text" value="'
.$row['number'].'" size="8" maxlength="5" />
<br>
<textarea name="content" cols="74" rows="20">'
.$row['content'].'</textarea>
<br>
<input name="id" type="hidden" value="'
.$id.'" />
<input name="submit" type="submit" value="обновить в базе данных" />
<br>
</form>'
;
}
?>

Спасибо за помощь.

Спустя 37 минут (13.06.2011 - 17:11) VolDroN написал(а):
((: теперь для полного счастья надо $id от инъекции защитить.
$id = mysql_real_escape_string($_GET['id'])

Спустя 1 час, 42 минуты, 33 секунды (13.06.2011 - 18:53) Димка_СПб написал(а):
А что это такое и куда это воткнуть? В начало страницы, перед html-кодом?

Спустя 14 часов, 49 минут, 44 секунды (14.06.2011 - 09:43) VolDroN написал(а):
ну где у вас $id = $_GET['id']
надо заменить на $id = mysql_real_escape_string($_GET['id'])
mysql_real_escape_string() - экранирует кавычки, т.е если вам вместе с айди (http://site.ru/index.php?id=2'), помимо цифр отправят ненужные знаки(которые не безопасны) случайно или специально чтобы взломать сайт, функция ставит перед всеми кавычками знак "\", а этот знак уже говорит о том чтобы не воспринимать впереди идущи знак как служебный.


можно и подругому сделать, проверять состоит ли ид из одних только цифр:
if(is_numeric($_GET['id']))
{
//дальше
}
else
{
die('Введите числовой id.<br/><a href="/registration.php">назад</a>');
}

Спустя 17 минут, 24 секунды (14.06.2011 - 10:00) Димка_СПб написал(а):
Здорово, сделаем; хотя пока до безопасности сайта от взломов и проч. и защиты БД я ещё не дошел, сначала основой бы овладеть.
Короче, спасибо вам, VolDroN, и другим за участие!
Тема закрыта.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.