За последние 24 часа нас посетили 60265 программистов и 1810 роботов. Сейчас ищут 1244 программиста ...

Как внутри функции определить имя и вызвать другую функцию

Тема в разделе "PHP для новичков", создана пользователем sound, 1 мар 2008.

  1. sound

    sound Guest

    Есть фрагмент кода в котором несколько форм и каждая форма имеет свои скрытые inputы

    <input name="Name" type="hidden" value="">

    Этот фрагмент кода часто используется и я хочу выделить его в отдельную функцию
    Но не могу понять как можно сделать так чтобы при вызове функции определялся какой именно набор inputoв будет в каждой форме




    HTML:
    1.  
    2.  
    3. <form name="1" action="" method="post">
    4. <input name="Name1" type="hidden" value="">
    5. <input name="Name3" type="hidden" value="">
    6. </form>
    7.  
    8. <form name="2" action="" method="post">
    9. <input name="Name2" type="hidden" value="">
    10. <input name="Name4" type="hidden" value="">
    11. </form>
    12.  
    13.  
    14.  

    вот код для примера
    в нем постоянны только две формы, а набор inputов может меняться

    пока у меня только такие мысли
    определить каждый отдельный набор инпутов как функцию и потом вызывать его в основной функции где будут сами формы
    НО как в основную функции с формами передать какой именно набор инпутов должен быть в каждой форме
    или другими словами как внутри одной функции опеределить имя и вызвать другую функцию
     
  2. dAllonE

    dAllonE Guest

    От чего зависит набор инпутов? Количество наборов ограничено или может быть каким угодно?
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    sound
    Примерно так:
    PHP:
    1.  
    2. <?php
    3. function hiddeninput($inputs)
    4. {
    5.   foreach ($input as $input)
    6.   {
    7.      $out.="<input name=\"$input\" type=\"hidden\" value=\"\">\n";
    8.   }
    9.   return $out;
    10. }
    11. $hidden_inputs_on_form_one=array('name1','name3');
    12. $hidden_inputs_on_form_two=array('name2','name4');
    13. ?>
    14.  
    HTML:
    1.  
    2. <form name="1" action="" method="post">
    3.   <?=hiddeninput($hidden_inputs_on_form_one);?>
    4. </form>
    5. <form name="2" action="" method="post">
    6.   <?=hiddeninput($hidden_inputs_on_form_one);?>
    7. </form>
     
  4. sound

    sound Guest

    dAllonE
    набор инпутов не от чего не зависит просто определяется заранее скажем для одной формы 40 для другой 50
    количество может быть каким угодно


    [vs]
    немного не въехал а что за знак равно вот тут
    <?=hiddeninput($hidden_inputs_on_form_one);?>

    да и если без return $out;
    а просто в цикле
    echo $out.="<input name=\"$input\" type=\"hidden\" value=\"\">\n";
    это ж без разницы ?

    может тупые вопросы но так как править очень много лучше спрошу
     
  5. dAllonE

    dAllonE Guest

    sound, допустим у нас переменная $vasa='Вася'

    Тогда действия

    PHP:
    1. <?=$vasa?>
    и

    PHP:
    1. <?php  echo($vasa); ?>
    равносильны.

    В данном случае в принципе ты и так и так получишь вывод...
    Но через echo, неприятно, например, то, что после этой функции уже куку никакую не установить, т.к. заголовок отправлен...
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    А если короткие теги отключены? :)
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Дескриптор <?= равносилен вызову функции для печатати, при чем что печатать - указывается после "равно".
    Он будет работать если в php.ini включен ASP style tags
     
  8. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    ASP это <% %>

    А короткие совсем другое:
     
  9. Clone

    Clone Guest

    Кстати, да
     
  10. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Тогда их можно включить.
     
  11. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Так же как и short_open_tag, asp_tags включается/выключается в .htaccess. А не только в php.ini.
     
  12. sound

    sound Guest

    сейчас пишу скрипт и когда в главной функции с формами пишу

    <?=hiddeninput($hidden_inputs_on_form_one);?>
    то страница не работает полностью пустая ошибок тоже не выводит

    а когда
    <?echo hiddeninput($hidden_inputs_on_form_one);?>
    то все ок

    если в обычном коде(то есть не в теле функции) написать
    <?=hiddeninput($hidden_inputs_on_form_one);?>

    то все работает как надо

    вот такой парадокс
    почему так ?