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
Форумы портала PHP.SU :: Версия для печати :: Проблема с кодом PHP
Форумы портала PHP.SU » » Вопросы новичков » Проблема с кодом PHP

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

1. 0legka - 13 Декабря, 2011 - 08:37:04 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <!-- выводим три блока для слайдшоу NIVO 1,2,3 </div>)-->
  2.          <?php if ($is_front) {?>
  3.           <div id="nivoleft">
  4.            <?php if ($nivoleft): ?>
  5.            <?php print $nivoleft ?>
  6.            <?php endif; ?>
  7.           </div>
  8.           <div id="nivocenter">
  9.            <?php if ($nivocenter): ?>
  10.            <?php print $nivocenter ?>
  11.            <?php endif; ?>
  12.           </div>
  13.           <div id="nivoright">
  14.            <?php if ($nivoright): ?>
  15.            <?php print $nivoright ?>
  16.            <?php endif; ?>
  17.           </div>
  18.          <?php }  ?>
  19. <!-- Если главная выводим её, иначе - остальное -->
  20.       <?php if ($is_front) {
  21. <!-- ничего лучше не придумал как оставить это место пустым... хотя знал бы PHP засунул бы сюда верхний код -->
  22.         } else { ?>
  23.         <!-- вывод контента -->
  24.         <div id="content">
  25.         <?php print $content ?>
  26.         </div>
  27.             <!-- end #content -->
  28.         <?php }  ?>

может кто подскажет как было бы правильней изменить код ?
хоть и работает, но прямо пятой точкой чую, фигню нарисовал... и если возможно, напишите чем грозит такое столь не корректное програмирование ...
2. Dezmont - 13 Декабря, 2011 - 08:58:15 - перейти к сообщению
Ну так делать не стоит, это уж точно. Код вообще не читабельный... =) Блоки РНР лучше не разрывать так часто. Перед своими DIVами поставьте echo. Типа: echo '<div id="nivoleft">';
3. 0legka - 13 Декабря, 2011 - 09:04:01 - перейти к сообщению
Dezmont пишет:
Ну так делать не стоит, это уж точно. Код вообще не читабельный... =) Блоки РНР лучше не разрывать так часто. Перед своими DIVами поставьте echo. Типа: echo '<div id="nivoleft">';

Подскажи как перенести верхний if в нижний где if else, у меня проблема чтобы дивы туда засунуть, никак не получается...
а для чего echo писать ?
echo <div id="nivoleft">
ты вот такое написание имел ввиду ?
4. Самогонщик - 13 Декабря, 2011 - 09:06:11 - перейти к сообщению
0legka пишет:
echo <div id="nivoleft">
Это не пойми что, а echo '<div id="nivoleft">'; - это вывод строки
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP if ($is_front) {?>
  2.         <div id="nivoleft">
  3.                 <?PHP echo ($nivoleft)?$nivoleft:''; ?>
  4.         </div>
  5.         <div id="nivocenter">
  6.                 <?PHP echo ($nivocenter)?$nivocenter:''; ?>
  7.         </div>
  8.         <div id="nivoright">
  9.                 <?PHP echo ($nivocenter)?$nivocenter:''; ?>
  10.         </div>
  11. <?PHP } else {  ?>
  12.         <div id="content">
  13.                 <?PHP echo $content ?>
  14.         </div>
  15. <?PHP } ?>

<?PHP echo ($nivocenter)?$nivocenter:''; ?> - такая конструкция мне кажется сомнительно, но кто его знает, что имел введу автор, может нули не хочет выводить Улыбка
5. 0legka - 13 Декабря, 2011 - 09:12:45 - перейти к сообщению
Самогонщик пишет:
0legka пишет:
echo <div id="nivoleft">
Это не пойми что, а echo '<div id="nivoleft">'; - это вывод строки

спс я просто только начал с php разбиратся, тяжело по началу, а насчёт IFов подскажешь ?
6. Dezmont - 13 Декабря, 2011 - 09:15:20 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. //Если главная выводим её, иначе - остальное
  2.  
  3. if ($is_front){
  4. //выводим три блока для слайдшоу NIVO 1,2,3 </div>
  5.         echo '<div id="nivoleft">';
  6.         if ($nivoleft):
  7.                 print $nivoleft;
  8.         endif;
  9.         echo '</div>';
  10.         echo '<div id="nivocenter">';
  11.         if ($nivocenter):
  12.                 print $nivocenter;
  13.         endif;
  14.         echo '</div>';
  15.         echo '<div id="nivoright">';
  16.         if ($nivoright):
  17.                 print $nivoright;
  18.         endif;
  19.         echo '</div>';
  20. }
  21. else{
  22. //вывод контента
  23.         echo '<div id="content">';
  24.         print $content;
  25.         echo '</div>';
  26. //end #content
  27. }


Вот так. Так лучше, но всё равно криво, но вам проще разбираться.
Я бы мог Вам посоветовать видокурсы от Specialist, 1-ю и вторую часть... А то у Вас так всё очень надолго затянется.
7. 0legka - 13 Декабря, 2011 - 09:15:41 - перейти к сообщению
Самогонщик пишет:
0legka пишет:
echo <div id="nivoleft">
Это не пойми что, а echo '<div id="nivoleft">'; - это вывод строки
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP if ($is_front) {?>
  2.         <div id="nivoleft">
  3.                 <?PHP echo ($nivoleft)?$nivoleft:''; ?>
  4.         </div>
  5.         <div id="nivocenter">
  6.                 <?PHP echo ($nivocenter)?$nivocenter:''; ?>
  7.         </div>
  8.         <div id="nivoright">
  9.                 <?PHP echo ($nivocenter)?$nivocenter:''; ?>
  10.         </div>
  11. <?PHP } else {  ?>
  12.         <div id="content">
  13.                 <?PHP echo $content ?>
  14.         </div>
  15. <?PHP } ?>

<?PHP echo ($nivocenter)?$nivocenter:''; ?> - такая конструкция мне кажется сомнительно, но кто его знает, что имел введу автор, может нули не хочет выводить Улыбка

Спасибо тебе огромное... вот оно как всё просто, а я вчера голову сломал ...=)))
(Добавление)
Спасибо ребята !!!!! класный форум!!!!!!!!
(Добавление)
Dezmont пишет:
PHP:
скопировать код в буфер обмена
  1. //Если главная выводим её, иначе - остальное
  2.  
  3. if ($is_front){
  4. //выводим три блока для слайдшоу NIVO 1,2,3 </div>
  5.         echo '<div id="nivoleft">';
  6.         if ($nivoleft):
  7.                 print $nivoleft;
  8.         endif;
  9.         echo '</div>';
  10.         echo '<div id="nivocenter">';
  11.         if ($nivocenter):
  12.                 print $nivocenter;
  13.         endif;
  14.         echo '</div>';
  15.         echo '<div id="nivoright">';
  16.         if ($nivoright):
  17.                 print $nivoright;
  18.         endif;
  19.         echo '</div>';
  20. }
  21. else{
  22. //вывод контента
  23.         echo '<div id="content">';
  24.         print $content;
  25.         echo '</div>';
  26. //end #content
  27. }


Вот так. Так лучше, но всё равно криво, но вам проще разбираться.
Я бы мог Вам посоветовать видокурсы от Specialist, 1-ю и вторую часть... А то у Вас так всё очень надолго затянется.

Спасибо, ссылку на курсы дай пожалуйста, а то я так действительно долго буду такие вопросы задавать =))))
8. Dezmont - 13 Декабря, 2011 - 09:40:18 - перейти к сообщению
Тут например: Видеокурсы.
Но лучше тут, тут именно РНР. Качайте первую и вторую часть для начала: Основы создания сайтов
9. 0legka - 13 Декабря, 2011 - 09:45:18 - перейти к сообщению
Dezmont пишет:
Тут например: Видеокурсы.
Но лучше тут, тут именно РНР. Качайте первую и вторую часть для начала: Основы создания сайтов

ок, палез учится =)))
спасиб
(Добавление)
0legka пишет:
Dezmont пишет:
Тут например: Видеокурсы.
Но лучше тут, тут именно РНР. Качайте первую и вторую часть для начала: Основы создания сайтов

ок, палез учится =)))
спасиб

хм.... попробовал по аналогии засунуть внутрь IFa таблицу
PHP:
скопировать код в буфер обмена
  1. <?PHP if ($is_front) {
  2.           echo '<div id="table3">'
  3.           //<!-- Ниже идёт таблица в которой помещены три фронтальных слайдера в центре и рядом -->
  4.           echo '<center>'
  5.           echo '<table>' //<!--width="1000" таблица -->
  6.             echo '<tr>' //<!-- строка -->
  7.               echo '<td >' //<!-- первая ячейка-->
  8.               echo '<div id="nivoleft">'
  9.                 if ($nivoleft):
  10.                   print $nivoleft;
  11.                 endif;

выдаёт следующую ошибку Parse error: syntax error, unexpected T_PRINT, expecting ',' or ';' in G:\home\localhost\www\Drupal\sites\all\themes\splendid\page.tpl.php on line 137 нельзя таким образом таблицу делать ?
10. Panoptik - 13 Декабря, 2011 - 10:53:37 - перейти к сообщению
echo '<div id="nivoleft">' точку с запятой пропустили после этого
(Добавление)
и вообще после каждого print или echo и каждого оператора, кроме ифов и циклов нужно ставить точку с запятой !
11. 0legka - 13 Декабря, 2011 - 11:00:26 - перейти к сообщению
Panoptik пишет:
echo '<div id="nivoleft">' точку с запятой пропустили после этого
(Добавление)
и вообще после каждого print или echo и каждого оператора, кроме ифов и циклов нужно ставить точку с запятой !

спасиб, именно тут крылся корень всех бед =))))))))) однако вместо 3 слайдеров у меня теперь получилось сразу 6.... ( может они как то не правильно обрабатываются компилятором ? причём три именно там где нужно, т.е. именно в горизонтальной таблице, а три вначале и расположены вертикально один под другим.... Не понял
12. 0legka - 13 Декабря, 2011 - 14:05:51 - перейти к сообщению
Положение спасла вот такая конструкция, как советовал Самогонщик
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP if ($is_front) {?>
  3. ----------контент-----------
  4. <?PHP } else {  ?>
  5. ----------контент-----------
  6. <?PHP } ?>
  7.  
13. velidan - 13 Декабря, 2011 - 16:30:54 - перейти к сообщению
Доброго времени суток. Столкнулся с одной неувязкой.
При запуске вот этого скрипта:
PHP:
скопировать код в буфер обмена
  1.  
  2. function parse_title ($value) {
  3.     $content = file_get_contents($value) ;
  4.     return $content ;
  5. }    
  6.  
  7. if($_POST) {
  8.    
  9. $url = $_POST['url'] ;
  10. echo $url ;                       //сделал для того чтобы увидеть или вытащился url
  11.  
  12. parse_title($url) ;
  13. echo $content ;
  14. }
  15.  

выводит ошибку о неправильном аргументе переданном file_get_contents. (хотя, как показывает < echo $url ; > все корректно сработало, вытащилась урл-шка из Поста).
Пробовал передать значение функции через & (по ссылке) - вычитал в функциях что таким образом она сможет изменять значение это, но не сработало (насколько я понимаю, дело совсем не в этом)

Получается что ф-ция не видит саму переменную $url (как такое может быть?).
Заранее спасибо за помощь.
14. Panoptik - 13 Декабря, 2011 - 17:01:24 - перейти к сообщению
velidan пишет:
parse_title($url) ;
echo $content ;

вы возвращаете значение из функции в никуда, а потом выводите пустую переменную.
дело решается простым присваиванием результата функции:
PHP:
скопировать код в буфер обмена
  1.  
  2. $content = parse_title($url) ;
  3. echo $content ;
  4.  


переменная внутри функции является локальной и не видна вне ее, поэтому не стоит надеяться что если вы назвали переменную так же то она получит какоето значение после выполнения функции. Почитайте про область видимости переменных на досуге
15. velidan - 13 Декабря, 2011 - 19:22:41 - перейти к сообщению
Понятно, спасибо большое. Обязательно прочту (хотя и читал уже, правда для меня это дело осталось не слишком осветленным).
Можно было сделать её глобальной, что-т упустил этот момент.

Но, как бы там ни было, проблема осталась прежней, так как не хочет передаваться аргумент функции file_get_contents.

Warning: file_get_contents("http://php.su/") [function.file-get-contents]: failed to open stream: Invalid argument in.....

Переменную $url что внутри оператора if видно вне его области. Но, почему-то, не передается значение функции.

 

Powered by ExBB FM 1.0 RC1