ТС судя по всему боится, что его кривой код будет украден, поэтому не даёт оригинал, а пытается вызвать телепатические способности у форумчан, публикуя левый код.
Ты даже не представляешь как тут всё сложно =) Копипасти код, да проверяй его сам)
Уважаемые форумчане, прошу сравнить и сказать, в чём приципиальное различие между моим кодом и тем, что выложил 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");
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 запрос, но на этот раз данные заносятся в таблицу. Почему же не заносятся с первого раза из переменных?
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-запросы, НО в первом коде данные в таблице просто обнуляются
Принципиальная разница в элементарной невнимательности и описке
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];
...."UPDATE items SET text='$text'"...
и не заморачивайтесь!
тоже делал - разницы никакой!
тем более что при обновлении страницы мой код уже работает. я думаю тут дело в чём-то другом
Спасибо за ответы, но вы ищете ошибку не там.
mysql запрос который присваивается переменной $text, формируется правильно. Я это проверяю через "echo $text", запрос правильный и никаких ошибок не возникает. здесь дело в чём то другом.
ещё раз акцентирую внимание. при нажатии кнопки обновить в браузере формируется тот же запрос, но данные в БД сохраняются! Ещё напомню, что включена буферизация
попроюуйте так (бОльшее внимание уделяйте ковычкам):
$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 запрос, но на этот раз данные заносятся в таблицу. Почему же не заносятся с первого раза из переменных?