2010-02-03 3 views
0

J'ai une grande boucle PHP que je réutilise en plusieurs endroits sur plusieurs pages de mon site. Normalement, j'utiliserais include() pour placer cette boucle PHP là où c'est nécessaire, mais la boucle PHP en question utilise une requête MySQL dans laquelle j'ai besoin de changer des variables (différents filtres et différentes LIMIT) pour différentes instances de cette Boucle PHP.Existe-t-il une meilleure façon d'inclure() une boucle PHP qui dépend d'une requête MySQL variable?

<?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---- 
    }; 
?> 

Ce que je me rappelai alors où je avais besoin à l'aide

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

Tout fonctionnait bien jusqu'à ce que je pris la requête MySQL réelle OUT du fichier inclus et placé avant chaque instance de ce PHP inclus (donc je pourrais contrôler certaines variables pour chaque instance de la requête). Maintenant, la requête MySQL et la boucle PHP inclus ne semblent pas communiquer de la même manière, et que je reçois l'avertissement suivant:

« Warning: mysql_fetch_array(): argument fourni est pas valide MySQL résultat ressources en /home/filepathhere/includedfile.php sur la ligne 3" <

Je me sens comme le PHP inclus est en cours d'exécution dans le fichier inclus et étant ensuite injecté dans la page principale. J'ai besoin que le code soit injecté dans la page principale avant qu'il ne soit exécuté.

Existe-t-il un meilleur moyen que "include()" pour injecter cette boucle PHP dans la page principale?

+3

Un code serait génial. –

Répondre

3

On dirait un bon moment pour en apprendre davantage sur functions et function arguments. :)


Elaborer: including un fichier est une façon de réutiliser le code, mais comme vous le rencontrez, il n'y a aucune façon contrôlée de modifier le comportement de ce code. Une fonction a une interface clairement définie pour transmettre arguments dans la fonction, que vous pouvez utiliser dans la fonction pour modifier son comportement.

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

Merci pour les liens ... ils ont été très utiles – jasonmklug

Questions connexes