Aller au contenu

TheRec

Hubmaster
  • Compteur de contenus

    1 777
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par TheRec

  1. TheRec

    Recherche avec preg_match

    J'en pense que du bien...si cela correspond à tes besoins Comme je n'ai pas vu l'entier du fichier texte, je ne peux pas juger de l'efficacité de ce masque dans tous les cas de figures possibles.
  2. TheRec

    Recherche avec preg_match

    Franchement, donne-nous le fichier texte en entier (entre balises CODEBOX) qu'on puisse identifier les contraintes nous-mêmes, cela sera plus facile.
  3. TheRec

    Recherche avec preg_match

    Cela donnerait quelque chose comme cela : $text = 'bla 15%B blablabla blabla bla blabla 84%Casd blabla 14%H blablablabla blablabla 14%C ...'; $text = preg_match_all('/([0-9]{1,3}[^\s]+)\s/i',$text,$matches); print_r($matches); $matches est un tableau que tu passe par référence à la fonction preg_match_all, il contient ensuite toutes les occurrences qui ont correspondu aux sous-masques (dans ce cas-là, il n'y en a qu'un, de sous-masque). J'ai supposé que ton pourcentage ne dépassait pas 3 chiffres et qu'il en faisait au moins 1. Et que la partie après le pourcentage était tout sauf un espace... à toi de voir comment faire varier cette expression pour coller à tes besoins, j'ai fait des suppositions, mais ça devrait te mettre sur la route au moins.
  4. TheRec

    Recherche avec preg_match

    Bonjour, peux-tu donner un exemple concret (voir l'entier, mais utilise le BBCode CODEBOX du texte de ton fichier) s'il te plaît ? La construction d'expressions régulières varie énormément en fonction des données qui entourent celles que tu souhaites extraire.
  5. Bonjour, On peut suivre un raisonnement logique différent, les auteurs de messages étant responsables du contenu de leurs contributions sur tous systèmes de communication (cela inclut les forums de discussions), on peut en déduire qu'il a également le droit de décider s'il veut qu'il soit accessible ou non. L'administrateur laisse en général une mention comme celle-ci dans sa charte : Source: http://www.foruminternet.org/telechargemen...ms-20030708.htm Si on estime que chaque message est une uvre de l'esprit, et donc que son auteur en est le propriétaire, les droits sur celle-ci sont clairs, toute reproduction sans autorisation peut être sanctionnée. Lorsque l'utilisateur à envoyé son message il a montré qu'il souhaitait publier son uvre sur le forum. Maintenant s'il te contact par courriel pour te demander d'effacer ces messages c'est qu'il a changé d'avis, et sauf erreur, il en a le droit. Maintenant, un courriel ne fait pas foi... une lettre recommandé avec Accusé de Réception (AR) en revanche oui. Donc que tu précises ceci ou non dans ta charte, à mon avis et je ne suis pas juriste, tu devrais obtempérer et supprimer ses messages, de plus les contributions de ce genre de membres apportent rarement beaucoup à un forum...
  6. Bonjour, c'est surement dans ce commentaire que vous avez vu ces remarques... mais ce n'est apparemment pas Matt Cutts qui a dit cela... Dans ce comentaire, l'auteur mentionne cet article en référence, mais j'ai beau le lire de long en large, il ne parle pas des liens absolus/relatifs, juste de l'URL canonique.
  7. Bonsoir, les expressions régulières servent à ce genre de tâches : <?php $text = 'Voila une note [n1] et une autre [n2].'; $text = preg_replace('/\[n([0-9]+)\]/i','<sup><a href="#nf\\1" id="n\\1">\\1</a></sup>',$text); echo $text; ?> Si c'est nouveau pour toi, le manuel PHP donne des explications sur la syntaxe des masques et des options de recherches. En l'occurrence, le masque utilisé dans ce cas est assez simple (on peu faire beaucoup plus compliqué). Le maque doit être délimité, dans notre cas j'ai choisis "/" comme délimiteur, après le délimiteur de fin il y a un "i" qui définit que le marque est insensible à la casse (majuscules/minuscules sans importance). Ensuite "\[" représente le caractère "[" mais étant donnée qu'il s'agit également du caractère utilisé pour créer une classe de caractère il faut l'échapper (avec un antislash), il en va de même pour "\]". Après le "n" correspond au "n" de ta balise, puis j'ouvre une parenthèse pour créer un sous-masque, à l'intérieur je crée une classe de caractères de 0 à 9 (d'où le "0-9") et je précise qu'il doit y avoir au moins 1 caractère ou plus de cette clase (comme ça [n1245] sera aussi reconnu...enfin c'est pour te montrer qu'il n'y a pas de "limite")... Dans le deuxième paramètre de preg_replace, je spécifie ce qui remplacera les morceaux qui auront correspondu au masque. La seule particularité est l'utilisation des références arrières, dans ce cas c'est "\\1", il indique que c'est le contenu premier sous-masque qui devra être ajouté ici (dans notre cas c'est le numéro de la note)... Le paramètre suivant est la chaîne à analyser.
  8. Bonjour, Je te conseille de relire le manuel à propos de la syntaxe de sprintf (qui est la même que printf). Dans ton cas, %s représente une chaîne de caractères et comme c'est la troisième directive (il y a deux %d (entier signé) avant), la troisième variable spécifiée en paramètre (soit stripslashes(htmlspecialchars($mots))) remplacera ce %s ... Le fait qu'il soit entouré de deux \" résulte du fait que pour afficher le caractère " dans une chaine de caractères délimitée par des " (double quote) il faut échapper ce caractère..avec \. Tu pouvais également écrire cette ligne d'une autre manière : echo $nb_cats_trouvees.'catégorie(s) et '.$nb_sites_trouves.' site(s) trouvé(s) pour "'.htmlspecialchars(stripslashes($mots)).'" en '.number_format($time_search,3).' s\n'; Cela revient au même ! C'est simplement une autre manière de présenter une chaîne de caractères. Note que j'ai inversé "htmlspecialchars" et "stripslashes" d'ordre, car il est plus logique de d'abord enlever les "\" qui ont été ajouté juste pour pouvoir enter ces données dans la base et les récupérer sans problème et ensuite convertir les caractères spéciaux en entités (pour la sécurité).
  9. Bonsoir, as-tu essayé ceci : if (!empty($vEmail) && !eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*\\.[a-z]{2,4}$",$vEmail)){ echo "<class='org'> !! L'adresse e-mail n'est pas correcte</class><br>"; $erreur=1; Ainsi, si ta variable $vEmail est vide (null ou chaîne de caractères vide), il n'ira même pas vérifier l'expression régulière... alors que s'il y a au moins 1 caractère, le premier test est passé et l'expression régulière intervient.
  10. Bonjour, Google Co-op permet d'inclure tes propres services lors de recherche. L'exemple cité est la conversion de monnaies, la calculatrice , ... que proposent déjà Google. Si tu crées ce qu'ils appellent "Subscribed Links" et qu'un utilisateur l'installe (liste de tes inscriptions stockée dans un cookie apparemment) et qu'il fait une recherche qui correspond au pattern que tu as défini dans la configuration de ton "Subscribed link" les résultats que ton site retourne en XML seront affiché avant les résultats de la requête. L'exemple donnée par Google est "speed limit on 101" (la limite de vitesse sur la route 101"... ton site a une liste de toutes les limites de vitesses par route, donc tu crées un "Subscribed link" qui récupère ce "101" et qui va renvoyer le résultat sous forme de fichier XML qui sera affiché avant les résultats... Comme l'inscription à un "Subscribed link" se fait volontairement et se défait aussi simplement c'est assez pratique...surtout pour les personne qui utilisent beaucoup Google... personnellement je n'ai pas encore entrevu l'apport de visiteurs que cela produit (au-delà du lancement du système) car logiquement si l'utilisateur c'est inscrit à ce "Subscribed link" il devrait se douter qu'il trouvera ses informations sur le site... Mais on peut imaginer qu'un site propose énormément de services et ainsi les visiteurs trouveront par cet intermédiaire des informations qu'il n'aurait pas recherché sur ce site autrement.
  11. TheRec

    Modification en php

    Boujour, Oui, tu peux utiliser Frontpage, comme tu peux utiliser le Notepad de Windows, comme tu pourrais utiliser tous autres éditeurs de fichiers textes...un fichier PHP est un simple fichier texte, qui sera ensuite analysé par un interpréteur (qui est "associé" au serveur Web qui héberge tes fichiers). Généralement, on utilise un environnement de tests (serveur Web, PHP, MySQL, ...) qui est hébergé en local sur ta machine. Il existe des solutions toutes prêtes comme WAMP (mon préféré), EasyPHP, ... Une fois installé et démarré, tu as un serveur Web en local sur ton ordinateur et il interprète les fichiers PHP. Lorsque tu as terminé tes tests, tu pourras publier tes fichier par FTP effectivement...normalement ton hébergeur t'as fourni des informations pour te connecter à ton espace d'hébergement. Ensuite il te faut utiliser un client FTP, tu en trouveras facilement sur Google Effectivement c'est possible, mais absolument pas par Javascript (qui est une technologie se trouvant du côté client, c'est à dire de ton visiteur, elle n'est pas exécutée sur ton serveur). Mais tu peux faire cela en indiquant à ton serveur que les fichiers avec les extensions .htm et/ou .html doivent être interprétées par l'interpréteur PHP. Ceci en créant un fichier nommé .htaccess (un peu daide pour créer ce fichier) dans le répertoire racine de ton site avec ce contenu : AddType application/x-httpd-php .htm AddType application/x-httpd-php .html Bonne chance !
  12. Franchement, il n'y a pas de quoi s'excuser, je ne suis pas en manque de reconnaissance Spidetra Mais merci de l'avoir préciser... ce n'est pas le but de mon précédent message !
  13. La technique que l'on te propose s'appelle "Faux Columns" ... Pompage a traduit en français un article en anglais à ce sujet.
  14. C'est intéressant de devoir arriver à 18 messages alors qu'une réponse semblable se trouvait déjà au troisième message Tout ça pour te dire que, oui c'est un forum, oui c'est fait pour discuter, mais plus sérieusement lorsqu'on te propose une solution fait l'effort de considérer celle-ci au delà de tes aprioris. Ce n'est pas parce que 2 autres personnes te confirment que c'est une solution correcte que tu dois opter pour cette solution, mais parce que c'est la manière la plus logique et efficace de gérer cela... Rien ne nous force à répondre aux messages sur ce forum, mais pense bien qu'on ne va pas non plus passer notre journée à essayer de convaincre chaque utilisateur qu'on ne dit pas que des sottises... Bref je ne souhaite pas te faire la morale, je désire simplement faire gagner du temps à chacun étant donné que les gens viennent ici pour s'entraider.
  15. Bonsoir, j'ai récemment découvert cette synthèse (via FredCavazza.net)et après l'avoir survolée je la trouve que c'est assez complet. En espérant que cela t'aide Et pour citer ce superbe document :
  16. Bien que je t'indique que c'est la pratique la plus courante et la plus performante, tu ne souhaites pas opter pour cette option... je ne vois pas ce que tu penses apporter avec un forum qui consommera plus de ressources à l'affichage qu'à l'utilisation...enfin, libre à toi de programmer ce que tu veux, sur ce point je n'ai rien à dire La séparation des sujets et réponses est importante du point de vu de la modélisation de la base de données. Si tu viens à mettre ces deux entités dans une seule table, tu vas passer ton de temps à chercher quels sont les sujets et quels sont les messages lorsque tu en auras besoin... alors qu'en séparant ces deux entités tu les distingues simplement... Je ne peux pas vraiment t'aider plus si tu t'oriente vers la solution que tu "préfères" ... je ne souhaite pas te donner des conseils qui te mèneront de manière certaines à de mauvaises pratiques de programmation et de modélisation. Si tu changes toutefois d'avis et que tu as encore d'autres questions sur la méthode que je te propose, je n'exclus pas la possibilité de répondre, si bien entendu j'en suis capable
  17. Bonjour, Tu peux utiliser la variable HTTPS qui est soit à on (protocole HTTPS utilisé lors de la requête analysée) soit à off (protocole HTTP utilisé lors de la requête analysée : RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^undossier[/]?$ https://%{SERVER_NAME}/undossier [R=301,L,QSA] Pour information, même si tu n'a pas le mod_ssl activé (ce n'est pas ton cas), tu peux utiliser cette option... Bien sûr tu peux remplacer le nom du dossier par une expression régulière pour faire fonctionner cette règle pour plus d'un répertoire
  18. J'ai de gros doutes... j'ai émis une hypothèse en te donnant cette requête, c'est comme "j'aurais voulu que MySQL fonctionne"...apparemment ce n'est pas le cas, et je t'avoue que je n'avais jamais testé le GROUP BY en provenance d'une table externe à la requête initiale...tout simplement parce que comme je te l'ai dit cela nécessiterait au moteur de MySQL d'examiner toute une table pour en trouver son maximum après en avoir déjà recherché tous les éléments pour réaliser le GROUP BY...en suite il fait ceci pour chaque sujet de ta table "forums_topics" ... Te représentes-tu le nombre de "requêtes" internes que cela implique ? Non ? Au moins 3^n ... ou n est le nombre de sujets dans ton cas... Si quelqu'un à une solution plus efficace que de stocker et mettre à jour un compteur dans la table des sujets, qu'il n'hésite pas à se manifester...en plus cette solution n'implique une mise à jour de ce compteur ou un champ avec la dernière modification, uniquement lorsqu'un message est ajouté, modifié ou supprimé...ce qui implique tout de même moins de requête que de calculer ceci à chaque fois qu'un sujet est affiché ! Et pour te convaincre...en une seule requête tu pourras compter l'entier de tes messages et sujet...alors qu'en stockant ces informations dans deux tables tu devrais faire 2 requêtes et effectuer la somme des deux résultats ensuite
  19. Autant pour moi... cette requête ne fonctionne pas, car dès le premier élément qui n'a pas pû faire le groupement (GROUP BY) MySQL semble arrêter la collecte des résultats...je n'ai pourant pas lu de tel comportement dans le manuel...mais apparemment ce n'est pas le bonne méthode... Si personne d'autre n'a de solution, à mon avis tu vas pouvoir utiliser la solution la plus raisonnable... ajouter ces champs qui sont tout à fait justifiés.
  20. Bonsoir, exactement...tu as un exemple de ce procédé avec cette fonction (qui n'est pas de mon cru) : function cutline($filename,$line_no=-1) { $strip_return=false; $data=file($filename); $pipe=fopen($filename,'w'); $size=count($data); $skip = ($line_no==-1 ? $skip=$size-1 : $skip=$line_no-1); for($line=0;$line<$size;$line++) { if($line!=$skip) { fputs($pipe,$data[$line]); } else { $strip_return=true; } return $strip_return; } Source: http://codewalkers.com/getcode.php?id=199
  21. Dans ce cas-là, si tu ne te soucies pas des ressources impliquées, cela fera une requête par affichage pour une information qui est "statique" (dans le sens ou elle ne peut changer que par l'intermédiaire de ton forum...elle ne dépend pas d'un autre système) voici ce que tu peux faire : SELECT sujets.*, MAX(reponses.date_message) AS date_dernier_message FROM sujets LEFT OUTER JOIN reponses ON sujets.idsujet = reponses.idsujet GROUP BY reponses.idsujet ORDER BY date_dernier_message DESC Mais sur une table avec des plusieurs milliers (voire centaines de milliers) de message la requête sera lente...peut importe l'optimisation et les INDEX...la table doit être analysée dans son entier pour retrouver la date avec la fonction "MAX"...franchement, un champ règle ce problème...et c'est un usage courant et logique...la normalisation est respectée.
  22. Bonsoir, Dans ta table sujet, tiens un compte des réponses...cela épargnera des ressources lorsque tu feras l'affichage de la liste de sujet (il faut penser que ce nombre devra être affichés à plusieurs endroits et souvent). C'est un conseil à part. Concernant ton problème de tri, il est souvent résolu en ajoutant un champs à la table sujet "last_post_at" (dernier_message_a) qui correspond au dernier message...tenu à jour lorsque quelqu'un ajoute un message à un sujet...ainsi cela évite des requête superflues. Cela te permet aussi de distinguer les sujest ayant des réponses ou non...donc il faut autoriser le "NULL" et s'assurer que lorsque le dernier message d'un sujet est supprimé, le "NULL" est bien restauré. Ensuite tu pourras trier tes sujets par date et par date de dernier message sans avoir à parcourir toute la table des réponses... Cela peut paraître comme des entorses à la normalisation de ton schéma de base de données, mais cela a un impacte non-négligeable lors de la consultation massive (typiquement, un forum correspond à ce cas). Tu peux regarder le schéma de plusieurs systèmes de forum, phpBB, PunBB, ... cest une bonne source "dinspiration"
  23. En simplifiant énormément, un concentrateur (Hub) envoie les trames sur tous ses ports actifs alors qu'un commutateur (Switch) analyse la trame et la dirige vers l'ordianteur en question, si l'adresse dans la trame n'est pas précisée, elle sera envoyée à tous les noeuds ou une selection de noeud...on peut aller bien plus dans le détail (méthoes de transmission). Si tu es famillier avec le Modèle OSI : le concentrateur travaille au niveau 1 et le commutateur au niveau 2... Étant données qu'il est aussi cher de fabriquer un Hub qu'un Switch à l'heure actuelle il n'y a plus aucun intérêt à fabriquer des Hub (à part USB, vu que dans ce cas la le fonctionnement est différent, les protocoles aussi)...mais il fût un temps ou la différence de prix était importante. Donc achète toi un Switch Ethernet 10/100Mbps, si tu projette d'utiliser ce Switch dans un réseau Gigabit achètes-en un 10/100/1000Mbps...même si tu ne l'utilise pas il ne sera pas obsolete (normalement...enfin qui sait) dans les prochaines années...la différence de prix n'est pas si grande actuellement...
  24. Bonjour, la fonction number_format sert à cela. echo number_format(3513163846879, 0 , null, ",");
  25. Bonjour, Une réécriture ne serait pas de très bon goût (dans l'esprit, conserver une URL qui ne t'appartient pas) et en plus ce n'est pas possible car toute réécriture dont la deuxième partie est une URL absolue entraine une redirection (par défaut 301 sauf erreur) par le mod_rewrite. Donc autant faire une redirection toi même avec les outils appropriés : RedirectPermanent /plan-acces.html http://maps.google.fr/maps?f=q&hl=fr&q=paris+boulevard+saint+michel&ll=48.847194,2.340796&spn=0.004229,0.013529&om=1 Sous réserve que Google ne change pas son schéma d'URL
×
×
  • Créer...