2014-01-05 4 views
0

Im создание приложения для отслеживания определенной информации о клиентах, с которыми мы имеем дело, например имя/дата/час работы/номер телефона и т. Д. Эта информация хранится в дБ. Поскольку у нас есть разные отделы, такие как SEO/WEB/Sales и т. Д. И разные люди в этих командах, приложение предоставляет различные способы фильтрации информации в зависимости от нажатой кнопки фильтра.Сделать переменные доступными внутри функции. (PHP)

Когда кто-то нажимает кнопку «фильтр», в этом примере можно сказать, что они нажали кнопку «просмотр по департаменту», она берет их на реальные жестко заданные страницы. В качестве примера:

viewSeoAccs.php 

viewWebAccs.php 

ViewSalesAccs.php 

И на этих страницах я есть запросы, которые тянут информацию, основанную на фильтре прессованного но HTML является то же самое. Теперь вот проблема.

У меня есть много разных страниц (на основе фильтров), и каждый раз, когда в html есть редактирование, мне нужно перейти на страницу «КАЖДЫЙ PHP», чтобы реализовать изменения.

Что я хочу сделать, это создать функцию, которая выплевывает html для меня. Я получил половину пути, и я знаю проблему, просто не могу найти решение.

Вот несколько кодов.

В моем файле functions.php у меня есть функция, называемая «htmlBlockTEST», которая имеет этот код.

EXAMPLE: (code chopped for easy reading) 
    <?php 
     function htmlBlockTEST(){ 

       echo '' ?> 


    <h2 class="accName fl"><?php echo $row['company_name']; ?></h2> 
    <div class="<?php echo $row['acc_risk']; ?>"> Risk Level. </div> 


    //ALOT MORE CODE goes here lol. 

    <?php 
     } 
    ?> 

Это в заголовке и покупающих в через «include_once („functions.php“). В соответствии с этим, у меня есть определенные переменные, которые тянут в запрашиваемых данных. (Пример ниже)

$pullAllAccounts = "SELECT * FROM tlm_accounts ORDER BY company_name ASC;"; 
$pullAllAccountsDoIt = mysqli_query($c2d, $pullAllAccounts) or die ("could not pull WEB team data" . mysqli_error($c2d)); 
?> 

теперь я цикл через БД и отображать информацию следующим образом:.

<?php 

while($row = mysqli_fetch_array($pullAllAccountsDoIt)){ 
$compName = $row['company_name']; 


?> 


<?php htmlBlockTEST(); ?> 

<?php 

    } 

?> 

в этом коде непосредственно выше, где вызов функции «htmlBlockTEST» есть, где проблема Sinc e Переменные, которые содержат запросы, находятся вне функции, я предполагаю, что они не передаются в функцию. Я не хочу помещать их в функцию, потому что HTML одинаковый на всех страницах, но не ВСЕ данные.

Мне нужны переменные, которые хранят, например, $row['company_name'], чтобы быть доступными внутри функции, чтобы она не выдавала ошибки «неопределенной переменной».

Как я могу это сделать? Каков наилучший способ заставить эти переменные в цикле while (или иначе) быть доступными внутри функции ???

PS, ive google и нашел что-то вроде $ GLOBALS ['x'] и т. Д., Но из того, что читал ive, его не лучший способ или просторы, и в целом им не повелось, как его использовать.

Любая помощь очень ценится. Спасибо в продвинутом режиме.

+0

Как может быть парам? htmlBlockTEST ($ compName); – CoR

+0

Да, я тоже пробовал, и он не работал. – somdow

+0

Как сказал Реза, htmlBlockTEST() должен быть в цикле while :) Другой вариант - в области реактивного программирования;) – CoR

ответ

2

Вариант 1:

while($row = mysqli_fetch_array($pullAllAccountsDoIt)){ 
    htmlBlockTEST($row); 
} 

Вариант 2:

global $row; 
while($row = mysqli_fetch_array($pullAllAccountsDoIt)){ 
    $compName = $row['company_name']; 
    htmlBlockTEST(); 
} 

//and in your htmlBlockTEST() function just right this: 
function htmlBlockTEST(){ 
    global $row; ?> 
    <h2 class="accName fl"><?php echo $row['company_name']; ?></h2> 
    <div class="<?php echo $row['acc_risk']; ?>"> Risk Level. </div> 

    <?php 
    //ALOT MORE CODE goes here lol. 
} 
?> 

У вас есть еще несколько вариантов, конечно.

+0

Третий вариант может состоять в том, чтобы дать все результаты htmlBlockTEST ($ all); – CoR

+0

Hello Reza. Короче говоря, это сработало. Мне пришлось внести некоторые незначительные изменения, но в целом это работает. Когда я добавил «глобальный» в «$ row» вне функции только, он не работал, я удалил его и поместил внутри функции, и теперь все работает. Я не понимаю, как и почему. Я мог понять, что он работает глобально вне функции, но внутри нее? .... im потерял. Вы можете мне помочь? Благодарю. – somdow

+0

Вы можете видеть, что я написал 'global $ row;' в двух местах выше. Первый над циклом while не нужен, только если он не находится внутри какой-либо функции; но вы можете объявить глобальным здесь без проблем. Теперь требуется вторая, потому что необходимо сообщить системе, что она/может быть определена вне этой функции, и вы можете ее использовать; Но если вы измените значение этой внутренней переменной, оно также изменит/обновит всю систему; Итак, короче говоря, 1-й вариант необязателен/зависит от места объявления, но второй должен. –

Смежные вопросы