En simplifiant un petit peu, on créé un objet en lui indiquant : - une requête SQL - un format d'affichage faisant référence aux champs de la requête (d'où mon pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Tient, ce qui est dommage c'est que celle-ci ne permet pas de donner des noms aux zones à remplacer.
Bon, qu'a cela ne tienne, un petit peu de codage et l'on obtiendra quelque chose de bien plus sympa AMHA :
(Faites fatigué à 2 (déjà !!) heures du matin, surement améliorable)
Alors là on va dire que je me fatigue pour rien, que la méthode avec eval est bien mieux.
Oui et non :
1) Eval de base c'est moche. 2) La fonction vsprintf_p peut être utilisée dans bien d'autres cas. 3) C'est quand même super estetique.
Bref voila.
-- Guillaume.
jibux wrote:
Bonsoir Guillaume,
Bonsoir.
En simplifiant un petit peu, on créé un objet en lui indiquant :
- une requête SQL
- un format d'affichage faisant référence aux champs de la requête (d'où mon
pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Tient, ce qui est dommage c'est que celle-ci ne permet pas de donner des
noms aux zones à remplacer.
Bon, qu'a cela ne tienne, un petit peu de codage et l'on obtiendra
quelque chose de bien plus sympa AMHA :
(Faites fatigué à 2 (déjà !!) heures du matin, surement améliorable)
En simplifiant un petit peu, on créé un objet en lui indiquant : - une requête SQL - un format d'affichage faisant référence aux champs de la requête (d'où mon pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Tient, ce qui est dommage c'est que celle-ci ne permet pas de donner des noms aux zones à remplacer.
Bon, qu'a cela ne tienne, un petit peu de codage et l'on obtiendra quelque chose de bien plus sympa AMHA :
(Faites fatigué à 2 (déjà !!) heures du matin, surement améliorable)
Alors là on va dire que je me fatigue pour rien, que la méthode avec eval est bien mieux.
Oui et non :
1) Eval de base c'est moche. 2) La fonction vsprintf_p peut être utilisée dans bien d'autres cas. 3) C'est quand même super estetique.
Bref voila.
-- Guillaume.
jibux
Guillaume Bouchard wrote:
jibux wrote:
Bonsoir Guillaume,
Bonsoir.
En simplifiant un petit peu, on créé un objet en lui indiquant : - une requête SQL - un format d'affichage faisant référence aux champs de la requête (d'où mon pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Non je ne pense pas. Il faut dire que je n'ai pas donné beaucoup de
précisions.
En fait (toujours en simplifiant) j'ai :
$format="<table><tr><td>V(1)</td></tr></table>"; Après transformation avec preg_replace() on obtient : $format="<table><tr><td>$f1</td></tr></table>";
avec $f1 qui contient la valeur du champ 1 de l'enregistrement courant. Donc eval("print("$format");"); affiche correctement le contenu de $f1 et respectant le format d'affichage défini par le programme appelant.
J'ai pas analysé ta prose en détail, mais tu as fait ressurgir de ma mémoire des vieux souvenirs en C avec la vsprintf() ... Je vais étudier en détail vsprintf_p() qui semble être très puissante.
Merci pour cette réponse très détaillée. -- jeb http://jebissey.free.fr
Guillaume Bouchard wrote:
jibux wrote:
Bonsoir Guillaume,
Bonsoir.
En simplifiant un petit peu, on créé un objet en lui indiquant :
- une requête SQL
- un format d'affichage faisant référence aux champs de la requête (d'où
mon pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Non je ne pense pas. Il faut dire que je n'ai pas donné beaucoup de
précisions.
En fait (toujours en simplifiant) j'ai :
$format="<table><tr><td>V(1)</td></tr></table>";
Après transformation avec preg_replace() on obtient :
$format="<table><tr><td>$f1</td></tr></table>";
avec $f1 qui contient la valeur du champ 1 de l'enregistrement courant.
Donc
eval("print("$format");");
affiche correctement le contenu de $f1 et respectant le format d'affichage
défini par le programme appelant.
J'ai pas analysé ta prose en détail, mais tu as fait ressurgir de ma mémoire
des vieux souvenirs en C avec la vsprintf() ...
Je vais étudier en détail vsprintf_p() qui semble être très puissante.
Merci pour cette réponse très détaillée.
--
jeb
http://jebissey.free.fr
En simplifiant un petit peu, on créé un objet en lui indiquant : - une requête SQL - un format d'affichage faisant référence aux champs de la requête (d'où mon pb de réf.)
En clair tu est un peu en train de reinventer la fonction vsprintf ?
vsprintf('SELECT %s FROM %s',array('champs','table'));
Non je ne pense pas. Il faut dire que je n'ai pas donné beaucoup de
précisions.
En fait (toujours en simplifiant) j'ai :
$format="<table><tr><td>V(1)</td></tr></table>"; Après transformation avec preg_replace() on obtient : $format="<table><tr><td>$f1</td></tr></table>";
avec $f1 qui contient la valeur du champ 1 de l'enregistrement courant. Donc eval("print("$format");"); affiche correctement le contenu de $f1 et respectant le format d'affichage défini par le programme appelant.
J'ai pas analysé ta prose en détail, mais tu as fait ressurgir de ma mémoire des vieux souvenirs en C avec la vsprintf() ... Je vais étudier en détail vsprintf_p() qui semble être très puissante.
Merci pour cette réponse très détaillée. -- jeb http://jebissey.free.fr
John GALLET
eval("print("$str");");
Attention à eval(), danger :
$str="system('rm -rf /');";
Bien nettoyer si $str peut venir du monde extérieur.
a++; JG
eval("print("$str");");
Attention à eval(), danger :
$str="system('rm -rf /');";
Bien nettoyer si $str peut venir du monde extérieur.
Bien nettoyer si $str peut venir du monde extérieur.
a++; JG
jibux
John GALLET wrote:
eval("print("$str");");
Attention à eval(), danger :
$str="system('rm -rf /');";
Bien nettoyer si $str peut venir du monde extérieur.
En fait c'est moi qui défini $str en faisant appel à mon générateur de formulaires. Donc pas de danger. Mais ce rappel n'est pas inutile tant il est vrai qu'on ne pense pas toujours à tous les effets de bord possibles des différentes fonctions utilisées dans nos programmes.
-- jeb http://jebissey.free.fr
John GALLET wrote:
eval("print("$str");");
Attention à eval(), danger :
$str="system('rm -rf /');";
Bien nettoyer si $str peut venir du monde extérieur.
En fait c'est moi qui défini $str en faisant appel à mon générateur de
formulaires. Donc pas de danger. Mais ce rappel n'est pas inutile tant il
est vrai qu'on ne pense pas toujours à tous les effets de bord possibles
des différentes fonctions utilisées dans nos programmes.
Bien nettoyer si $str peut venir du monde extérieur.
En fait c'est moi qui défini $str en faisant appel à mon générateur de formulaires. Donc pas de danger. Mais ce rappel n'est pas inutile tant il est vrai qu'on ne pense pas toujours à tous les effets de bord possibles des différentes fonctions utilisées dans nos programmes.