[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает функция INSERT INTO
X L
Здравствуйте уважаемые программисты - очень прошу у вас помощи.
А проблема - такова написав форму для создания новой строки в базу данных
Вот такую: на странице insert_form.php

<form name="form" method="post" action="insert_obrabot.php">
<label>
Введите название статьи<br>
<input
type="text" name="title"></label>
</p>
<p>
<label>
Краткое описание статьи meta_d<br>
<input
id="meta_d" type="text" name="meta_d"></label>
</p>
<p>
<label>
Ключевые слова статьи - meta_k<br>
<input
type="text" name="meta_k"></label>
</p>
<p>
<label>
Введите описание статьи<br>
<textarea
name="description" cols="45" rows="5"></textarea></label>
</p>
<p>
<label>
HTML код статьи<br>
<textarea
name="text" cols="60" rows="20"></textarea></label>
</p>
<p>
<label><br>
<input
type="submit" name="Submit" value="Занести в базу">
</label>
</P>
</form>


А так же php программу обработчик на стр. insert_obrabot.php
Вот такую:


<?php
// привязка данных со стр. config.php
include "../adds/config.php";

if (isset ($_POST['title'])) {$title=$_POST['title']; if ($title == '') {unset ($title);}}
if (isset ($_POST['meta_d'])) {$meta_d=$_POST['meta_d']; if( $meta_d == '') {unset ($meta_d);}}
if (isset ($_POST['meta_k'])) {$meta_k=$POST['meta_k']; if( $meta_k == '') {unset ($meta_d);}}
if (isset ($_POST['description'])) {$description=$_POST['description'];
if ($description == '') {unset ($description);}}
if (isset ($_POST['text'])) {$text=$_POST['text']; if($text == '') {unset($text);}}
?>
HTML
<?php
if(isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text))
{
$sql_insert = mysql_query ("INSERT INTO pages (title,meta_d,meta_k,description,text) VALUES
('
$title','$meta_d','$meta_k','$description','$text')");
if ($sql_insert=='true') {echo '<p>Ваша статья успешно добавлена</p>';}
else {echo '<p>Ваша статья не добавлена</p>';}
}

else {
echo 'Вы ввели не всю информацию';
}
?>

Так вот имея таблицу pages в которую шлю данные в базе с названием php заполняю поля формы !ВСЕ! и без каких либо о шибок страница пишет

Вы ввели не всю информацию.

Может я на странице с формой забыл кусок кода или созданная таблица pages
не может принять данные ????



Спустя 52 минуты, 56 секунд (7.07.2010 - 13:46) NoCash написал(а):
возможно не прав но вместо
if(isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text))

поставь
if(isset($_POST['Submit'])) 

а то как то получается что при нажатии кнопки никаких действий делать не нужно.
P.S. плиз подсвечивайте код, а то оч сложно одноцветный код воспринимать

Спустя 24 минуты, 4 секунды (7.07.2010 - 14:10) inpost написал(а):
Тут же наглядно видно, что скрипт взят у Попова, так что мешает тебе лично ещё раз пересмотреть данный урок по вставке в базу данных, а не спрашивать тут глупых вопросов?

А если хочешь, чтоб не было проблем:
$result = mysql_query("INSERT INTO `pages` SET `title`='".$_POST[title]."',`description`='".$_POST[description]."',`text `='".$_POST[text ]."',`meta_k`='".$meta_k."'",$db);


А теперь насчет твоей проблемы. Перечитай условие:
Если существуют переменные то выполнять вставку, если нет - то высвечивать текст!
Внимательно смотрим, какие переменные необходимы, проверь, существуют ли они и передаются ли они на страницу обработчика.

Спустя 2 минуты, 27 секунд (7.07.2010 - 14:12) netruxa написал(а):
Цитата (inpost @ 7.07.2010 - 11:10)
А если хочешь, чтоб не было проблем:
$result = mysql_query("INSERT INTO `pages` SET `title`='".$_POST[title]."',`description`='".$_POST[description]."',`text `='".$_POST[text ]."',`meta_k`='".$meta_k."'",$db);


как раз таки при таком запросе проблемы будут smile.gif
фильтровать надо бяку, приходящую от клиента

Спустя 3 минуты, 38 секунд (7.07.2010 - 14:16) X L написал(а):
К сожалению не вышло с if(isset($_POST['Submit']))
- и менял и добавлял в эту строку - не работает.
P.S. ещё бы узнать как его подсвечивать - этот код тогда и с радостью занялся бы.

Спустя 5 минут, 7 секунд (7.07.2010 - 14:21) DedMorozzz написал(а):
там теги есть "ПХП" и "ХТМЛ"

Спустя 9 минут, 10 секунд (7.07.2010 - 14:30) Gabriel написал(а):
сразу чювствуется рука Попова.
1. странное поповвское определение переменных (в результате которого логи ошибок могут рости ого-го как)
2.
 isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text) 
а не проще так?
isset($title, $meta_d, $meta_k, $description, $text )

3. че за ужасть? насколько я знаю ниодна функция пхп (документированная) не вернет стринг true, а вернет константу true (или че оно там, чет неприпомню шас).
4. а после запроса можно добавить
or die(mysql_error()); 
и может тогда все станет на свои места.

Спустя 3 минуты, 6 секунд (7.07.2010 - 14:33) inpost написал(а):
Читай внимательно это условие:
if(isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text)){
$sql_insert = mysql_query ("INSERT INTO pages (title,meta_d,meta_k,description,text)
VALUES('
$title','$meta_d','$meta_k','$description','$text')");
if ($sql_insert=='true') {echo '<p>Ваша статья успешно добавлена</p>';}
else {echo '<p>Ваша статья не добавлена</p>';}}else {echo 'Вы ввели не всю информацию';}


Если существуют эти переменные, то заносим в базу, если нет - то выводим сообщение: 'Вы ввели не всю информацию'. Дошло? Их не существует, или какой-то нету. Сделай проверку, пиши:
echo $title.$meta_d.$meta_k.$description.$text;

Какой нету, та не пришла!

Спустя 18 минут, 19 секунд (7.07.2010 - 14:52) Ice написал(а):

<?php
// привязка данных со стр. config.php
include "../adds/config.php";
if( $_SERVER['REQUEST_METHOD'] == 'POST') {
$title = mysql_escape_string( $_POST['title'] );
$meta_d = mysql_escape_string( $_POST['meta_d'] );
$meta_k = mysql_escape_string( $_POST['meta_k'] );
$description = mysql_escape_string( $_POST['description'] );
$text = mysql_escape_string( $_POST['text'] );

if( ! empty( $title ) &&
!
empty( $meta_d ) &&
!
empty( $meta_k ) &&
!
empty( $description ) &&
!
empty( $text ) ) {
$sql = "INSERT INTO pages ( title,
meta_d,
meta_k,
description,
text)
VALUES( '
$title',
'
$meta_d',
'
$meta_k',
'
$description',
'
$text')";
$sql_insert = mysql_query($sql) or die( mysql_error() );
echo '<p>Ваша статья успешно добавлена</p>';
} else {
echo 'Вы ввели не всю информацию';
}
}

?>

Шлифовочка, уж если не идеальная, то, по крайней мере, красивей и лучше, чем было. А было полнейшее безрассудство.

Спустя 10 минут, 41 секунда (7.07.2010 - 15:02) inpost написал(а):
Ice Ой как не красиво и не удобно читать! Просто ужас =(
Надо не умничать а читать то, что пишет автор. У него проверка на существование переменных не проходит, поэтому и пишется текст

Вот, чтоб нагляднее было:
if(isset($title) && isset($meta_d) && isset($meta_k) && isset($description) && isset($text))
{тра-ля-ля}
else {echo 'Вы ввели не всю информацию';}


И сама проблема: "без каких либо о шибок страница пишет "Вы ввели не всю информацию"."

Спустя 7 минут, 9 секунд (7.07.2010 - 15:10) Ice написал(а):
Ошибкой было два раза проверять наличие ПОСТа, или ты не заметил этого?
Если очень требуется, могу обосновать все свои слова. Но я думаю, что здесь и без слов понятно, что исправлять надо навороты такие. За сим откланяюсь во избежание дальнейшего размусоливания этого вопроса.

Спустя 13 часов, 51 минута, 11 секунд (8.07.2010 - 05:01) X L написал(а):
По наставлению мудрых читателей добавил эту строку на страницу обработки:

echo $title.$meta_d.$meta_k.$description.$text;


И снова заполнил поля - к моему удивлению появились лишь 3 из пяти

А в частности title description и text НО! куда же подевались поля с метами
meta_d и meta_k - Вот в чём вопрос .... dry.gif

Спустя 7 минут, 2 секунды (8.07.2010 - 05:08) X L написал(а):
АГА!!!
Исключил из кода строки про мету и всё заработало! biggrin.gif
НО почему ??? меты не работают всё же. sad.gif

Спустя 6 часов, 34 минуты, 2 секунды (8.07.2010 - 11:42) inpost написал(а):
назови их по другому, без подчеркивания, любым другим способом (metak, metad).
Причина: эти данные не передались с предыдущей страницы.
То имя в форме будет равняться $_POST['имя'] на второй странице обработчика.

Кстати, можешь вообще проверить, какие переменные перешли с предыдущей страницы. Введи:
print_r($_POST);
Быстрый ответ:

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