- Accueil forums
- » Le site - infos membres
- » Dictionnaire et documentation automatique.
21-08-2009 21:14:04
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut à tous, étant un newbie en 3d, j'ai du mal à me familiariser avec les termes employés, ce qui ne facilite pas l'apprentissage,
De plus, j'en ai marre de chercher pendant des heures dans la doc pour trouver une fonction.
Donc j'ai essayé de trouver des solutions pour que ces problèmes ne ce reproduise plus, ni pour moi, ni pour quiquonque dans l'univers. mdr
J'ai donc créer une fonction toute simple pour ajouter des définitions aux mots .
Pour afficher la définition d'un mot, il suffit de le survoler avec la souris, puis un cadre apparait avec la définition.
voici la fonction:
function dico($text)
{
$dictionnaire= array( "vertices"=>"sommets","vertex"=>"sommet");
foreach($dictionnaire as $mots => $definitions)
{
$text=preg_replace('#('.$mots.')#isU','<span title="'.$definitions.'">$1</span>',$text);
}
return $text;
}Voilà, c'est dejà la version finale de la fonction dictionnaire, il reste juste à ajouter des mots.(je peux aussi rajouter la gestion des acronym si ça vous dit)
Bon ça c'est surtout pour les zero de mon genre, il est évident que les habitués de la 3d n'en n'aurons pas l'utilité,
Et afin de ne pas affecter leur confort de lecture, les mots ne sont ni coloré ni souligné ni rien du tout en fait.(mais on peut changer si vous trouvé que c'est pas pratique)
Et maintenant, la fonction dont vous reviez tous
Bon j'avoue que le terme n'est pas très bien choisi, mais il me plait.
En fait cela consiste a créer un lien vers la documentation des classes d'irlicht.
admettons qu'un message contienne le mot "imeshscenenode"(peu importe les majuscules), et bien en cliquant dessus on est redirigé vers sa doc sur le site d'irrlicht.
Alors pour ce faire il y a plusieurs solutions.
La première est de définir un lien pour chaque mots clés d'irrlicht, en d'autres termes cela consiste à écrire des centaines de lignes pour déclarer les liens, et je ne pense pas que quelqu'un ai le courage de remplir cette tâche,.
J'ai donc adopté une autre méthode utilisant google, qui est beaucoup plus simple mais aussi beaucoup moins rapide à l'execution.(pas d'inquiétude la rapidité ne concerne pas la navigation sur le forum).
Non vous ne revez pas, vous avez bien vu le mot google
En effet c'est lui qui va chercher à notre place, il est là pour ça après tout.
La particularité de cette recherche est qu'elle est totalement transparente pour l'utilisateur et qu'elle opère uniquement sur le site officielle d'irrlicht.
Donc pour faire simple, lors d'un clic sur un mot d'irrlicht, une recherche de ce mot est effectuée de maniere invisible part google, puis on est redirigé vers le premier résultat de google, qui correspond donc à la doc d'irrlicht. Ouf.
Bon je pense que j'en ai fait fuir plus d'un avec mon roman, mais rassurez vous le code est tout rikiki.
$documentation= array( "imeshscenenode"=>"A scene node displaying a stat.....",
"mesh"=>"Class which holds the geometry of an o........ ");
foreach($documentation as $fonctions => $definitions)
{
$text=preg_replace('#([^a-zA-Z0-9])('.$fonctions.')([^a-zA-Z0-9])#isU','$1<span title="'.$definitions.'"><a style=" text-decoration:none; color:ffffff; " href="'.PUN_ROOT.'include/documentation.php?fonction='.$fonctions.'">$2</a></span>$3',$text);
}<?php
$fonction=htmlspecialchars($_GET['fonction']);
$source = implode ('', file ("http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_fr&aq=f&oq=&aqi="));
$source = strstr($source, '<a href="http://irrlicht.sourceforge.net/docu/');
$fin_source = strstr($source, '.html"');
$proposition = str_replace("$fin_source","", $source);
$proposition = str_replace('<a href="',"", $proposition);
header('Location:'.$proposition.'.html');
?>par contre ces instructions ne nous redirigerons pas forcement sur la page souhaité si on utilise des mots comme setposition.
car cette fonction est utilisé dans beaucoup de classe, donc google nous redirigera vers la classe qui a eu le plus de visites.
Dans mes tests, j'ai était redirigé vers la classe ICursorControl.
Voilà, j'espere que ça vous interrêsse, et surtout que ça pourra vous aider.
Dit moi si ça t'interresse tmike, et je t'explique la procédure.
Hors ligne
23-08-2009 15:09:04
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.176.37
- Courriel
Salut Nico, toujours aussi actif des méninges pour améliorer la convivialité du forum ![]()
L'idée de base est en effet alléchante, faudrait juste tester dans la pratique voir ce que cela donne. Et surtout voir si cela ne plombe
pas les perf du forum non plus ![]()
A essayer donc, je suis partant ![]()
Force et sagesse...
Hors ligne
23-08-2009 17:18:37
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Cool, en terme de performance, cela pompe beaucoup moins de ressources que la coloration syntaxique,
Donc appriori pas de souci, sauf que depuis j'ai totalement modifié le code. ![]()
En effet j'ai tout modifié pour faire en sorte que les membres puisse ajouter des mots et définitions.
Donc l'avantage c'est qu'une fois cette fonction mise en place, elle pourra évoluer sans faire perdre du temps au administrateurs du site.
Mais l'inconvénant est que c'est plus long a mettre en place.
Il va me falloir quelque jours pour finir ce mod. mais avant j'ai besoin de savoir si tu es d'accord pour créer une nouvelle base de donnée pour stocker les définitions? Et surtout as-tu un autre serveur pour l'héberger ?
Alors, il est sûre que je pourrai t'epargner cette tâche en utilisant la bdd du forum, mais bon.........
Ausinon c'est pas pour tout dessuite, cela sera surement prêt pour le week-end prochain, en attendant j'ai besoin de savoir si tu est ok, et ce soir je te montre des screenshots pour que tu te fasse une idée du mod.
Hors ligne
23-08-2009 18:02:38
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.176.37
- Courriel
OK. Pour ce qui est des bases de données, effectivement il n'est pas judicieux de passer par celle du
forum par sécurité.
D'ici demain ou après -demain, je t'enraierais un message avec les élément permettant d'avoir accès à une des bases de données
du portail.
Par contre je veux bien pour les screens shots, pour mieux cerner le fond de ton idée et projet ![]()
Force et sagesse...
Hors ligne
23-08-2009 18:59:19
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Cool pour la bdd.
Alors j'ai pas encore fini le code, mais toute critique est la bienvenue, cela me permet de mieu prévoir ma façon de coder.
Voici un screen du premier code que j'ai posté(la souris à disparu)
Donc en survolant la classe imeshscennenode, sa définition est affiché, on peut également cliqué dessus pour accéder à sa doc.
et maintenant un screen du mod que je suis en train de faire, j'ai carrément crée une nouvelle page.
Tu peut donc appercevoir un nouveau menu "dictionnaire" qui est accessible uniquement pour les membres connectés.
Ceci est un exemple, donc si il y a une mise en forme qui te convient pas dit-le.
Cette nouvelle page permet donc d'ajouter des définitions ainsi que de lister celles déjà existantes.
Il manque encore plusieurs éléments comme les boutons modifier, supprimer et quelques trucs en plus.
Dit moi si tu as d'autres idées .
ps: fait pas attention au texte, j'ai écrit des truc un peu au pif et avec plein de fautes en plus ![]()
Hors ligne
23-08-2009 19:49:03
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.176.37
- Courriel
Très alléchant en effet. Cela ne fait pas trop ramer le forum ce genre de système ?
Force et sagesse...
Hors ligne
23-08-2009 20:42:55
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Bein concernant la rapidité on va "doubler" le nombre de requètes par rapport a d'habitude, Le délais d'une requete dépend des performande de la bdd et de la taille des éléments a transférer, je pourrait pas te donner un chiffre précis mais ça se compte en milliseconde, donc je pense sincérement que tu ne verra pas la différence, A moins d'avoir un dictionnaire qui contienne 65 000 mot et définitions
, là ça se comprend
.
Mais je comprend ton inquiétude et je m'engage a ne pas produire de temps de latence perceptible. cela veut dire que si jamais il y a un délai perceptible, alors j'emploirai une autre méthode. satisfait ou remboursé ![]()
Par contre tu ne pose pas trop de question sur la sécurité, sa ne t'inquiete pas ? moi a ta place j'aurait pas confiance ![]()
Hors ligne
24-08-2009 16:36:40
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 92.130.13.178
- Courriel
nico Ecris:
Par contre tu ne pose pas trop de question sur la sécurité, sa ne t'inquiete pas ? moi a ta place j'aurais pas confiance
Pas pour le moment, car ce que tu veux mettre en place aura une BD dédié, et donc pas de risque de pollution du forum je pense, en tous les cas au niveau
des données. Par contre, pour le système lui même, charge à ceux qui le mettront en place (nous en sommes) de faire ne sorte qu'il ne soit pas trop vulnérable.
La seule polution que cela pourra alors amener sera d'ordre visuel, donc facilement 'déconnectable' en cas extrême
Force et sagesse...
Hors ligne
25-08-2009 13:31:20
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
tmyke Ecris:
Pas pour le moment, car ce que tu veux mettre en place aura une BD dédié, et donc pas de risque de pollution du forum je pense, en tous les cas au niveau
des données.
Je ne veux pas t'effrayer mais sâche que si mon code était dépourvu de sécurités, alors il ne serait pas bien difficile d'avoir accé à la bdd du forum.
Car malgrès le fait que mon code soit autonome, il s'éxécute dans punbb, donc les 2 bdd sont ouvertes et accessibles.
Bon bien sûre j'ai sécurisé mon code, il n'y a pas de quoi s'inquieter, mais il est tout de même bon d'en parler.
Là j'ai bien avancé, même quasiment terminé, et j'aurais donc besoin de faire des test avec la bdd.
Il m'a fallu 2 jours pour faire la fonction mais il m'en faudra encore au moins 4 jours pour l'optimiser
Donc on peut déjà commencer les tests. l'idéal, serait que tu es un espace libre ou je puisse installer punbb, comme ça tu pourrai tester, au sinon tampis je le fait en local, en tout cas si tu as 5 min, j'aimerai bien avoir accé à ta bdd. Merci.
Hors ligne
25-08-2009 16:13:43
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.182.83
- Courriel
nico Ecris:
Je ne veux pas t'effrayer mais sâche que si mon code était dépourvu de sécurités, alors il ne serait pas bien difficile d'avoir accé à la bdd du forum.
Car malgrès le fait que mon code soit autonome, il s'éxécute dans punbb, donc les 2 bdd sont ouvertes et accessibles.
Bon bien sûre j'ai sécurisé mon code, il n'y a pas de quoi s'inquieter, mais il est tout de même bon d'en parler.
Dans ce cas effectivement c'est différent, car si la sécurité de ton code n'est pas éprouvé, alors il ne sera pas souhaitable de le
mettre en place.
nico Ecris:
Là j'ai bien avancé, même quasiment terminé, et j'aurais donc besoin de faire des test avec la bdd.
Il m'a fallu 2 jours pour faire la fonction mais il m'en faudra encore au moins 4 jours pour l'optimiser
Donc on peut déjà commencer les tests. l'idéal, serait que tu es un espace libre ou je puisse installer punbb, comme ça tu pourrai tester, au sinon tampis je le fait en local, en tout cas si tu as 5 min, j'aimerai bien avoir accé à ta bdd. Merci.
J'essaierais de te fournir des éléments ce soir, mais je ne garantie rien, j'ai assez peut de temps à moi
Force et sagesse...
Hors ligne
27-08-2009 03:59:08
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Salut,
La v 1.0 est là ! ![]()
Cela ne veut pas dire pour autant qu'il re reste pas de réglages a faire
mais j'ai bien avancé pour aboutir sur un code opérationnel.
Le code est divisé en 2 parties bien distinctes, d'un coté il y a le code de "gestion de la bdd" et d'un autre coté il y un code pour "afficher les définitions dans les posts".
Ce dernier est le plus critique, puisqu'il s'éxécute à chaque chargement de page du forum, tandis que le premier code s'execute seulement lorsqu'on est dans la rubrique 'dictionnaire'.
J'ai donc remué ciel et terre pour optimiser au mieu le second code, et j'ai l'honneur de t'annoncer qu'il n'y aura aucune connexion à la bdd dans cette partie là
Alors je pense qu'une question te vient a l'esprit:
Comment afficher les définitions se trouvant dans la bdd sans aucune connexions à celle-ci ? ![]()
La réponse est assez simple, mais tellement découragente qu'on y pense meme pas, j'ai nommé le fichier texte.
En effet j'avais exclu cette méthode par flemme de codé ça, car c'est vraiment gonflant, mais par chance je suis tombé sur une fonction de punbb qui s'occupe tres bien de ça.
Son rôle est donc de mettre en cache les données de la bdd dans un fichier texte. Ce fichier contient le strict minimum, soit les mots et définitions.
Donc je croit qu'on a plus de soucis a ce faire en ce qui concerne les performances ![]()
Coté sécurités, j'ai mis le paquet, puisque outre les sécurisations html,sql et javascript, j'ai également rajouté un système anti-flood, ainsi que des limites de tailles
Coté fonctionalités, il y a le strict minimum pour l'instant, mais je peut rajouter à la demande.
Afin de finaliser le tout, j'ai besoin de connaitre le type de bdd que tu me propose. Et également la version php du site en seconde priorité.
Merci.
EDIT:
nico Ecris:
malgrès le fait que mon code soit autonome, il s'éxécute dans punbb, donc les 2 bdd sont ouvertes et accessibles.
Heureusement ce n'est plus le cas, avant j'étais obligé de faire plusieurs requetes dans punbb, car le serveur efface une requète mise en mémoire lorsque celle si est utilisé dans le code,
Donc c'est une sécurité visant à optimisé les performance mais qui oblige a faire une requète à chaque fois que l'on veut utiliser ces valeurs(d'ou l'interêt d'un fichier de cache). je sais pas si tu m'a suivit
par contre dans la partie "getion de la bdd", il y a d'abord une connexion à punbb(ça c'est pas moi qui l'est fait, j'inclus simplement un fichiers de pun_bb, common.php, c'est lui qui fait tout les boulot) puis je la referme,ce qui donne ça:
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
$db->end_transaction();
$db->close();
unset($db);
Voilà cela permet de récupérer les info sur les membres.
Et ensuite je me connecte à la bdd du dico.
Je peut donc te garantir avec certitude qu'il ne peut pas y avoir d'accé à la bdd du forum.
Hors ligne
28-08-2009 09:25:47
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.204.49.141
- Courriel
Cool tout cela. Je t'envoie par message les info sur la BD. Désolé pour le retard (famille + boulot = temps limité )![]()
Force et sagesse...
Hors ligne
28-08-2009 14:55:21
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Super, je vais voir ça. ![]()
edit:bein mince, je sais pas comment on fait pour y acceder, peut tu m'expliquer ?
Tout ce que je connais c'est avec free, je vais sur sql.free.fr, mais là je sais pas du tout.
Merci.
edit2: c'est bon j'ai trouvé
.
Hors ligne
28-08-2009 19:26:15
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Apparement, on ne peut pas acceder à la bdd depuis l'exterieur. ce qui est plutot embettant, la seule solution est d'executer le code depuis ovh.
bon au sinon on a cas mettre directement le code en place, à moins que tu es un espace libre pour installer un forum de test.
Hors ligne
28-08-2009 19:37:35
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.193.20
- Courriel
nico Ecris:
Apparement, on ne peut pas acceder à la bdd depuis l'exterieur. ce qui est plutot embettant, la seule solution est d'executer le code depuis ovh.
Effectivement, j'avais pas pensé, mais la BD n'est accessible qu'a partir d'OVH.
nico Ecris:
bon au sinon on a cas mettre directement le code en place
on peux toujours essayer, si tu me guide pas à pas ...
Force et sagesse...
Hors ligne
28-08-2009 20:44:33
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Alors, par ou comencer... ![]()
On va créer plusieurs fichiers dans le dossier include/.
Tout dabord on va créer le fichier config_ADDON.php
<?php
$bdd_host = 'mysql5-1.300gp';
$bdd_name = 'dictionnaire';
$bdd_username = '';
$bdd_password = '';
define('DELAI', 15);// definit le délai en seconde entre chaque action.(anti-flood).
define('MAXmot', 30);// définit le nombre maximum de caractères autorisés pour un mot.
define('MAXdef', 200);// définit le nombre maximum de caractères autorisés pour une définition.
define('ENREGISTREMENT', 'Votre définition a bien été enregistré, merci pour votre aide.');
define('SUPPRESSION', 'La définition a bien été supprimé, merci pour votre aide.');
define('EXIST', 'Cette définition existe déjà.');
define('DROIT', ' Vous ne pouvais pas supprimer cette définition.');
define('MEMBRE', 'Vous devez être connecté pour pouvoir apporter des modifications au dictionnaire.');
define('FLOOD', 'Sécurité anti-flood: vous devez patienter un délai de '.DELAI.' secondes entre chaque modification.');
define('VIDE', 'Un champs est vide, aucun enregistrement n\\'a été éfectué');
define('TAILLE', 'Le texte proposé est trop long, le mot doit comporter moins de '.MAXmot.' caractères et sa définition doit comporter moins de '.MAXdef.' caractères');
define('MEM_CACHE', 'Le fichier de cache à été mise a jour');
define('CANT_CACHE', 'Impossible de mettre à jour le fichier de cache');
define('INFO','<p>Ce site intègre un dictionnaire dans lequel chaque membre peut ajouter des définitions de mots et de classe.<br />
Pour afficher la définition des mots et des classes lors de votre lecture sur le forum, il suffit de les survoler avec la souris.<br />
En cliquant sur le nom d\\'une classe, vous serez rediriger vers la documentation d\\'Irrlicht.</p>');
?>Ce fichier va donc te permettre de configurer tout le reste.
Il faut également que tu rentre le mot de passe et le nom.
Ensuite on va créer le fichier fonctions_ADDON.php
<?php
if (!defined('PUN'))
exit;
//////////////////////////////////////////////////////////////////////////////SECURITE/////////////////////////////////////////////////////////////////////////////////////
function Securisation_sql($string)
{
if(ctype_digit($string))
{
$string = intval($string);
}
else
{
$string = mysql_real_escape_string($string);
$string = addcslashes($string, '%_');
}
return $string;
}
function Securisation_html($string)
{
return htmlentities($string);
}
function Securisation_javascript($string)
{
return preg_replace('#;#i',',',$string);
}
function antiflood($user,$delai)
{
$actions = mysql_result(mysql_query("SELECT COUNT(*) FROM action WHERE membre='".$user."' AND date > ('".time()."' - '".$delai."')"), 0);
if ($actions !=0){return false;}
else return true;
}
function limit($string,$limit)
{
if(strlen($string)<$limit){return true;}
else return false;
}
//////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////
function reussite($string)
{
return '<span class="directives"><p>'.$string.'</p></span>';
}
function echec($string)
{
return '<span class="operateurs"><p>'.$string.'</p></span>';
}
//////////////////////////////////////////////////////////////////////////////CACHE/////////////////////////////////////////////////////////////////////////////////////
function mem_cache_dico()
{
$reponse = mysql_query("SELECT mot,definition FROM dictionnaire");
while ($dico =mysql_fetch_row($reponse))$mem[$dico[0]] = $dico[1];
$dico_cache = @fopen(PUN_ROOT.'cache/cache_dictionnaire.php', 'wb');
if (!$dico_cache)return false;
else
{
fwrite($dico_cache, '<?php'."\
\
".'define(\\'DICO_LOADED\\', 1);'."\
\
".'$dico = '.var_export($mem, true).';'."\
\
".'?>');
fclose($dico_cache);
return true;
}
}
function mem_cache_doc()
{
$reponse = mysql_query("SELECT classe,definition FROM documentation");
while ($doc =mysql_fetch_row($reponse))$mem[$doc[0]] = $doc[1];
$doc_cache = @fopen(PUN_ROOT.'cache/cache_documentation.php', 'wb');
if (!$doc_cache)return false;
else
{
fwrite($doc_cache, '<?php'."\
\
".'define(\\'DOC_LOADED\\', 1);'."\
\
".'$doc = '.var_export($mem, true).';'."\
\
".'?>');
fclose($doc_cache);
return true;
}
}
//////////////////////////////////////////////////////////////////////////////DICO&DOC/////////////////////////////////////////////////////////////////////////////////////
function dico($text,$dico,$doc)
{
if(DOC_LOADED && DICO_LOADED)
{
foreach($dico as $mot=>$definition)
{
$text=preg_replace('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($mot)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'">$3</span>$4',$text);
}
foreach($doc as $classe=>$definition)
{
$text=preg_replace ('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($classe)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'"><a style=" text-decoration:none; color:000000; " href="'.PUN_ROOT.'include/documentation_ADDON.php?fonction='.Securisation_html(Securisation_javascript($classe)).'">$3</a></span>$4',$text);
}
}
return $text;
}
?>Cela sera notre boite à outil
encore un petit outil, qu'on nomera documentation_ADDON.php
<?php
if(strpos($_SERVER['HTTP_REFERER'],"viewtopic.php")!==false)
{
$fonction=preg_replace('#(\\'|\\")#i','\\$1',$_GET['fonction']);
$source = implode ('', file ("http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi="));
$source = strstr($source, '<a href="http://irrlicht.sourceforge.net/docu/');
$fin_source = strstr($source, '.html"');
$proposition = str_replace("$fin_source","", $source);
$proposition = str_replace('<a href="',"", $proposition);
if (preg_match("/irrlicht/", $proposition)){header('Location:'.$proposition.'.html');}
else header("Location:http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi=");
}
else echo'error';
?>Voilà, on a fini pour le dossier include, maintenant il faut revenir a la racine du repertoire et y créer le fichier dictionnaire_ADDON.php qui permettra de gérer la bdd
<?php
/////////////////////////////////////////////////////////////////////////////////INIT////////////////////////////////////////////////////////////////////////////////////////////
define('PUN_ROOT', './');
require PUN_ROOT.'include/config_ADDON.php';
$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
mysql_select_db($bdd_name) or die( mysql_error() );
$reponse = mysql_query("SELECT * FROM dictionnaire");
$repons = mysql_query("SELECT * FROM documentation");
mysql_close($dic);
unset($dic);
require PUN_ROOT.'include/common.php';
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
// Load the index.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';
$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/fonctions_ADDON.php';
/////////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////////////
echo'<div class="box" style="padding:10;"><div class="inbox">';
switch ($_GET['info']) {
case 'dico': echo reussite(ENREGISTREMENT);break;
case 'sup': echo reussite(SUPPRESSION); break;
case 'exist': echo echec(EXIST); break;
case 'error': echo echec(DROIT); break;
case 'echec': echo echec(MEMBRE); break;
case 'flood': echo echec(FLOOD); break;
case 'vide': echo echec(VIDE); break;
case 'taille':echo echec(TAILLE); break;
}
if (isset($_GET['memo']))
{
if($_GET['memo']=='maj')echo reussite(MEM_CACHE);
if($_GET['memo']=='unfound')echo echec(CANT_CACHE);
}
echo INFO;
//////////////////////////////////////////////////////////////////////////////IMPUT//////////////////////////////////////////////////////////////////////////////////////////////////
?>
<form method="post" action="enregistrement_ADDON.php?action=mot" style="display: inline;" >
<fieldset style="display: inline;padding:5;"><legend>Ajouter une définition</legend>
<p> <fieldset style="display: inline;padding:5;"><legend>mot</legend><input type="text" name="mot" id="mot" size="50"/></fieldset> </p>
<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition" id="definition" rows="10" cols="50"></textarea> </fieldset> </p>
<p><input type="submit" value="Enregistrer"/><br /> </p>
</fieldset>
</form>
<form method="post" action="enregistrement_ADDON.php?action=doc" style="display: inline;">
<fieldset style="display: inline;padding:5;"><legend>Ajouter une documentation</legend>
<p> <fieldset style="display: inline;padding:5;"><legend>classe</legend><input type="text" name="classe" id="classe" size="50"/></fieldset> </p>
<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition2" id="definition2" rows="10" cols="50"></textarea> </fieldset> </p>
<p><input type="submit" value="Enregistrer"/><br /> </p>
</fieldset>
</form>
<?php /////////////////////////////////////////////////////////////////////////LISTES//////////////////////////////////////////////////////////////////////////////////////////////////
echo' <fieldset><legend>Liste des mots enregistrés</legend>
<table class="pun">
<tr>
<th>Mots</th>
<th>Definitions</th>
<th>Membres</th>
<th>Date</th>
<th>Action</th>
</tr>';
while ($donnees = mysql_fetch_array($reponse) )
{
echo'
<tr>
<td>'.Securisation_html(Securisation_javascript($donnees['mot'])).'</td>
<td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td>
<td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
<td>le '.$donnees['date'].'</td>
<td>';
if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
echo'<form method="post" action="enregistrement_ADDON.php?action=supprimer&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
}else echo'Aucune action possible';
echo'</td>
</tr>';
}
echo'</table></fieldset>';
echo' <fieldset><legend>Liste des classes enregistrés</legend>
<table class="pun">
<tr>
<th>Classes</th>
<th>Definitions</th>
<th>Membres</th>
<th>Date</th>
<th>Action</th>
</tr>';
while ($donnees = mysql_fetch_array($repons) )
{
echo'
<tr>
<td>'.Securisation_html(Securisation_javascript($donnees['classe'])).'</td>
<td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td>
<td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
<td>le '.$donnees['date'].'</td>
<td>';
if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
echo'<form method="post" action="enregistrement_ADDON.php?action=supprimerC&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
}else echo'Aucune action possible';
echo'</td>
</tr>';
}
echo'</table></fieldset>';
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
echo'</div></div><br/>';
require PUN_ROOT.'footer.php';
?>puis on créer le fichier qui va permettre de valider les informations, enregistrement_ADDON.php
<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
$db->end_transaction();
$db->close();
unset($db);
require PUN_ROOT.'include/config_ADDON.php';
require PUN_ROOT.'include/fonctions_ADDON.php';
if($pun_user['g_id']==PUN_ADMIN||$pun_user['g_id']==PUN_MOD||$pun_user['g_id']==PUN_MEMBER)
{ global $db;
$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
mysql_select_db($bdd_name) or die( mysql_error() );
$membre=Securisation_sql($pun_user['username']);
if($pun_user['g_id']==PUN_ADMIN || antiflood($membre,DELAI))
{
switch ($_GET['action'])
{
case 'mot':
{
$mot=Securisation_sql($_POST['mot']);
$definition=Securisation_sql($_POST['definition']);
if(!empty($mot)&&!empty($definition))
{
if(limit($mot,MAXmot) && limit($definition,MAXdef))
{
$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM dictionnaire WHERE mot = "'.$mot.'"'), 0);
if($exist == 0)
{
mysql_query("INSERT INTO dictionnaire (id, membre, mot, definition,date) VALUES('null','".$membre."','".$mot."','".$definition."', '".time()."')")or die( mysql_error() );
$info='dico';
mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
if(mem_cache_dico())$memo='maj';
else $memo='unfound';
}
else $info='exist';
}
else $info='taille';
}
else $info='vide';
}
break;
case 'doc':
{
$classe=Securisation_sql($_POST['classe']);
$definition2=Securisation_sql($_POST['definition2']);
if(!empty($classe)&&!empty($definition2))
{
if(limit($classe,MAXmot) && limit($definition2,MAXdef))
{
$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM documentation WHERE classe = "'.$mot.'"'), 0);
if($exist == 0)
{
$date=time();
mysql_query("INSERT INTO documentation (id, membre, classe, definition,date)VALUES('null','".$membre."','".$classe."','".$definition2."', '".$date."')")or die( mysql_error() );
$info='dico';
mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
if(mem_cache_doc())$memo='maj';
else $memo='unfound';
}
else $info='exist';
}
else $info='taille';
}
else $info='vide';
}
break;
case 'supprimer':
{
$id =Securisation_sql($_GET['id']);
$requete = mysql_query('SELECT membre FROM dictionnaire WHERE id = '.$id.'')or die( mysql_error() );
$data = mysql_fetch_assoc($requete);
if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
{
mysql_query("DELETE from dictionnaire WHERE id = '".$id."'" )or die( mysql_error() );
$info='sup';
mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
if(mem_cache_dico())$memo='maj';
else $memo='unfound';
}
else $info='error';
}
break;
case 'supprimerC':
{
$id =Securisation_sql($_GET['id']);
$requete = mysql_query('SELECT membre FROM documentation WHERE id = '.$id.'')or die( mysql_error() );
$data = mysql_fetch_assoc($requete);
if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
{
mysql_query("DELETE from documentation WHERE id = '".$id."'")or die( mysql_error() );
$info='sup';
mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
if(mem_cache_doc())$memo='maj';
else $memo='unfound';
}
else $info='error';
}
break;
}
}
else $info='flood';
mysql_close($dic);
}
else $info='echec';
unset($data,$pun_user);
if($memo=="") header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'');
else header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'&memo='.$memo.'');
?>Bon je pense qu'on peut déjà essayer ca, le code n'est pas complet afin que les utilisateurs du forum ne soit pas affectés lors de nos essais.
Mais rassure toi il reste juste une dizaine de lignes de code.
Hors ligne
29-08-2009 11:56:40
- Froyok
- Membres

- Date d'inscription:
- Messages: 4
- IP: 92.61.132.122
- Courriel Site web
Bonjour, j'apprécie l'initiative du dictionnaire !
Je passe juste pour signaler ceci :
vertex = sommet
vertices = sommets !
(Référence au premiet post du topic)
Bonne continuation ! ![]()
Hors ligne
29-08-2009 12:56:01
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Merci Froyok, c'est corrigé ![]()
Je suis content que ça t'intéresse.
Hors ligne
29-08-2009 15:15:52
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.213.162.54
- Courriel
Je m'occupe du code demain matin Nico, je devrais être tranquille, toujours aussi peux de temps à moi en ce moment ![]()
Force et sagesse...
Hors ligne
29-08-2009 15:17:39
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Ok, pas de soucis ![]()
Hors ligne
30-08-2009 08:53:42
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
Bon, voilà, j'ai effectué les ajout que tu décris ci-dessus...
PS: dans quel mesure serait-il possible d'utiliser un serveur dédié, avec son propre FTP et aussi donc sa propre BD ?
Par contre je ne sais pas comment cela se passerait pour faire le lien avec le forum.
Force et sagesse...
Hors ligne
30-08-2009 09:26:15
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Cool, apparement il y a un probleme de connexion, il faudrait essayé de mettre ça: $bdd_host = 'mysql5-1';
Alors cela doit être faisable, perso j'y avait pensé que pour les tests, mais le problème c'est qu'il faut qu'en même que je me connecte à la bdd du forum pour voir si les membres sont bien enregistrés, donc cela serait un problème je pense,
l'avantage sur la bdd que tu m'a passé, c'est qu'il y a aucune données sensibles comme mot de passe, ou encore niveau de privilège. grace a la bdd du forum. Donc je pense que tout décentraliser amenerai a plus de risque de sécurité. par contre pour les tests c'est super, mais dit moi le fond de ta pensée.
Hors ligne
30-08-2009 10:20:13
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
nico Ecris:
Cool, apparement il y a un probleme de connexion, il faudrait essayé de mettre ça: $bdd_host = 'mysql5-1';
Je suis pas sur, car en passant par MySQLAdmin, je rentre bien mysql5-1.300gp, et cela fonctionne bien. J'ai ré-injecté le fichier 'config-ADDON' au cas ou.
Ceci dit la base est vide.
nico Ecris:
Alors cela doit être faisable, perso j'y avait pensé que pour les tests, mais le problème c'est qu'il faut qu'en même que je me connecte à la bdd du forum pour voir si les membres sont bien enregistrés, donc cela serait un problème je pense,
Oui, c'est bien ce que je pensais...
nico Ecris:
l'avantage sur la bdd que tu m'a passé, c'est qu'il y a aucune données sensibles comme mot de passe, ou encore niveau de privilège. grace a la bdd du forum. Donc je pense que tout décentraliser amenerai a plus de risque de sécurité. par contre pour les tests c'est super, mais dit moi le fond de ta pensée.
Effectivement, vue sur ce plan, j'avoue n'être absoluement pas un spécialiste de la prog WEB, et donc je n'ai pas à l'espris les bon reflexes.
Force et sagesse...
Hors ligne
30-08-2009 10:30:20
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Est ce que le site est hebergé chez ovh? car il met cette erreur:Unknown MySQL server host 'mysql5-1.300gp'
http://forum.irrlicht.fr/dictionnaire_ADDON.php
Hors ligne
30-08-2009 10:54:53
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 81.51.29.59
- Courriel
La base de donnée que j'ai fourni est bien chez OVH, par contre le forum lui n'y est pas, je viens de percuter.... ![]()
Force et sagesse...
Hors ligne



