Dark26 Posté(e) le 28 septembre 2003 Partager Posté(e) le 28 septembre 2003 après une (bonne ) idée dans le forum idée, il m'ai venu une bonne idée de script qui devrait pourvoir servir à beaucoup de chose, peut être dur à mettre en place masi bon faut essayer..... en gros : une base de données dictionnaire : champ1 : mot ; champ 2: définition ou lien hypertext vers un site exemple champ 1 : ASUS : Champ2 = ASUS en gros on a une page web style : ............ASUS aime pas beaucoup microsoft....... et une fois passé la page par cette moulinette ............ASUS aime pas beaucoup microsoft.......[/url] ça parait simple à faire ( recherche de chaîne de caractère dans une boucle, c'est pas la mort) 2 boucle imbriquée , une sur le texte l'autre sur la base de données. le problème c'est l'adaptation de ce bout de script dans une page web... comment faire si la page que l'on veut traiter s'appelle index.php ce que l'on veut traiter , c'est le résiltat de la page php ( le code html en fait) et pas le code source de la page php et donc il faudrait que l'on puisse dans la page php index.php <php bout de script ?> <php la page php ?> <php bout de script ?> et que ça donne le résultat esconté en une fois en gros il faut injecté le résulat de la page php directement dans la moulinette.... des idées??? j'avais pensé a des includes, mais on insère le code et pas le résultat... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 28 septembre 2003 Auteur Partager Posté(e) le 28 septembre 2003 sinon peut être que comme ça c'est faisable : www.toto.com/translate.php?page=index.php ou translate est la page qui fait la conversion enytre le nom et les liens hypertext, et index.php est la page que l'on veut traiter.... mais comment faire pour utiliser le résulat de la pahe php, plutôt que le code source?? il faut exécuter le code dans le page translate ??? donc faire un truc style php index.php > pageweb.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tchern0byl Posté(e) le 28 septembre 2003 Partager Posté(e) le 28 septembre 2003 sa me parait pas mal, mais sa doit etre un peu chiant a la longue de voir tout plein de liens de partout non ? enfin bon c pas mon affaire desoler mais je ne fais pas de php donc je peux pas te donner des conseils Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 28 septembre 2003 Auteur Partager Posté(e) le 28 septembre 2003 sa me parait pas mal, mais sa doit etre un peu chiant a la longue de voir tout plein de liens de partout non ? enfin bon c pas mon affaire desoler mais je ne fais pas de php donc je peux pas te donner des conseils c'ets acalir que ça risue de faire beaucoup de lien bordel en théorie ça mrche mais impossible de faire marcher la base de donées alors que ça marchait avant Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 28 septembre 2003 Auteur Partager Posté(e) le 28 septembre 2003 donc voila juste pour dire que c'est pratiquement fini. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 29 septembre 2003 Partager Posté(e) le 29 septembre 2003 Je pense qu'en terme de ressource CPU, le serveur va en prendre une vieille claque... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 29 septembre 2003 Auteur Partager Posté(e) le 29 septembre 2003 Je pense qu'en terme de ressource CPU, le serveur va en prendre une vieille claque... en gros ça boucle sur la base de données et sur le nombre de mots .. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 29 septembre 2003 Auteur Partager Posté(e) le 29 septembre 2003 voila le code si on l'insère dans une page web <?php // Script made by DARK26 ( contact dark26@dark26.dynu.com) // moulinette permettant de remplaçer des mots par des infos bulles ou des liens hypertexts automatiquement // via une base de données en Mysql if ($grosporc!= 1 ) { $db = mysql_connect("localhost", "root",""); mysql_select_db("dico",$db); if ($QUERY_STRING=="") { $adress = "http://".$SERVER_NAME.$REQUEST_URI."?grosporc=1"; } else { $adress = "http://".$SERVER_NAME.$REQUEST_URI."&grosporc=1"; } //Fonction debuggage echo "$adress"; // on récupère le nom de l'adresse web $toto = implode("",file($adress)); //on découpe suivant le caractère <a pour les lien hypertext $strResult = explode("<a",$toto); // connexion base de données $db = mysql_connect("localhost", "root",""); mysql_select_db("dico",$db); $query = mysql_query("SELECT * FROM tableau",$db); while($row = mysql_fetch_array($query)) { // si on a mis 0, c'est un lien hypertext, si on a mis 1 c'est une info bulle if ($row[2]== 0) { $replace= "<a href="$row[1]" target="_blank" Title="$row[1]">$row[0]</a>"; } elseif ($row[2]== 1) { $replace= "<a Title="$row[1]">$row[0]</a>"; } // reinitialisation de la chaîne $final=''; // on parcourt chaque petit bout de page web foreach ( $strResult as $k => $v) { // print $k." -> ".$v."<br />n"; //debuggage // on découpe encore chaque petit bout de page web en mini bout de page web (lien hypertext et le reste) $tata[$k] = explode ("a>", $v); foreach ( $tata[$k] as $l => $m) { //print $l." -> ".$m."<br />n"; //debuggage // si lien hypertext if ($l==0 ) { // si chaine pas vide if ($final !='') {$final=$final."<a".$m."a>";} //si chaine vide else {$final=$m; } } // si pas lien hypertext, alors on peut remplacer else { $final = $final.str_replace("$row[0]","$replace",$m); } } } // on recree le tableau de départ pour nouvelle itération $strResult = explode("<a",$final); } // écriture de la page web echo "$final"; exit; } ?> pour créer la base de données # phpMyAdmin MySQL-Dump # version 2.2.6 # http://phpwizard.net/phpMyAdmin/ # http://www.phpmyadmin.net/ (download page) # # Serveur: localhost # Généré le : Lundi 29 Septembre 2003 à 18:02 # Version du serveur: 3.23.49 # Version de PHP: 4.2.0 # Base de données: `dico` # -------------------------------------------------------- # # Structure de la table `tableau` # DROP TABLE IF EXISTS `tableau`; CREATE TABLE `tableau` ( `name` text NOT NULL, `description` text NOT NULL, `affichage` int(11) NOT NULL default '0', `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`) ) TYPE=MyISAM; ensuite le code pour utilisation de manière externe à la page web on sert sert comme ça http://localhost/site/Html/dicfinal.php?p=aircooling.htm ou aircooling.htm et le nom de la page web a ouvrir <?php //fichier dicfinal.php // Script made by DARK26 ( contact dark26@dark26.dynu.com) // moulinette permettant de remplaçer des mots par des infos bulles ou des liens hypertexts automatiquement // via une base de données en Mysql // on récupère le nom de l'adresse web $toto = implode("",file($p)); //on découpe suivant le caractère <a pour les lien hypertext $strResult = explode("<a",$toto); // connexion base de données $db = mysql_connect("localhost", "root",""); mysql_select_db("dico",$db); $query = mysql_query("SELECT * FROM tableau",$db); while($row = mysql_fetch_array($query)) { // si on a mis 0, c'est un lien hypertext, si on a mis 1 c'est une info bulle if ($row[2]== 0) { $replace= "<a href="$row[1]" target="_blank" Title="$row[1]">$row[0]</a>"; } elseif ($row[2]== 1) { $replace= "<a Title="$row[1]">$row[0]</a>"; } // reinitialisation de la chaîne $final=''; // on parcourt chaque petit bout de page web foreach ( $strResult as $k => $v) { // print $k." -> ".$v."<br />n"; //debuggage // on découpe encore chaque petit bout de page web en mini bout de page web (lien hypertext et le reste) $tata[$k] = explode ("a>", $v); foreach ( $tata[$k] as $l => $m) { //print $l." -> ".$m."<br />n"; //debuggage // si lien hypertext if ($l==0 ) { // si chaine pas vide if ($final !='') {$final=$final."<a".$m."a>";} //si chaine vide else {$final=$m; } } // si pas lien hypertext, alors on peut remplacer else { $final = $final.str_replace("$row[0]","$replace",$m); } } } // on recree le tableau de départ pour nouvelle itération $strResult = explode("<a",$final); } // écriture de la page web echo "$final"; ?> attention si le script n'est pas dans le même répertoire que la page a afficher, alors tous les liens relatifs ne seront pas valides. Edit : correction d'un bug que personne n'a vu Lien vers le commentaire Partager sur d’autres sites More sharing options...
milohoffman Posté(e) le 29 septembre 2003 Partager Posté(e) le 29 septembre 2003 on voit les pros Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 30 septembre 2003 Partager Posté(e) le 30 septembre 2003 Vu le nombre d'accès SQL que ça fait, je voudrait pas être à la place du serveur... Mais l'idée est bonne... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 30 septembre 2003 Auteur Partager Posté(e) le 30 septembre 2003 Vu le nombre d'accès SQL que ça fait, je voudrait pas être à la place du serveur... Mais l'idée est bonne... le nombre de rêquête sql??? une seulement par appel de page en fait la première boucle est la requête mysql, la deuxième, et la boucle sur la page ( donc pas de requête) et si on veut, on peut aussi récupérer la page à la sortie du prog et l'enregistrer sous format html... hélas comme ça c'est plus dynamique, et ça perd un peu de son intêret promis en test sur mon site web perso, dès que j'aurais accès à mes fichier et que j'aurais remplit la base de données Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 30 septembre 2003 Partager Posté(e) le 30 septembre 2003 Ben à chaque mots il faut qu'il voit si le mots est dans la base... 200000messages * 20mots par messages... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 30 septembre 2003 Auteur Partager Posté(e) le 30 septembre 2003 Ben à chaque mots il faut qu'il voit si le mots est dans la base...200000messages * 20mots par messages... tu as mal lu, c'est l'inverse à chaque mot de la base il regarde si il est dans la page for i { for j { }} on est d'accord qu'il y a plus de boucle j que de bouche i effectué ?? c'est clair que dans l'autre sens , à chaque mot de la page web, il faudrait une requête mysql en gros c'ets une variable en mémoire ( la page web en fait) qui est tré sollicité, mais des calculs en mémoire c'est rapide.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.