ochenbogatiy

Рейтинг
1
Регистрация
24.07.2011
Dreammaker:
iexpert, тут все сложнее :)


ТС судя по всему боится, что его кривой код будет украден, поэтому не даёт оригинал, а пытается вызвать телепатические способности у форумчан, публикуя левый код.

Ты даже не представляешь как тут всё сложно =) Копипасти код, да проверяй его сам)

Уважаемые форумчане, прошу сравнить и сказать, в чём приципиальное различие между моим кодом и тем, что выложил LovelASS; Итак, мой код (исправленный)

Файл index.php


<?

$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

include('functions.php');

if (isset($_GET['write'])) {


$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?id=392&write=1" method="post">
<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

ob_start();
$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_GET['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";

$result = mysql_query($query);
echo $query.'<br />'.$result;
if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";
$res = ob_get_contents();
ob_end_clean();
return $res;

}
?>

Теперь его код

файл index.php


<?
$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

if (isset($_POST['write'])) {

include_once('functions.php');
$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="" method="post">
<input type="hidden" name="write" value="1">
<input type="hidden" name="id" value="2">

<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_POST['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";
$result = mysql_query($query);

if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";

return $result;

}
?>

И сразу, чтобы без вопросов лишних было ещё один мой код но РАБОЧИЙ(очень похож на первый)

файл index.php


<?
$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

include('functions.php');

if (isset($_POST['write'])) {


$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?id=392" method="post">
<input type="hidden" name="write" value="1">
<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

ob_start();
$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_GET['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";

$result = mysql_query($query);
echo $query.'<br />'.$result;
if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";
$res = ob_get_contents();
ob_end_clean();
return $res;

}
?>

ВНИМАНИЕ!! Всё три кода формируют ОДИНАКОВЫЕ sql-запросы, НО в первом коде данные в таблице просто обнуляются

Chukcha:
Принципиальная разница в элементарной невнимательности и описке

UPDATE не равно UPATE

это опечатка лишь на форуме, в моём коде UPDATE

ну никто походу не сможет ответить на данный вопрос

спасибо! этот код действительно работает.. но не подскажешь в чём принципиальная разница, мешающая занести данные в базу в моём коде??

собственно код

файл index.php

<?

include('functions.php');

if ($_GET['write'])

$result = writerecord();

?>

<html>

<head>

...

</head>

<body>

<?=$result ?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?write=1&id=2" method="post">

Заголовок:<input type="text" name="header" value="" size="80">

Текст:<textarea cols=50 rows=15 name="text"></textarea>

Сайт:<input type="text" name="sait" size="30" value="">

<input type="submit" name="change" value="Сохранить"></form>

</body>

</html>

файл functions.php

<?

function writerecord()

{

ob_start();

$header = $_POST['header'];

$txt = mysql_escape_string($_POST["text"]);

$sait = mysql_escape_string($_POST['sait']);

$id = intval($_POST['id']);

$text = "UPATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";

$r = mysql_query($text) or die("Query failed: " . mysql_error());

$result = ob_get_contents();

ob_end_clean();

return $result;

}

?>

как же она правильная если Вы пишете text='$_POST['text']' =)

Я такого не писал =)

ну тогда сделайте так:
$text=$_POST[text];

...."UPDATE items SET text='$text'"...

и не заморачивайтесь!

тоже делал - разницы никакой!

тем более что при обновлении страницы мой код уже работает. я думаю тут дело в чём-то другом

Спасибо за ответы, но вы ищете ошибку не там.

mysql запрос который присваивается переменной $text, формируется правильно. Я это проверяю через "echo $text", запрос правильный и никаких ошибок не возникает. здесь дело в чём то другом.

ещё раз акцентирую внимание. при нажатии кнопки обновить в браузере формируется тот же запрос, но данные в БД сохраняются! Ещё напомню, что включена буферизация

morgannn:
попроюуйте так (бОльшее внимание уделяйте ковычкам):

$text = "UPDATE `items` SET `header`='$_POST[header]', `text`='$_POST[text]', `sait`='$_POST[sait]', `moderated`='0' WHERE `id`='$_POST[id]' ";

сами ячейки обрамляйте апострофами, а переменные одинарными ковычками. Если Вы пытаетесь выполнить sait='$_POST['sait']', то ячейке sait задается значение '$_POST['

Обрамил я в кавычки ` - в итоге результат один и тот же.

Насчёт '$_POST[' - в переменную $text заносится значение в двойных кавычках "" поэтому такого не происходит, формируется правильная строка запроса с данными, отправленными через форму.

Кстати, ещё один может быть не маловажный момент. После отправки данных потом при нажатии кнопки обновить в браузере формируется всё тот же sql запрос, но на этот раз данные заносятся в таблицу. Почему же не заносятся с первого раза из переменных?