Instruction require _once" dans une boucle while()
DGDB
Messages postés
6
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je me heurte à un problème relatif à l'appel d'un "require _once" dans une boucle while().
Cette construction fonctionne mais renvoie une réponse erronée, étant donné qu'elle double la dernière ligne.
Soyons plus clair :
Contexte :
Construire dynamiquement la structure d'une page par l'appel, au choix, de différents fichiers .inc,
parmi une collection d'un nombre n de modules par ex : modul_a, modul_b, ... modul_n
La page au final, pourrait être constituée, par ex de 4 modules consécutifs : modul_c, modul_a, modul_g, modul_e.
Environnement :
1) Une BDD</gras> dont
une table (struct_article - champs : 'id', 'id_site', 'page', 'module', 'ordr') : configuration de la structure d'un article dans une page, choix souhaité par un utilisateur.
2) Dans le serveur, les fichiers modul_n.inc
3) en php, le code :
<?php
$result = mysql_query ("SELECT * FROM struct_article WHERE id_site ='$id_site' AND page='$page' ORDER BY ordr");
$format .= '<!-- struct -->';
while ( $row = mysql_fetch_array ( $struct_article, MYSQL_NUM ) ){
$c = $row[3];
require_once ('envir/article/'.$c.'.inc');
}
$format .= '<!-- fin struct -->';
echo $format;
?>
4) Résultat :
a - Test
Ce code fonctionne, et pour le contrôle, l'instruction : require_once ('envir/article/'.$c.'.inc');
est remplacée par le texte : $format .= 'Nbr de modules : '.$nbrCorp.'<br>'.$c.'<br>';
La réponse obtenue est correcte :
Nbr de modules : 4
modul_c
Nbr de modules : 4
modul_a
Nbr de modules : 4
modul_g
Nbr de modules : 4
modul_e
b - Exécution
Lors de l'exploitation de l'instruction require_once dans la boucle,
la dernière ligne est bouclée, le modul_e s'affiche 2 fois !!!
Dans la Littérature sur cette instruction ou commande require_once, il est dit :
" La commande require_once se remplace elle-même par le fichier spécifié, un peu comme les commandes de préprocesseur C #include , et ressemble sur ce point à require .
La principale différence est qu'avec require_once , vous êtes assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d'alertes."
"La commande require_once doit être utilisée dans les cas où le même fichier risque d'être inclus et évalué plusieurs fois durant l'exécution d'un script. Vous serez alors sûrs qu'il ne sera inclus qu'une fois et vous éviterez les problèmes de re-déclarations de fonctions ou autres."
Cela semble erroné, ou plus modestement, ma construction, intégrant un require_once dans une boucle while pourrait-elle en être la cause.
Quoiqu'il en soit, j'ai testé d'autres formes de boucle (for, foreach, ...) idem.
J'ai, construit en dur l'appel des require_once issue de la boucle, avec switch ... idem .
Auriez-vous une idée lumineuse à me suggérer ?
Merci
Je me heurte à un problème relatif à l'appel d'un "require _once" dans une boucle while().
Cette construction fonctionne mais renvoie une réponse erronée, étant donné qu'elle double la dernière ligne.
Soyons plus clair :
Contexte :
Construire dynamiquement la structure d'une page par l'appel, au choix, de différents fichiers .inc,
parmi une collection d'un nombre n de modules par ex : modul_a, modul_b, ... modul_n
La page au final, pourrait être constituée, par ex de 4 modules consécutifs : modul_c, modul_a, modul_g, modul_e.
Environnement :
1) Une BDD</gras> dont
une table (struct_article - champs : 'id', 'id_site', 'page', 'module', 'ordr') : configuration de la structure d'un article dans une page, choix souhaité par un utilisateur.
2) Dans le serveur, les fichiers modul_n.inc
3) en php, le code :
<?php
$result = mysql_query ("SELECT * FROM struct_article WHERE id_site ='$id_site' AND page='$page' ORDER BY ordr");
$format .= '<!-- struct -->';
while ( $row = mysql_fetch_array ( $struct_article, MYSQL_NUM ) ){
$c = $row[3];
require_once ('envir/article/'.$c.'.inc');
}
$format .= '<!-- fin struct -->';
echo $format;
?>
4) Résultat :
a - Test
Ce code fonctionne, et pour le contrôle, l'instruction : require_once ('envir/article/'.$c.'.inc');
est remplacée par le texte : $format .= 'Nbr de modules : '.$nbrCorp.'<br>'.$c.'<br>';
La réponse obtenue est correcte :
Nbr de modules : 4
modul_c
Nbr de modules : 4
modul_a
Nbr de modules : 4
modul_g
Nbr de modules : 4
modul_e
b - Exécution
Lors de l'exploitation de l'instruction require_once dans la boucle,
la dernière ligne est bouclée, le modul_e s'affiche 2 fois !!!
Dans la Littérature sur cette instruction ou commande require_once, il est dit :
" La commande require_once se remplace elle-même par le fichier spécifié, un peu comme les commandes de préprocesseur C #include , et ressemble sur ce point à require .
La principale différence est qu'avec require_once , vous êtes assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d'alertes."
"La commande require_once doit être utilisée dans les cas où le même fichier risque d'être inclus et évalué plusieurs fois durant l'exécution d'un script. Vous serez alors sûrs qu'il ne sera inclus qu'une fois et vous éviterez les problèmes de re-déclarations de fonctions ou autres."
Cela semble erroné, ou plus modestement, ma construction, intégrant un require_once dans une boucle while pourrait-elle en être la cause.
Quoiqu'il en soit, j'ai testé d'autres formes de boucle (for, foreach, ...) idem.
J'ai, construit en dur l'appel des require_once issue de la boucle, avec switch ... idem .
Auriez-vous une idée lumineuse à me suggérer ?
Merci
A voir également:
- Instruction require _once" dans une boucle while()
- L'instruction à 0x emploie l'adresse mémoire 0x l'état de la mémoire ne peut pas être read - Astuces et Solutions
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Ajoutez une instruction pour faire afficher le mot secret construit. ✓ - Forum Python
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi