<?php
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);} }
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);} }
if (isset($_POST['photo'])) {$photo = $_POST['photo']; if ($photo == '') {unset($photo);} }
if (isset($_POST['link'])) {$link = $_POST['link']; if ($link == '') {unset($link);} }
if (isset($_POST['id'])) {$id = $_POST['id'];}
?>
<!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 media="all" type="text/css" rel="stylesheet" href="css/all.css" />
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="css/lt7.css" media="screen"/><![endif]-->
</head>
<body>
<div id="wrapper">
<h1><a href="#">CLEAN MARKUP</a></h1>
<div id="container">
<?php include("blocks/nav.php"); ?>
<div id="two-columns">
<div class="content">
<?php
if (isset($title) && isset($text) && isset($photo) && isset($link))
{
$result = mysql_query ("UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'");
if ($result == 'true') {echo "<p>Successfully updated to database</p>";}
else {echo "<p>Record not updated</p>";}
}
else
{
echo "<p>check field</p>";
}
?>
</div>
<?php include("blocks/sidebar.php"); ?>
</div>
<?php include("blocks/footer.php"); ?>
</div>
</div>
</body>
</html>
Результат мне выдает, что все хорошо, но изменения не вносятнся.
если поменять WHERE id='$id' на какой-то четкий id, то изменения вносятся. Получается что-то не так с этой переменной. Но что не пойму.
Помогите, плиз
Спустя 11 минут, 45 секунд (29.01.2010 - 12:02) Ice написал(а):
что выдаст
Второй момент - где проверка данных на соответствие?
echo $_POST['id'];
Второй момент - где проверка данных на соответствие?
Спустя 43 минуты, 35 секунд (29.01.2010 - 12:45) DieM написал(а):
а где у меня echo $_POST['id'];?
У меня есть if (isset($_POST['id'])) {$id = $_POST['id'];}
а второй момент - у меня в отдельном файле выводятся данные из базы в форму
У меня есть if (isset($_POST['id'])) {$id = $_POST['id'];}
а второй момент - у меня в отдельном файле выводятся данные из базы в форму
Спустя 8 минут, 22 секунды (29.01.2010 - 12:54) Gabriel написал(а):
пост есть суперглобальный масив и $_POST['id'] у тебя есть.
Спустя 23 минуты, 29 секунд (29.01.2010 - 13:17) Ice написал(а):
напиши руками эхопостыд. Не пустой ли он случаем у тебя...
Спустя 13 минут, 7 секунд (29.01.2010 - 13:30) DieM написал(а):
Все нормально, возвращает нужный ID
Спустя 4 минуты, 57 секунд (29.01.2010 - 13:35) Ice написал(а):
давай попробуем щас вот этот кусок
переписать так:
что выдал эхо?
$result = mysql_query ("UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'");
переписать так:
$sql = "UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'";
echo $sql;
$result = mysql_query ($sql) or die(mysql_error());
что выдал эхо?
Спустя 2 минуты, 8 секунд (29.01.2010 - 13:37) Gabriel написал(а):
Ice
добавь or die( mysql_error() );
добавь or die( mysql_error() );
Спустя 22 минуты, 57 секунд (29.01.2010 - 14:00) DieM написал(а):
UPDATE portfolio SET title='1', text='sdfg', photo='images/img-site01.jpg', link='./portfolio/UnderwaterClub/about.html' WHERE id=''
Тоесть, id у меня пустое.
А ниже оставил
echo $_POST['id'];
оно выдало нужный номер...
Тоесть, id у меня пустое.
А ниже оставил
echo $_POST['id'];
оно выдало нужный номер...
Спустя 16 минут, 19 секунд (29.01.2010 - 14:17) Ice написал(а):
Помоему осталось 2 шага) перед $sql поставь echo $id;
УПД Второй момент: да не из базы в форму? Где экранирование служебных сиимволов базы?
УПД Второй момент: да не из базы в форму? Где экранирование служебных сиимволов базы?
Спустя 8 минут, 52 секунды (29.01.2010 - 14:25) DieM написал(а):
Добавил echo $id;
Ничего не выдало...
Где экранирование служебных сиимволов базы?
Не делал такого...
Ничего не выдало...
Где экранирование служебных сиимволов базы?
Не делал такого...
Спустя 12 минут, 6 секунд (29.01.2010 - 14:38) Gabriel написал(а):
<?php
$title = isset( $_POST['title'] ) ? $_POST['title'] : NULL;
$text = isset( $_POST['text'] ) ? $_POST['text'] : NULL;
$text = isset( $_POST['photo'] ) ? $_POST['photo'] : NULL;
$text = isset( $_POST['link'] ) ? $_POST['link'] : NULL;
$text = isset( $_POST['id'] ) ? $_POST['id'] : NULL;
$sql = "UPDATE portfolio SET
title = '".mysql_real_escape_string( $title )."',
text = '".mysql_real_escape_string( $text )."', photo='".mysql_real_escape_string( $photo )."',
link='".mysql_real_escape_string( $link )."'
WHERE id='".intval( $id )."'";
echo $sql;
$result = mysql_query ($sql) or die(mysql_error().'<br />'.nl2br( $sql ));
попробуй посмотри чего скажет.
Спустя 13 минут, 6 секунд (29.01.2010 - 14:51) Ice написал(а):
Цитата (DieM @ 29.01.2010 - 15:25) |
Где экранирование служебных сиимволов базы? Не делал такого... |
надо сделать обязательно. Проверок много не бывает. Все данные, которые идут в базу пропусти через mysql_real_escape_string()
Спустя 1 час, 8 минут, 55 секунд (29.01.2010 - 16:00) DieM написал(а):
в общем если сделать
то выдает
UPDATE portfolio SET title = '2', text = 'Lorem ipsum2', photo='images/img-site02.jpg', link='./portfolio/Test/home.html' WHERE id='0'
Successfully updated to database
2
Хотя фактически id=2 (последняя строка)
Так и не пойму где проблема...
Кстати SET title = '2 - это тоже id выплыл, реально тут другое было написано
if (isset($title) && isset($text) && isset($photo) && isset($link))
{
$sql = "UPDATE portfolio SET
title = '".mysql_real_escape_string( $title )."',
text = '".mysql_real_escape_string( $text )."', photo='".mysql_real_escape_string( $photo )."',
link='".mysql_real_escape_string( $link )."'
WHERE id='".intval( $id )."'";
echo $id;
echo $sql;
$result = mysql_query ($sql) or die(mysql_error());
if ($result == 'true')
{
echo "<p>Successfully updated to database</p>";
}
else
{
echo "<p>Record not updated</p>";
}
}
else
{
echo "<p>check field</p>";
}
то выдает
UPDATE portfolio SET title = '2', text = 'Lorem ipsum2', photo='images/img-site02.jpg', link='./portfolio/Test/home.html' WHERE id='0'
Successfully updated to database
2
Хотя фактически id=2 (последняя строка)
Так и не пойму где проблема...
Кстати SET title = '2 - это тоже id выплыл, реально тут другое было написано
! |
Kuliev |
Спустя 3 часа, 32 минуты, 23 секунды (29.01.2010 - 19:32) Gabriel написал(а):
DieM
а ид точно берется из поста?
а ид точно берется из поста?
Спустя 15 часов, 3 минуты, 56 секунд (30.01.2010 - 10:36) DieM написал(а):
Вроде бы да.
Во всяком случае удалить запись из базы получается по id.
Во всяком случае удалить запись из базы получается по id.