2010-02-03 1 views
0

У меня есть большой цикл PHP, который я повторно использую в нескольких местах на нескольких страницах моего сайта. Обычно я просто использовал include(), чтобы установить этот цикл PHP везде, где это необходимо, но в рассматриваемом цикле PHP используется запрос MySQL, в котором мне нужно изменить переменные (различные фильтры и различные LIMIT) для разных экземпляров этого PHP-цикл.Есть ли лучший способ включить() цикл PHP, который зависит от различного запроса MySQL?

<?php 
    $results = mysql_query("SELECT * FROM databaseName ORDER BY columnName DESC, otherColumnName DESC LIMIT 6", $connection); 
    if (!$results) { 
     die("Database Query Failed"); 
    } 
?> 

<?php 
    while ($variable = mysql_fetch_array($results)) { 
     ----Execute this loop---- 
    }; 
?> 

Что я тогда вспомнил, где я нуждался в его использовании

<?php include("/filepath/includedfile.php"); ?> 

Все было работает нормально, пока я не взял фактического MySQL запросов OUT включаемого файла и положил его перед каждым экземпляром, который включал PHP (поэтому я мог контролировать определенные переменные для каждого экземпляра запроса). Теперь запрос MySQL и PHP включен цикл, кажется, не будет общаться таким же образом, и я получаю следующее предупреждение:

«Предупреждение: mysql_fetch_array(): поставляется аргумент не является допустимым MySQL результат ресурсов в /home/filepathhere/includedfile.php в строке 3" <

Я чувствую, что включен PHP запущен в прилагаемом файле, а затем впрыскивается в основную страницу. Мне нужно, чтобы код был введен на главную страницу, прежде чем он запустится.

Есть ли лучший способ, чем «include()», чтобы ввести этот цикл PHP в главную страницу?

+3

Некоторый код был бы замечательным. –

ответ

3

Пора как хорошо провести время, чтобы узнать о functions и function arguments. :)


Выработать: including файл является одним из способов повторного использования кода, но, как вы испытываете, нет контролируемых способов изменения поведения этого кода. Функция имеет четко определенный интерфейс для передачи аргументов в функцию, которую вы можете использовать внутри функции, чтобы изменить ее поведение.

function my_big_loop($condition) { 

    // preparations 

    $condition = mysql_real_escape_string($condition); // always! even for simple examples. :) 
    $results = mysql_query("SELECT * FROM somewhere WHERE x = '$condition'"); 

    // do loopy stuff 

    return $big_pile_of_HTML; 
} 

echo my_big_loop('somecondition'); 
+0

Спасибо за ссылки ... они были очень полезны – jasonmklug