Aller au contenu

theprogrammeur

Hubmaster
  • Compteur de contenus

    187
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par theprogrammeur

  1. Le problème s'est réglé de lui même. Encore un mystère de l'informatique!!!
  2. theprogrammeur

    eregi

    Bonjour J'utilse eregi() pour sélectionner une partie d'une chaine de caractères comme ceci: eregi("<?php([^?>])+?>", $page, $php_temp); $php = $php_temp[1]; Le problème est que la fonction ne s'arrète qu'à la dernière balise "?>". Comment faire pour qu'elle s'arrète avant? Merci
  3. Bienvenue sur le Hub. Aucune question n'y reste sans réponse!
  4. Kaspersky possède une fonctionnalité spéciale pour les mails "Anti-virus mail". Tu n'as donc pas de soucis à te faire de ce côté là. Je l'utilise et il fonctionne parfaitement avec Outlook. Je peux tefaire une liste de louange pour Kaspersky. Le seul défaut que j'ai pu lui trouver est qu'il faut le temps de le paramètrer car il est fort sensible. Je suis gentil, voilà le lien:Kaspersky (Anti-virus 2007). Site en Français
  5. Bonjour J'ai un petit script d'indexation qui récupère certaines balises META et les stocke dans la BDD pour que le moteur de recherche interne puisse les utiliser. Seul problème, dans toutes mes pages, les balises META sont les arguments d'une fonction de header qui écrit automatiquement tout le <head> de la page. Il faudrait donc que mon script n'ouvre la page que lorsque la fonction de header a été exécutée par le serveur. Mais comment puis-je faire cela étant donné que lorsque le script ouvre la page (fopen()), il voit le code PHP. Comment résoudre ce problème? Merci.
  6. Bonjour Je me suis créé un petit plugin OpenSearch (qui fonctionne à merveille). Seul point noir au tableau, lorsque je vais dans la liste de moteurs de recherche, l'icone de mon moteur apparait beaucoup trop grande (+- 2* trop). Pourtant, l'icone est de 16*16 pixels (.ico). Voici la ligne de l'image de mon plugin: <Image width="16" height="16">http://localhost/recherche/favicon.ico</Image> A votre avis, d'où vient le problème?
  7. C'est pas grave, on peut toujours discuter pour s'instruire! J'ai pas très bien compris avec fulltext. Comment ça marche? De plus, comment fonctionne les clés MySQL? J'ai compris que ça pouvait accélérer les recherches dans la BDD, mais comment ça fonctionne?
  8. J'ai du mettre 4 caractères et pas trois (encore un mystère de PHP), mais ça fonctionne. Merci beaucoup au hub
  9. Comme tu peux le voir dans ce bout de code, oui, elle a bien été intialisée! if(isset($_POST['rechercher'])){ //calcul du temps avant la fonction pour être sûr que ça soit exact $execution = microtime(); $execution = explode(' ',$execution); $execution_debut = $execution[1]+$execution[0]; //fin du calcul du temps $recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); $mode = mysql_real_escape_string(htmlspecialchars($_POST['mode'])); if($mode == "tous_les_mots"){ $and_ou_or = 'AND'; } else{ $and_ou_or = 'OR'; } if($mode == "expression_exacte"){ $query = " SELECT * FROM recherche WHERE titre LIKE '%".$recherche."%' AND description LIKE '%".$recherche."%' AND keywords LIKE '%".$recherche."%' ORDER BY id DESC "; $selection_recherche = mysql_query($query) or die(mysql_error()); } else{ $mots = explode(" ", $recherche); //séparation des mots $nombre_mots = count ($mots); //compte le nombre de mots $valeur_requete = ''; $nombre_mots_boucle = 0; while($nombre_mots_boucle < $nombre_mots){ $valeur_requete .= ' '.$and_ou_or.' titre LIKE \'%'.$mots[$nombre_mots_boucle].'%\' AND description LIKE \'%'.$mots[$nombre_mots_boucle].'%\' AND keywords LIKE \'%'.$mots[$nombre_mots_boucle].'%\''; $nombre_mots_boucle++; } $valeur_requete = ltrim($valeur_requete, $and_ou_or); //suppression de AND ou de OR au début de la boucle $sql = "SELECT * FROM recherche WHERE $valeur_requete ORDER BY id DESC"; $selection_recherche = mysql_query($sql) or die(mysql_error()); //requête avec le résultat de la boucle dedans } $nombre_resultats = mysql_num_rows($selection_recherche);
  10. Le problème vient de la fonction ltrim() qui ne retire pas le 'and' ou le 'or' au début de la requête. Je ne sais pas pourquoi il ne fonctionne pas. Si ca peut vous aider, je teste le script sous WAMP5
  11. Encore des bugs MySQL dans ce script, un problème de mysql_num_rows(); $recherche est ce que l'utilisateur entre. Le else signifie s'il faut rechercher mot par mot dans la BDD. else{ $mots = explode(" ", $recherche); //séparation des mots $nombre_mots = count ($mots); //compte le nombre de mots $valeur_requete = ''; $nombre_mots_boucle = 0; while($nombre_mots_boucle < $nombre_mots){ $valeur_requete .= ''.$and_or.'titre LIKE \'%'.$mots[$nombre_mots_boucle].'%\' AND description LIKE \'%'.$mots[$nombre_mots_boucle].'%\' AND keywords LIKE \'%'.$mots[$nombre_mots_boucle].'%\''; $nombre_mots_boucle++; } $valeur_requete = ltrim($valeur_requete, $and_or); //suppression de AND ou de OR au début de la boucle $selection_recherche = mysql_query("SELECT * FROM recherche WHERE '$valeur_requete' ORDER BY id DESC"); //requête avec le résultat de la boucle dedans } $nombre_resultats = mysql_num_rows($selection_recherche); Voici l'erreur qui s'affiche:
  12. Ca fonctionne , mais est-ce que ça n'alourdit pas la requête MySQL?
  13. Bonjour J'ai une erreur dans une requete et je ne parvient pas à la comprendre. Voici la requete: $query = "SELECT * FROM recherche WHERE titre,description,keywords LIKE '%$recherche%' ORDER BY id DESC"; Et voici l'erreur affichée: Merci d'avance;
  14. Merci beaucoup TheRec, le script fonctionne au poil. TRUNCATE est effectivement mieux que DELETE car il supprime aussi les id mises en "auto_increment".
  15. Bonjour Je me fais un p'tit script qui va indexer toutes les pages de mon site et enregistrer certaines info dans la BDD. Voici mon script: <html><head><title>Script d'indexation</title> <meta name="robots" content="noindex" /> </head><body> <?php //Connection à la BDD $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Connexion impossiblex : ' . mysql_error()); } mysql_select_db('my_data_base'); $query_one = 'DELETE FROM recherche'; mysql_query($query_one) or die(mysql_error()); mysql_close($link); function indexer($repertoire){ $connect = mysql_connect('localhost', 'root', ''); if (!$connect) { die('Connexion impossible : ' . mysql_error()); } mysql_select_db('my_data_base'); $dossier = opendir($repertoire); while($fichier = readdir($dossier)){ if(is_dir($fichier) && $fichier !="." && $fichier != ".."){ indexer("$fichier"); } else{ if(eregi('.php', $fichier)){ $balises_meta = get_meta_tags($repertoire.'/'.$fichier); if($balises_meta['robots'] != "noindex"){ $meta_description = $balises_meta['description']; $meta_keywords = $balises_meta['keywords']; $page =''; $theprogrammeur=fopen($repertoire.'/'.$fichier,"r"); while(!feof($theprogrammeur)){ $page .= fgets($theprogrammeur,500); } fclose($theprogrammeur); $eregi = eregi("<title>(.*)</title>", $page, $titre_temp); $titre = $titre_temp[1]; $chemin = $repertoire.'/'.$fichier; if($titre == ''){ echo'Le fichier '.$fichier.' ne possède pas de titre<br />'; } if($meta_description == ''){ echo'Le fichier '.$fichier.' ne possède pas de balise META description<br />'; } if($meta_keywords == ''){ echo'Le fichier '.$fichier.' ne possède pas de balise META keywords<br />'; } mysql_query("INSERT INTO recherche VALUES('', '$titre', '$chemin', '$meta_description', '$meta_keywords')"); }//robots }//.php }//else }//while closedir($dossier); mysql_close($connect); }//function indexer("."); ?></body></html> 1er bug J'ai été obliger de me connecter deux fois à la BDD et ça m'ennuie. Y a-t-il moyen de se connecter avant la fonction et de ne pas se reconnnecter dans la fonction??? Avec la base, j'ai une erreur qui s'affiche: La ligne 67 est la ligne de mysql_close($connect); (dans la fonction) 2eme bug La fonction est sencée, lorsqu'elle trouve un répertoire l'ouvrir et parcourir tous les dossiers qu'il y a dedans. Je me suis fait un petit répertoire de test avec 5 fichier dont 2 dans un dossier. Le bug est que seul 1 fichier du dossier est indexé dans la BDD et que je ne vois pas où ça foire. Merci de votre aide.
  16. Problème réglé, merci beaucoup au Hub!! :) :)
  17. Merci pour votre aide, le problème est réglé!!! Pour ceux que ça intéresse, le code devient ceci: if (isset($this) && ($this instanceof GeSHi)) { $language_data['STYLES']['NUMBERS'][0] = $language_data['STYLES']['REGEXPS'][3];
  18. Je peux te proposer PHPWebGallery, très complet, avec zone d'enregistrement, catégories différentes, miniatures, post de commentaires (qui peut être désactivé)... et j'en passe. C'est une galerie très complète que j'ai installé pour le site de modélisme de mon frère. Tu peux la voire à cette adresse:galerie PHPWebGallery Site de PHPWeb Gallery
  19. theprogrammeur

    is_a et instanceof

    Bonjour J'utilise une fonction qui m'envoie un mail avec chaque erreur qui s'est produite sur mon site. C'est ainsi que j'ai découvert que la fonction is_a() était "deprecated". L'ennui est que ma fonction bloque l'exécution de la page dés qu'elle à trouvé une erreur et que cette erreur se trouve dans...GeSHi dans le fichier "css.php" à la ligne 230. Voici ces lignes: if (isset($this) && is_a($this, 'GeSHi')) { $language_data['STYLES']['NUMBERS'][0] = $language_data['STYLES']['REGEXPS'][3]; } Par quoi puis-je la remplacer sans "foutre en l'air" le fichier de GeSHi? On m'a conseillé dans le manuel PHP d'utiliser "instanceof" mais comment faire? Merci
  20. Ca ne marche toujours pas, la fonction écrit l'erreur et envoie un mail, même si l'erreur est déjà dans la BDD.
  21. Bonjour J'ai créé une fonction pour gérer les erreurs qui peuvent survenir sur mon site. Malheureusement, il y a des erreurs que je ne parvient pas à régler. Le principe de la fonction est qu'elle détecte les erreurs grace à set_error_handler();. Ma fonction affiche alors un petit message au visiteur et bloque l'exécution de la page; un mail m'est automatiquement envoyé pour me prévenir de l'erreur. De plus, la fonction écrit l'erreur dans une table MySQL comprenant 3 champs: -fichier -ligne -timestamp. La fonction doit regarder si l'erreur est déjà dans la table et si c'est la cas, ne pas envoyer de mail. En plus, elle vérifie si le timestamp date d'il y a plus de 5 jours. Si c'est le cas, elle met à jour le timestamp et renvoie un mail. Et pour finir, elle supprime toutes les erreurs qui ont un timestamp vieux de 5jours et 800 secondes. Voici ma fonction: function gestion_erreur($niveau, $message, $fichier, $ligne){ $date = time(); $connection = mysql_connect('localhost', 'root', '***') or die('Erreur lors de la connection au serveur'); mysql_select_db('***') or die('Erreur lors de la connection à la base de données'); $nombre_erreurs = mysql_query("SELECT COUNT * AS nb_erreurs FROM erreurs WHERE fichier=$fichier AND ligne=$ligne"); $resultat = mysql_fetch_array($nombre_erreurs); if($resultat['nb_erreurs'] == 0){ $date_mail = $date = date('d/m/y \à H:i:s', $date); $message = "Bonjour webmaster, \n\n Une erreur est survenue le $date_mail dans le fichier $fichier à la ligne $ligne\n\n A+"; $sujet = 'Erreur dans un fichier'; $adresse = '***@***'; mail($adresse, $sujet, $message); mysql_query('INSERT INTO erreurs VALUES (\'' . $fichier . '\', ' . $ligne . ', ' . time() . ')'); echo'<p id="erreur">Une erreur est survenue lors de l\'exécution de la page. Le webmaster en a été automatiquement prévenu.<br /> Veuillez nous excuser pour le désagrément.<br /> Le webmaster</p>'; exit; } else{ $query = mysql_query('SELECT timestamp FROM erreurs WHERE fichier=\'' . $fichier . '\' AND ligne=\'' . $ligne . '\''); $date = time() - 432000; if($query > $date){ $message = "Bonjour webmaster, \n\n Une erreur est survenue le $date_mail dans le fichier $fichier à la ligne $ligne\n\n A+"; $sujet = 'Erreur dans un fichier'; $adresse = '***@***'; mail($adresse, $sujet, $message); mysql_query('UPDATE erreurs SET timestamp=' . time() . ' WHERE fichier=\'' . $fichier . '\' AND ligne=\'' . $ligne . '\''); } echo'<p id="erreur">Une erreur est survenue lors de l\'exécution de la page. Le webmaster en a été automatiquement prévenu.<br /> Veuillez nous excuser pour le désagrément.<br /> Le webmaster</p>'; exit; } $old_date = $date = time() - 432800; mysql_query('DELETE FROM erreurs WHERE timestamp < ' . $old_date); mysql_close($connection); } Le problème est que quoi qu'il se passe, la fonction inscrit l'erreur dans la BDD et m'envoie un mail, ce que je ne veux pas. Il est donc clair qu'il y a un problème lorsque la fonction regarde si l'erreur est déjà dans la table. Mais cette erreur, je ne la vois pas. Quelqu'un voit-il le bogue? Merci
  22. Tu programmes tes sites dans Word??? Je ne comprend pas bien. Si tu tapes ton code toi-même, pourquoi utiliser Word. Si c'est autre chose que tu veux faire, explique mieux ce que tu veux faire.
  23. Bonjour Je me demandais à quoi servent les BDD d'Access étant donné qu'il y a MySQL? Comment une BDD peut-elle tenir dans une simple fichier? Peut-on utiliser MySQL+1 BDD d'Access? Merci
×
×
  • Créer...