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

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

1. Alex59 - 06 Июня, 2016 - 18:39:05 - перейти к сообщению
Пытаюсь вывести мета тег, если он не прописан на странице.
Если его нет выводится. Проблема в том, что когда есть - тоже выводится.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php if (!empty($meta_description)): ?>
  2. <meta name="description" content="<?php echo htmlspecialchars($meta_description, ENT_QUOTES) ?>">
  3.     <?php else: ?>
  4.     <?php $meta_description= Альтернативное описание; ?>
  5. <meta name="description" content="<?php echo htmlspecialchars($meta_description, ENT_QUOTES) ?>">
  6. <?php endif; ?>
2. kotyara1979 - 07 Июня, 2016 - 03:04:56 - перейти к сообщению
Конструкция за исключением кавычек в else написана правильно.
А значит вопрос только в данных. Отвечают ли они введенным условиям. По всей видимости нет.
Точно ли meta_description существует в области видимости, где выводится html-код?
3. Alex59 - 07 Июня, 2016 - 08:25:37 - перейти к сообщению
Напишите где поставить кавычки, я проверю.

meta_description существует и выводится, с этим проблем нет.

Проблема, что выводится 2 раза, вместо 1 после else.
4. kuller - 07 Июня, 2016 - 10:14:50 - перейти к сообщению
здесь кавычек нет

PHP:
скопировать код в буфер обмена
  1. <?PHP $meta_description= Альтернативное описание; ?>


я бы код так оформил бы... читается проще

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $meta_description = 'Альтернативное описание';
  4.  
  5. if(empty($meta_description))
  6. {
  7.         $meta_description = 'описание';
  8. }
  9.  
  10. $meta_description =  htmlspecialchars($meta_description, ENT_QUOTES);
  11. ?>
  12.  
  13. <meta name="description" content="<?=$meta_description;?>">
  14.  
5. Alex59 - 07 Июня, 2016 - 10:58:02 - перейти к сообщению
kuller пишет:
здесь кавычек нет

PHP:
скопировать код в буфер обмена
  1. <?PHP $meta_description= Альтернативное описание; ?>


я бы код так оформил бы... читается проще

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $meta_description = 'Альтернативное описание';
  4.  
  5. if(empty($meta_description))
  6. {
  7.         $meta_description = 'описание';
  8. }
  9.  
  10. $meta_description =  htmlspecialchars($meta_description, ENT_QUOTES);
  11. ?>
  12.  
  13. <meta name="description" content="<?=$meta_description;?>">
  14.  


Так не работает. Мы сразу присвоили переменной значение, а потом проверяем не пустая ли она.
if не будет отрабатывать
6. kuller - 07 Июня, 2016 - 11:24:26 - перейти к сообщению
Alex59 пишет:
Так не работает. Мы сразу присвоили переменной значение, а потом проверяем не пустая ли она.
if не будет отрабатывать


$meta_description присваивается не просто так для красоты, а для каких та определенных условий... например на каждой странице должен быть свой meta тег. Вот для это мы и пишем условие с определением на какой странице находится пользователь.

А переменная $meta_description будет меняться а если на странице не написан meta тогда и сработает вот это

PHP:
скопировать код в буфер обмена
  1.  
  2. if(empty($meta_description))
  3. {
  4.         $meta_description = 'описание';
  5. }
  6.  


для каких целей вам это надо, не написали... вот и выкладывается пример для ознакомления.

тогда в идеале вообще получается так

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. //$mod - переменная содержит информацию на какой странице находится пользователь
  5.  
  6. switch($mod)
  7. {
  8.         case 'blog':
  9.                 $meta_description = 'блог';
  10.         break;
  11.                
  12.         case 'news':
  13.                 $meta_description = 'новости';
  14.         break;
  15.                
  16.         case 'gallery':
  17.                 $meta_description = 'галерея';
  18.         break;
  19.        
  20.        default:
  21.              $meta_description = 'описание'; // если $mod не под одно условие не попал
  22. }
  23. ?>
  24.  

CODE (html):
скопировать код в буфер обмена
  1. <meta name="description" content="<?=$meta_description;?>">
7. Alex59 - 07 Июня, 2016 - 11:33:30 - перейти к сообщению
Цель: если нет метатега прописанного на странице, то присвоить ему сгенерированный.
По вашему алгоритму
$meta_description = 'Альтернативное описание';
будет выводится всегда

Спасибо за switch($mod) - почитаю, попробую
8. kuller - 07 Июня, 2016 - 11:38:53 - перейти к сообщению
Alex59 пишет:
Цель: если нет метатега прописанного на странице, то присвоить ему сгенерированный.
По вашему алгоритму
$meta_description = 'Альтернативное описание';
будет выводится всегда


перечитайте верхний пост отредактированный.

meta должен присвоен в любом случае, а вот на пустоту $meta_description надо проверять.
9. Alex59 - 07 Июня, 2016 - 12:15:43 - перейти к сообщению
kuller пишет:
//$mod - переменная содержит информацию на какой странице находится пользователь


вот пример страницы http://auto-bel[dot]org/car/bmw-1-reihe-f20-2012/

попробовал вывести переменную $mod на странице, она оказалась пустая.
10. kuller - 07 Июня, 2016 - 15:59:24 - перейти к сообщению
Alex59 пишет:
попробовал вывести переменную $mod на странице, она оказалась пустая.


вид ссылки без чпу такой ?mod=car&action=bmw-1-reihe-f20-2012 т.е. переменную $mod заменяете на свою.
(Добавление)
вот рабочий пример

PHP:
скопировать код в буфер обмена
  1.  
  2. <a href="?mod=blog">блог</a>
  3. <a href="?mod=news">новости</a>
  4. <a href="?mod=gallery">галерея</a>
  5. <a href="index.php">еще чета</a>
  6.  
  7. <?PHP
  8. switch($_GET['mod'])
  9. {
  10.         case 'blog':
  11.                 $meta_description = 'блог';
  12.         break;
  13.                    
  14.         case 'news':
  15.                 $meta_description = 'новости';
  16.         break;
  17.                    
  18.         case 'gallery':
  19.                 $meta_description = 'галерея';
  20.         break;
  21.    
  22.    default:
  23.                 $meta_description = 'описание';
  24. }
  25.  
  26. ?>
  27.  
  28. meta name="description" content="<?=$meta_description;?>"
  29.  


запусти пример... понятно станет

 

Powered by ExBB FM 1.0 RC1