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]   

> Без описания
Extazy
Отправлено: 13 Января, 2010 - 01:17:45
Post Id


Посетитель


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


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




Здравствуйте.
Посмотрите, пожалуйста, архив, куда я положил файлы своего сайта. Из названия понятно какой файл за что отвечает.
У меня проблема такая.. помещаю новость с указанием только заголовка - всё норм! А если попробовать прикрепить файл, то вывод новостей сильно сбивается: то заголовок пропадёт, то совсем новость последняя не появится..
Если вам не трудно, посмотрите пожалуйста результат моей работы.. был бы очень вам благодарен! Там несложный код.

addnews.php - добавляет новость
content.php - выводит список новостей

Вот ссылка: http://narod[dot]ru/disk/16849181000/1[dot]ZIP[dot]html
(МОЖЕТЕ УЖЕ НЕ КАЧАТЬ) - СМОТРИТЕ 3 ПОСТ В ЭТОМ ТОПИКЕ)

Помогите, пожалуйста, новичку Растерялся

(Отредактировано автором: 13 Января, 2010 - 10:08:48)

 
 Top
RomAndry Администратор
Отправлено: 13 Января, 2010 - 01:31:38
Post Id



Частый посетитель


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


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




А не проще привести участок кода, где проблема?
 
My status
 Top
Extazy
Отправлено: 13 Января, 2010 - 10:03:28
Post Id


Посетитель


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


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




кажется с основном проблемой разобрался.. вот подскажите ошибку в этом коде:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.      if($do=="addnews")
  3.      {
  4. ?>
  5. <h1>Добавление статьи:</h1>
  6. <form name="input" action="index.php" method="post" enctype="multipart/form-data">
  7. <br />Заголовок: <input type="text" name="title" /> (обязательно заполнить)
  8. <br />Ссылка на картинку: <input type="file" name="uploadfile" />
  9. <br />Выровнять: <select name="align"><option value="center" selected="selected">по центру</option><option value="left">слева</option><option value="right">справа</option></select>
  10. <br /><textarea name="post" rows="10" cols="100"></textarea>
  11. <br /><input type="submit" value="Отправить" /></form>
  12. <?PHP
  13.      }
  14.      elseif($_POST['post'] & $_POST['title'])
  15.      {
  16.         require("db.php");
  17.         @mysql_connect($server,$dbuser,$dbpassword);
  18.         @mysql_select_db($database_name);
  19.  
  20.         if($_FILES['uploadfile'])
  21.         {
  22.             $uploaddir = './files/';
  23.             $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
  24.             $image = $_FILES['uploadfile']['name'];
  25.  
  26.             if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
  27.             {
  28.                 @mysql_connect($server,$dbuser,$dbpassword);
  29.                 @mysql_select_db($database_name);
  30.                 mysql_query("INSERT INTO posts (title, post, image, image_align) VALUES ('$title', '$post', '$image', '$align')");
  31.                 mysql_close();
  32.  
  33.                 print "Статья с картинкой была успешно размещена.";
  34.             }
  35.             else
  36.             {
  37.                 echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
  38.             }
  39.         }
  40.         else
  41.         {
  42.             require("db.php");
  43.             @mysql_connect($server,$dbuser,$dbpassword);
  44.             @mysql_select_db($database_name);
  45.  
  46.             mysql_query("INSERT INTO posts (title, post) VALUES ('$title', '$post')");
  47.             mysql_close();
  48.             print "Статья успешно размещена.";
  49.         }
  50.      }
  51. ?>


если к новости не прикрепляется картинка, то скрипт не должен выполнять всё, что находится после if($_FILES['uploadfile'])... однако я публикую новость, картинку не указываю, а он мне выдаёт "Ошибка! Не удалось загрузить файл на сервер!"

почему так происходит?? ведь он же не получал через $_FILES ссылку на картинку. значит не должен обрабатывать этот кусок кода..
 
 Top
RomAndry Администратор
Отправлено: 13 Января, 2010 - 10:09:55
Post Id



Частый посетитель


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


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




1. старайтесь делать дебаг
в вашем случае

поможет понять что пришло при добавлении картинки и без нее

2. используйте isset empty
 
My status
 Top
EuGen Администратор
Отправлено: 13 Января, 2010 - 10:24:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




http://phpfaq[dot]ru/debug

(надо бы кнопочку сделать уже такую)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Extazy
Отправлено: 13 Января, 2010 - 10:26:24
Post Id


Посетитель


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


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




прописал if(empty($_FILES['uploadfile'])) и стало наоборот:
- при прикреплении картинки пишет "Статья успешно размещена".. то есть пропускает весь блок, который отвечает за загрузку картинки на фтп..
- а если не прикреплять картинку, то всё норм..

подскажите, что снова не так сделал?

