Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ваша статья не добавлена
 
 автор: Mekomelo   (21.02.2008 в 19:17)   письмо автору
 
 

Здравствуйте. Подскажите пожалуйста решение моей проблемки.
Пытаюсь добавить статью, но выскакивает соощение "Ваша статья не добалена!". Я уже смотрел и так и сяк...

Есть форма через которую я ввожу данные (её я не привожу), и файл который эти данные обрабатывает:

<?php
include ("blocks/bd.php");

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_k);}}
if (isset(
$_POST['date']))        {$date $_POST['date']; if ($date == '') {unset($date);}}
if (isset(
$_POST['description'])) {$description $_POST['description']; if ($description == '') {unset($description);}}
if (isset(
$_POST['text']))        {$text $_POST['text']; if ($text == '') {unset($text);}}
if (isset(
$_POST['author']))      {$author $_POST['author']; if ($author == '') {unset($author);}}
?>
<?php
$text 
stristr ($text'<body');
$text stristr ($text'>');
$text substr ($text1strpos ($text'</BODY>') -1);
?>
<table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
 <tr>
    <td><table width="690" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td valign="top">
      
         <?php 
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author))
{

$result mysql_query ("INSERT INTO lessons (title,meta_d,meta_k,date,description,text,author) VALUES ('$title', '$meta_d','$meta_k','$date','$description','$text','$author')");

if (
$result == 'true') {echo "<p>Ваша статья успешно добалена!</p>";}
else {echo 
"<p>Ваша статья не добалена!</p>";}

}         
else 
{
echo 
"<p>Вы ввели не всю информацию, поэтому статья не может быть добалена.</p>";
}
?>


Мне кажется, что проблема заключается в неверно созданой таблице.
Вот sql запрос той таблицы:

CREATE TABLE IF NOT EXISTS "lessons" (
  "id" int(4) NOT NULL auto_increment,
  "title" tinytext NOT NULL,
  "meta_d" tinytext NOT NULL,
  "meta_k" tinytext NOT NULL,
  "date" date NOT NULL default '0000-00-00',
  "description" text NOT NULL,
  "text" text NOT NULL,
  "author" tinytext NOT NULL,
  PRIMARY KEY  ("id")
) AUTO_INCREMENT=5 ;


Помогите кто чем может.

   
 
 автор: olejek   (22.02.2008 в 10:18)   письмо автору
 
   для: Mekomelo   (21.02.2008 в 19:17)
 

Выводите сообщение об ошибке в случае, если запрос возвратит false:
$result = mysql_query ("INSERT INTO lessons (title,meta_d,meta_k,date,description,text,author) 
VALUES ('$title', '$meta_d','$meta_k','$date','$description','$text','$author')") or die (mysql_error());

Тогда помощь посторонних не понадобится, сами разберетесь.

   
 
 автор: Trianon   (22.02.2008 в 10:57)   письмо автору
 
   для: Mekomelo   (21.02.2008 в 19:17)
 

Между прочим:
if ($result == 'true') {echo "<p>Ваша статья успешно добалена!</p>";}

В $result ни при каких обстоятельствах не появится строка 'true' просто
потому, что функция mysql_query() не возвращает строки.
Она возвращает дескриптор набора строк результата запроса (если запрос был исполнен)
либо false (если запрос был отвергнут).
Заметьте, во втором случае она возвращает false, а не 'false' .
Значение true она не возвращает вообще.

   
 
 автор: Mekomelo   (22.02.2008 в 13:44)   письмо автору
 
   для: Trianon   (22.02.2008 в 10:57)
 

Дело в том, что исходный код который я привел у меня на локалхосте работает, а вот заливая на платный хостинг и не работает.

Сейчас попрою поизменять то что посоветовали.

   
 
 автор: Unkind   (23.02.2008 в 14:36)   письмо автору
 
   для: Mekomelo   (22.02.2008 в 13:44)
 

> Дело в том, что исходный код который я привел у меня на локалхосте работает, а вот заливая на платный хостинг и не работает.
Возможно, у Вас на localhost включен режим magic_quotes_gpc.
Надо переписать код так, чтобы данные эскейпировались вне зависимости от состояния режима. Причем, эскейпировались один раз.

   
 
 автор: mihdan   (22.02.2008 в 12:04)   письмо автору
 
   для: Mekomelo   (21.02.2008 в 19:17)
 


<?
if (mysql_num_rows($result) > 0) {echo "<p>Ваша статья успешно добалена!</p>";}
else {echo 
"<p>Ваша статья не добалена!</p>";}
?>

   
 
 автор: Trianon   (22.02.2008 в 20:45)   письмо автору
 
   для: mihdan   (22.02.2008 в 12:04)
 

Из мануала: mysql_num_rows() возвращает количество рядов результата запроса. Эта команда работает только с запросами SELECT.

C результатом запроса INSERT эта функция работать не станет.

   
 
 автор: Mekomelo   (23.02.2008 в 16:16)   письмо автору
 
   для: Mekomelo   (21.02.2008 в 19:17)
 

Спасибо всем за внимание и за помощь. Проблема решена. Нужно было убрать этот "true" .
Кстати скрипт был взят из диска с видео уроками по рнр. Который помоему продается за 60$
Там ещё не работает изменение статьи, но думаю разберусь.

Ещё раз всем огромное спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования