Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с добавлением статьи в базу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
AndreyT
Отправлено: 12 Июня, 2010 - 00:22:29
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




сделал форму для добавления статьи на сайт
CODE (html):
скопировать код в буфер обмена
  1. <form method="post" action="proc_addarticle.php">
  2.                 <label>Заголовок новости:</label>
  3.                 <input type="text" name="title_new" class="inp_inf" />
  4.                
  5.                 <label>Категория новости:</label>
  6.                 <select name="category" size="4">
  7.                         <?php
  8.                            $host = "localhost";
  9.                            $user = "php_site";
  10.                            $pass = "php_site";
  11.                            $db_name = "php_site";
  12.  
  13.                            $db = mysqli_connect($host, $user, $pass, $db_name);
  14.                         $query_cats = mysqli_query($db, "SELECT `name` FROM `categories`");
  15.                                                
  16.                 while($cat = mysqli_fetch_assoc($query_cats)){
  17.                         echo "<option value=\"". $cat["name"] ."\">". $cat["name"] ."</option>\n";
  18.                 }
  19.                 ?>
  20.                 </select>
  21.                
  22.                 <label>Текст новости:</label>
  23.                 <textarea rows="12" cols="80" class="inp_inf" name="text_new"></textarea>
  24.                
  25.                 <label>Ключевые слова (через запятую):</label>
  26.                 <input type="text" name="keywords_new" class="inp_inf" />
  27.                
  28.                 <input type="submit" value="Добавить новость" class="ok_but" />
  29. </form>


и PHP обработчик

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         if(isset($_SESSION["user"])){
  4.                 $title = $_POST["title_new"];
  5.                 $category = $_POST["category"];
  6.                 $text_new = $_POST["text_new"];
  7.                 $desc_new = substr($text_new, 0, 254);
  8.                 $keywords_new = $_POST["keywords_new"];
  9.                 $error = false;
  10.                 $errortext = "<p>При написании статьи произошли следующие ошибки:</p><ul>";
  11.                                
  12.                 if(empty($title)){
  13.                         $error = true;
  14.                         $errortext .= "<li>Заголовок новости не заполнен.</li>";
  15.                 }
  16.                 if(empty($category)){
  17.                         $error = true;
  18.                         $errortext .= "<li>Категория новости не выбрана.</li>";
  19.                 }
  20.                 if(empty($text_new)){
  21.                         $error = true;
  22.                         $errortext .= "<li>Текст новости не заполнен.</li>";
  23.                 }
  24.                 if(empty($keywords_new)){
  25.                         $error = true;
  26.                         $errortext .= "<li>Ключевые слова не заполнены.</li>";
  27.                 }
  28.                 $errortext .= "</ul>";
  29.                                
  30.                 if($error){
  31.                         echo $errortext;
  32.                 }
  33.                 else{
  34.                         $host = "localhost";
  35.                         $user = "php_site";
  36.                         $pass = "php_site";
  37.                         $db_name = "php_site";
  38.  
  39.                         @$db = mysqli_connect($host, $user, $pass, $db_name);
  40.  
  41.                         if(mysqli_connect_errno()){
  42.                                 echo "Ошибка: не удалось установить соединение с базой данных. Повторите попытку позже.";
  43.                                 exit;
  44.                         }
  45.                         else{
  46.                                 $query_add_article = mysqli_query($db, "INSERT INTO `articles` (`title`, `category`, `text`, `meta_desc`, `meta_keys`) VALUES ('". $title ."', '". $category ."', '". $text_new ."', '". $desc_new ."', '". $keywords_new ."')");
  47.  
  48.                                 if($query_add_article){
  49.                                         echo "Статья добавлена в базу данных успешно!";
  50.                                 }
  51.                                 else{
  52.                                         echo "Возникла ошибка при добавлении статьи в базу данных";
  53.                                 }
  54.                         }
  55.                 }
  56.         }
  57.                         else{
  58.                                 echo "Ошибка!";
  59.                         }
  60. ?>
  61.  


и не хочет вставлять в таблицу данные в чем может быть ошибка?
 
 Top
isle
Отправлено: 12 Июня, 2010 - 06:37:14
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




"@$db = " - выулючили ошибки подключения... зачем на тесте?
Подключение к БД есть, где отключение?

Какую хоть ошибку выдает и в каком месте? Ошибки подключили на отображение? Бывает, что запятую упустишь или обратную кавычку и капец... Однако


/* close connection */
mysqli_close($link);
 
 Top
Champion Супермодератор
Отправлено: 12 Июня, 2010 - 09:28:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




 
 Top
JustUserR
Отправлено: 13 Июня, 2010 - 12:50:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




AndreyT пишет:
И не хочет вставлять в таблицу данные в чем может быть ошибка?
Если ваш SQL-запрос в шаблонном виде и не содержит ошибки то он может стать неверным после интерполяции в нем текстовых переменных - это может происходить если вы не экранируете интерполируемые переменные с помощью функций addslashes или mysql_real_escape_string - также попробуйте вывести ваш SQL-запрос на экран в HTML-encoded-виде и посмотреть на предмет ошибок Также в принципе запрос может не работать по причине несовпадения кодировок - например из-за несоответствия кодировки исходного текста PHP-скрипа и его локали


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
isle
Отправлено: 13 Июня, 2010 - 12:58:57
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




У меня была похожая проблемка - не обновлялись ячейки в БД; я ее нашел, когда включил показ ошибок, может, пригодится Улыбка

Я указал в БД в ячейке вставить цифры (там можно текст вставить и т.д.), а после вычислений скриптом у меня почему-то цифры превращались в текст, т.е.:

вместо $a = 5;

я получал $a = '5';

Поэтому пришлось ставить кавычки перед вводом в БД и тогда записывалось, либо приводить к цифре текст.

Дело давно было, сейчас точно не вспомню как и что делал, но, думаю, смысл понятен... Вдруг кому еще пригодится Улыбка
 
 Top
JustUserR
Отправлено: 13 Июня, 2010 - 13:32:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




isle пишет:
Поэтому пришлось ставить кавычки перед вводом в БД и тогда записывалось, либо приводить к цифре текст.
В таком случае можно проверять тип вставляемых в SQL-запрос данные - если переменная должна быть числом то принудительно приводить ее к числовому виду и вставлять в запрос - а если строкой то производить экранирование Главное чтобы тип вставляемых данных совпадал с типом соответствующих SQL-полей - и хотя автоматическое преобразование имеется но часть данных может обрезаться или испортиться при преобразовании


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB