Вопрос по функциям.

Тема в разделе "PHP", создана пользователем асс, 12 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Добрый день. Скажите пожалуйста.
    Чем отличаеться функция от переменных?

    Вот не врубаюсь хоть тресни.
    Пример

    HTML:
    function zagolovok ($str, $n)
    {
      echo  "<H$n>$str</H$n>";
    }
    zagolovok ("Часть", 1);
    zagolovok ("Глава", 2);
    zagolovok ("Раздел", 3);
    Мне вот например надо сделать так чтобы я мог вызвать код функции в шапке скрипта.
    привожу пример, шапка скрипта

    HTML:
    <title><?php echo $title;?> </title>
    <meta name="keywords" content=""<?php echo $keywords;?>"">
    <meta name="description" content=""<?php echo $description;?>"">


    ниже идет код выбора данных из базы и ввод на стрнаницу

    HTML:
     $title =stripslashes($r['title']);  //Название статьи
       $ids= $r['id'];      //Номер  новости
       $cate = $r['catid'];
    как мне данные из перменной $title
    закинуть в <title><?php echo $title;?> </title>

    если я сделаю так

    HTML:
     $title =stripslashes($r['title']);  //Название статьи
       $ids= $r['id'];      //Номер  новости
       $cate = $r['catid'];
    <title><?php echo $title;?> </title>



    то все будет работать.

    Но у меня выборка из базы идет ниже чем вывод тайтлов.
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    ну, так делайте вывод TITLE-а ниже выборки из БД
    сперва генерите все необходимые вам переменные, а затем делаете вывод, используя уже имеющиеся значения.
    Либо используйте шаблонизаторы какие-нибудь.
    Но в любом случае перед выводом в брыазуер, переменные уже должны быть определены(и подставлены в шаблон, в случае шаблонизатора)

    немного не понял ваш вопрос:
    [telepatemod]
    вы имеете в виду,почему функция видна раньше ее определения, а переменная нет?
    Потому что функция одня и та же, и не может быть изменена, либо определена два раза.
    А переменная может менять значение, поэтому переменная видна только там где содбственно говоря она имеет значение
    [/telepatemod]
     
  3. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Я имел ввиду что зачем пользоваться функцией?
    Если есть переменные.
    Или функции более гибкие.


    Просто видел код в функции по другому немного сделан.


    Нарпример



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

    вот так
    HTML:
    $искомоеслово=вася
    google.com/search?client=opera&q=$искомоеслово

    если сделать так

    HTML:
    
    google.com/search?client=opera&q=[B]$искомоеслово[/B]
    $искомоеслово=вася
    не сработает. Так как $искомоеслово=вася определено после того как вызвана строка oogle.com/search?client=opera&q=$искомоеслово


    а в функции

    $искомоеслово=вася может быть ниже
    строка oogle.com/search?client=opera&q=$искомоеслово



    Я пробовал вызвать функцией Title но не вышло.
    Наверное проще всего делать шаблонизатор и не париться.
    В шаблонизаторе нет разницы где и что воткнуть.
     
  4. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    Никогда не слышал большей ахинеи.
    а ну, бегом учить матчасть, раздел о функциях, и для чего они используются

    Эт как еще?Покажите код
    Подозреваю, что вы просто не умеет пользоватся функциями, и не отличаете параметры от локальных и глобальных переменных
     
  5. bunny

    bunny Постоялец

    Регистр.:
    17 мар 2007
    Сообщения:
    66
    Симпатии:
    4
    Alternator +1

    По поводу 1 поста

    не рекомендую использовать такие конструкции
    Код:
    <title><?php echo $title;?> </title>
    <meta name="keywords" content=""<?php echo $keywords;?>"">
    <meta name="description" content=""<?php echo $description;?>"">
    
    лучше использовать
    PHP:
    <?php
    $title
    ="title";
    $keywords="keywords";
    $description="description";

    echo 
    "
    <title> "
    .$title." </title>
    <meta name=\"keywords\" content=\""
    $keywords."\">
    <meta name=\"description\" content=\""
    .$description."\">
    "
    ;
    ?>
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Alternator +1

    bunny, а собственно в чем принципиальное отличие?
     
  7. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Позволю себе посоветовать: не используйте пока свои функции, используйте переменные и библиотечные функции типа stripslashes(). Когда обнаружите, что у вас в скрипте много повторяющихся мест, вы сами придете к необходимости оформить повторяющийся код в функцию.

    p.s. Для начала вы уже неплохо разбираетесь в коде.
     
  8. bunny

    bunny Постоялец

    Регистр.:
    17 мар 2007
    Сообщения:
    66
    Симпатии:
    4
    Просто один раз столкнулся что значений переменных не существует, когда прекручивал другу форму для обратной связи

    толи ето было где то в настройкаъ толи еще что-то я не особо стал разбираться просто переписал в единый стек
    PHP:
    <?php ?>
     
  9. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    У меня это в конфиге прописано
    $title="title";
    $keywords="keywords";
    $description="description";


    а конфиг подключаеться в файлик который отдает теги.
    За 6 лет сайт созданый таким образом ни разу не глюкнул.


    Ну еще есть вариант сделать все через

    $out=<<<EOFF
    <title> $title.</title>
    <meta name="keywords" content="$keywords">

    EOFF;
    echo $out;

    хотя по мне проще переменную воткнуть.
     
  10. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    ТС явно не понимает, как организовать вывод после запроса к БД. Выход один - формировать контент перед выводом.

    Поясняю:
    1) делаем запрос к БД, и записываем результат запроса в переменную.
    2) формируем и выводим HTML код.

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

    Переменная - то, что содержит данные. Данные туда можно присвоить или посмотреть, что в ней записано.
    Функция - код с логикой, возвращающий результат в зависимости от входных данных. Логику программирует программист по своему желанию и фантазии.
     
Статус темы:
Закрыта.