вот код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.      if($do=="addnews")
  3.      {
  4. ?>
  5. <h1>Добавление статьи:</h1>
  6. <form name="input" action="index.php" method="post" enctype="multipart/form-data">
  7. <br />Заголовок: <input type="text" name="title" /> (обязательно заполнить)
  8. <br />Ссылка на картинку: <input type="file" name="uploadfile" />
  9. <br />Выровнять: <select name="align"><option value="center" selected="selected">по центру</option><option value="left">слева</option><option value="right">справа</option></select>
  10. <br /><textarea name="post" rows="10" cols="100"></textarea>
  11. <br /><input type="submit" value="Отправить" /></form>
  12. <?PHP
  13.      }
  14.      elseif($_POST['post'] & $_POST['title'])
  15.      {
  16.         require("db.php");
  17.         @mysql_connect($server,$dbuser,$dbpassword);
  18.         @mysql_select_db($database_name);
  19.  
  20.         if(empty($_FILES['uploadfile']))
  21.         {
  22.             $uploaddir = './files/';
  23.             $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
  24.             $image = $_FILES['uploadfile']['name'];
  25.  
  26.             if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
  27.             {
  28.                 @mysql_connect($server,$dbuser,$dbpassword);
  29.                 @mysql_select_db($database_name);
  30.                 mysql_query("INSERT INTO posts (title, post, image, image_align) VALUES ('$title', '$post', '$image', '$align')");
  31.                 mysql_close();
  32.  
  33.                 print "Статья с картинкой была успешно размещена.";
  34.             }
  35.             else
  36.             {
  37.                 echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
  38.             }
  39.         }
  40.         else
  41.         {
  42.             require("db.php");
  43.             @mysql_connect($server,$dbuser,$dbpassword);
  44.             @mysql_select_db($database_name);
  45.  
  46.             mysql_query("INSERT INTO posts (title, post) VALUES ('$title', '$post')");
  47.             mysql_close();
  48.             print "Статья успешно размещена.";
  49.         }
  50.      }
  51. ?>

(Добавление)
EuGen пишет:
http://phpfaq[dot]ru/debug

(надо бы кнопочку сделать уже такую)

чтото там слишком много показало ошибок в файлах, которые к добавлению новостей не имеют отношения.. а в самом addnews.php уже после добавления новости только вывело, что им неизвестно что такое $do.. но это вроде правильно..
 
 Top
EuGen Администратор
Отправлено: 13 Января, 2010 - 10:34:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Если Вы научитесь делать отладку самостоятельно, то потом поймете, насколько это важное и ценное умение


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Extazy
Отправлено: 13 Января, 2010 - 10:39:36
Post Id


Посетитель


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


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




ну может быть если бы подсказали, что неверно в моём коде, то я бы сообразил, что означают те ошибки, что выдаются при отладке Растерялся
 
 Top
RomAndry Администратор
Отправлено: 13 Января, 2010 - 11:18:09
Post Id



Частый посетитель


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


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




Extazy
а попробуйте пошагово все делать и смотреть дебаг
так тяжело что-то говорить
 
My status
 Top
Extazy
Отправлено: 13 Января, 2010 - 15:26:51
Post Id


Посетитель


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


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




я к сожалению даже не знаю как мне делать debug.. потму что ошибок вроде в самом коде нет.. просто чтото не то со строкой if(empty($_FILES['uploadfile'])) .. или if($_FILES['uploadfile']).. а что там не то.. не пойму.. ёмаё
 
 Top
SAD Модератор
Отправлено: 13 Января, 2010 - 15:41:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




влепить бы Вам штрафик, за каждый вопрос по пустякам. На форуме куча инфы.
(Добавление)
элементарный дебаг- это посмотреть , что у Вас храниться в переменных,
Вам поможет.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Января, 2010 - 16:24:16
Post Id



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


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


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




Extazy пишет:
то есть if(empty($_FILES['uploadfile'])) должен отдавать 1, но почему-то выполняется ELSE

вообще-то наоборот. Возвращает true, когда переменная нулевая или не установлена Подмигивание
http://ru2.php.net/manual/en/function.empty.php
Цитата:
Returns FALSE if var has a non-empty and non-zero value.


И лучше проверяйте дополнительно на наличие файла:

(Отредактировано автором: 13 Января, 2010 - 16:25:47)



-----
PostgreSQL DBA
 
 Top
Extazy
Отправлено: 13 Января, 2010 - 16:25:21
Post Id


Посетитель


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


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




если залить файл, то $_FILES['uploadfile'] будет содержать следующее:
Array ( [name] => foto_75082.png [type] => image/png [tmp_name] => /var/www/user/data/tmp/phpsCVzs2 [error] => 0 [size] => 13119 )

значит если картинку не заливать, то if(empty($_FILES['uploadfile'])) отдаст TRUE... ОДНАКО в моём случае если не заливать картинку. то выполняется ELSE...

почему так?? объясните пожалуйста.. я же правильно всё описал..

PHP:
скопировать код в буфер обмена
  1. if(empty($_FILES['uploadfile']))
  2.         {
  3.             require("db.php");
  4.             @mysql_connect($server,$dbuser,$dbpassword);
  5.             @mysql_select_db($database_name);
  6.  
  7.             mysql_query("INSERT INTO posts (title, post) VALUES ('$title', '$post')");
  8.             mysql_close();
  9.             print "Статья успешно размещена.";
  10.         }
  11.         else
  12.         {
  13.             require("db.php");
  14.             @mysql_connect($server,$dbuser,$dbpassword);
  15.             @mysql_select_db($database_name);
  16.  
  17.             mysql_query("INSERT INTO posts (title, post) VALUES ('$title', '$post')");
  18.             mysql_close();
  19.             print "Статья успешно размещена.";
  20.  
  21.             $uploaddir = './files/';
  22.             $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
  23.             $image = $_FILES['uploadfile']['name'];
  24.  
  25.             if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
  26.             {
  27.                 @mysql_connect($server,$dbuser,$dbpassword);
  28.                 @mysql_select_db($database_name);
  29.                 mysql_query("INSERT INTO posts (title, post, image, image_align) VALUES ('$title', '$post', '$image', '$align')");
  30.                 mysql_close();
  31.  
  32.                 print "Статья с картинкой была успешно размещена.";
  33.             }
  34.             else
  35.             {
  36.                 echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
  37.             }
  38.         }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB