Aller au contenu

MarvinLeRouge

Hubmaster
  • Compteur de contenus

    800
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par MarvinLeRouge

  1. Bonjour, Voilà, j'ai une requète du type : SELECT id_categorie, nom FROM categories WHERE id_categorie IN (valeurA, valeur B, valeurC) Je ne vois pas comment faire pour être sûr que les résultats me soient restitués dans l'ordre des valeurs fournies. Je m'explique : si valeurA vaut 23, valeurB 2 et valeur3 158, je veux que mon résultat récupéré soit 23 - nomdu23 2 - nomdu2 158 - nomdu158 Est-ce le cas par défaut avec un IN, ou sinon quelqu'un connaîtrait-il le truc pour obtenir ça ? Merci
  2. Hip hip hip hourra ! Bon, j'ai constaté que quand j'insérais des données dans ma table, même depuis phpmyadmin, ça foirait à l'affichage dans phpmyadmin. J'ai donc suivant tes conseils recréé une table, en choisissant à la création un interclassement utf8_unicode_ci. Et là, pour peu que je mette le SET CHARACTER SET UTF8 à la connexion, ça marche, en écriture et en lecture, aussi bien depuis mon script que dans phpmyadmin. Bon, je ne peux pas légalement t'épouser en France (je suis déjà marié), donc disons que je te dois un coup à boire la prochaine fois que je passe sur Lyon ou que tu passes sur Toulon. Parce que là, tu m'as enlevé un baobab du pied, honnêtement
  3. Salut, J'y comprends rien : quoi que je fasse sur le character set de la table ou son interclassement, rien n'y fait : si je touche au character_set au niveau de la connexion, j'ai du pâté partout; si je n'y touche pas, c'est incorrect dans la bdd, mais correct à la récupération des données. J'ai essayé diverses options : mysql_query ("SET CHARACTER SET UTF8"); mysql_set_charset ("utf8"); mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); mysql_query("SET NAMES 'utf8'"); J'ai remarqué un truc dans les variables du serveur MySql : J'ai beau essayer, je ne peux pas passer le character_set_server à utf8. Est-ce que ça ne viendrait pas de là ?
  4. Et bien comment dois-je faire pour "passer ma table en utf-8" ? Ma bdd étant en utf-8 au départ, je pensais que les tables l'étaient elles aussi, et je ne trouve sous phpMyAdmin aucune indication là-dessus. Pour info, j'ai trouvé une page sous phpMyAdmin affichant un certain nombre de variables de la bdd, voici celles qui me semblaient le plus pertinentes : character set client utf8 (Valeur globale) latin1 character set connection utf8 (Valeur globale) latin1 character set database latin1 character set filesystem binary character set results utf8 (Valeur globale) latin1 character set server latin1 character set system utf8 character sets dir /usr/share/mysql/charsets/ collation connection utf8_unicode_ci (Valeur globale) latin1_swedish_ci collation database latin1_swedish_ci collation server latin1_swedish_ci
  5. Ah ouais, j'adore les fonctions avec des descriptions super explicites Remplace des caractères dans une chaîne my foot !
  6. Bon ben c'est pas simple cette histoire : SET CHARACTER SET UTF8 semble marcher, mais uniquement pour les caractères d'europe de l'ouest. Si je mets du français ou de l'allemand, ça passe, et le contenuu en bdd est correct. Si je mets du russe, tout est faux (alors que la représentation bdd était mauvaise avant, mais corrigée à la récupération).
  7. Indice supplémentaire : j'ai inséré, avec phpmyadmin, la valeur 'adélaïde'. Si je veux la récupérer depuis ma page de lectyure d'info, il faut que je mette WHERE titre = '" . utf8_decode ("adélaïde") . "' dans la requète dans ma page. Comment dois-je faire pour indiquer à mon script de se connecter à la bdd en utf-8, en lecture comme en écriture ?
  8. Bon alors : Pour la connexion à la bdd en utf-8, j'ai cru comprendre qu'il fallait utiliser set names, mais quand je l'ai fait ça m'a tout pété, dans la bdd comme à l'affichage Bdd : Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) Bdd : Interclassement pour la connexion MySQL: utf8_unicode_ci Table de test : format Compact, Interclassement latin1_swedish_ci J'ignore si la table peut avoir un encodage différent de la bdd. Existe-t-il une marche à suivre, pas à pas, pour être bien sûr de la chaîne d'encodage ? N.B. : On parle ici d'un site en création, donc les données qui sont actuellement en bdd n'ont aucune importance, je peux les brûler 100 fois si je veux.
  9. MarvinLeRouge

    Pb encodage again

    Salut, J'ai un pb d'encodage : je dois faire un site en utf-8 (internationalisation, alphabets divers), et je n'y suis pas habitué. J'ai enregistré mes fichiers php en UTF8 sans BOM (quand je mettais UTF8 tout court, j'avais du contenu parasite dans le début d'affichage) J'ai une page de saisie et une page d'affichage Les 2 me sont bien indiquées comme "utf-8" par Firefox le contenu affiché correspond au contenu saisi MAIS le contenu en bdd contient des tas de caractères bizarres dans phpmyadmin , comme si le contenu n'était pas stocké" en utf-8 (alors que la bdd est bien en utf-8) Mon interprétation : il y a une rupture quelque part dans la chaîne d'encodage (au niveau de la liaison avec la bdd je suppose), mais ce problème est invisible côté client car il y a un passage utf-8 -> iso8859-1 dans un sens et le contraire dans l'autre sens. Or, je voudrais que le contenu de la bdd soit cohérent, afin d'avoir la possibilité de l'éditer directement via phpmyadmin au besoin. Please help
  10. Euh non je ne veux pas changer des caractères, mais bien des chaînes.
  11. Salut, Je pense même avoir trouvé nettement plus simple : un bon vieux str_replace, avec le tableau des clés en param 1 et le tableau des valeurs en param 2. A tester.
  12. Salut, J'ai à faire un traitement sur une chaîne de caractères : j'ai un tableau associatif contenant des variables, et je voudrais remplacer toutes les occurences de ces variables dans mon texte (qui sont sous une forme genre ***nomDeVariable***) par leur valeur dans ce tableau. J'ai pensé utiliser un preg_match_all pour trouver les occurences, puis faire une boucle sur les résultats avec un str_replace. J'aurais bien utilisé un preg_replace, mais je ne vois pas comment lui dire de remplacer chaque occurence par la variable correspondante. Si quelqu'un a une idée pour améliorer ça, je suis preneur. Merci
  13. J'étudie les réactions à tout ça sur mon hébergement perso, et je reviens vers toi. Merci
  14. Alors : J'ai essayé avec $_SERVER ["HTTP_IF_MODIFIED_SINCE"], ça ne donne rien (la valeur n'y est d'ailleurs pas quand je fais un print_r ($_SERVER)) Pour le ob_gzhandler, c'est pas faux. C'est du code récupéré à droite à gauche, j'aurais modifié ça plus tard. Pour la duplication de code, j'avais vu ça dans l'intervalle Pour le readfile, tu as raison à 100% (ah ces copier-coller de code entre 2 paragraphes ) Je ne peux malheureusement pas prendre que les 404 pour l'instant en raison de l'architecture, et puis ça enlèverait l'avantage de la compression (à moins qu'on puisse stocker les pages sous forme compressée, ce que j'ignore) Et pour le header 304, existe-t-il une méthode qui marcherait en fast-cgi ?
  15. Salut, Je cherche à mettre en place une gestion de cache intelligente fonctionnant sur le principe suivant : 1) Toute requète de page html est redirigée vers page.php 1.1) si la page demandée fait partie de l'ensemble des pages "articles" (les pages qui sont mises en cache) : 1.1.1) si elle existe en cache, je compare sa date de dernière modification à l'en-tête "if-modified-since" 1.1.1.1) si les dates correspondent, je veux renvoyer un code "304 not modified", sans renvoyer la page 1.1.1.2) sinon, je dois renvoyer la page en spécifiant son header "last-modified" (en la gzippant au assage histoire d'économiser la bande passante) 1.1.2) si elle n'existe pas en cache, je la génère, je la stocke en cache, et je la renvoie en spécifiant son header "last-modified" Pb : Je n'obtiens jamais une réponse 304 quand je consulte une page, et je n'arrive pas à récupérer le paramètre "if-modified-since". Je renvoie donc systématiquement la page, et je préfèrerais éviter. Si quelqu'un qui a déjà été confronté à cette problématique pouvait me donner des pistes, ce serait super (me manque-t-il des headers par exemple). Ci-après mon code de test if (file_exists ($cache_file)) { $if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE); $mtime = filemtime($cache_file); $gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT'; if ($if_modified_since == $gmdate_mod) { header ("HTTP/1.0 304 Not Modified"); exit; } header("Last-Modified: $gmdate_mod"); ob_start("ob_gzhandler"); readfile ($cache_file); ob_end_flush(); } else { file_put_contents ($cache_file, "Je suis l'article $id créé le " . date ("d/m/Y h:i:s") . "<hr />" . file_get_contents ("lipsum.txt")); ob_start("ob_gzhandler"); readfile ($cache_file); ob_end_flush(); }
  16. Salut, A priori, ce sont simplement les marges par défaut qui sont différentes. C'est pourquoi on met généralement un white-space reset au début des feuilles de style : * { margin : 0; padding : 0; } pour pouvoir les réajuster précisément par la suite.
  17. Salut Kioob, Merci pour le coup de l'\b, ça marche nickel. Je ne connaissais pas le truc des assertions "ne consommant pas de caractère".
  18. MarvinLeRouge

    Petit pb RegExp

    Salut, J'ai un petit pb avec une expression régulière : je souhaite supprimer les mots de moins de n caractères dans une chaine. Mon pb : si 2 mots "courts" se suivent, seul le premier est supprimé. Je suppose que c'est dû au fait que le caractère entre les deux mots a déjà été compté dans l'expression du premier mot. Je suppose que ça doit pouvoir se faire assez facilement (et sans passer la chaine en boucle infinie au regexp jusqu'à ce qu'elle ne change plus ). $pattern = "/ (\w){1,3} /"; $replace = ""; $str = preg_replace ($pattern, $replace, $str); Merci
  19. OK, je vais fouiller dans ce sens (et je reviens te poser des questions après ). Merci
  20. Salut, J'ai un petit pb avec un plugin Accordion de JQuery, qui apparemment a un effet sur le z-index de son contenu, ce qui est gênant puisque celui-ci est un menu déroulant. Quelqu'un saurait-il comment faire pour : exécuter une fonction à la fin du déroulement de l'accordéon ré-affirmer l'ensemble des css à ce moment là, si possible en restreignant la portée de cette action à un élément et ses descendants ? Merci
  21. Alors, je détaille : le site concerné est en php, et le contenu de chaque page est le résultat de requètes base de données pour la récupération du contenu le contenu de chaque page ne change pas trop couramment, c'est pourquoi je souhaite optimiser les traitements côté serveur (interprétation php, requètes sql ...) je voudrais aussi que la page ne soit pas refournie si elle n'a pas changé depuis la dernière visite et qu'elle soit compressée en sortie SI elle doit effectivement être envoyée au client Sauf erreur de ma part (c'est la première fois que je gère le cache) : pour les 2 premiers points, ça se gère en créant une version "préinterprétée" de la page côté serveur, afin de minimiser les appels réels à la page php. J'avais pensé simplement effacer le fichier de cache concerné lorsqu'un page est modifiée. Ainsi, il devrait la re-créer et la refournir. pour le point "modification depuis la denrière visite", j'ignore comment ça se gère pour le point compression, il faut a priori activer zlib.output_compression, mais est-ce que ça n'a pas un "ordre" d'exécution par rapport à la façon dont le cache serveur agit ? Merci pour ton aide
  22. MarvinLeRouge

    PHP et cache

    Salut, Voilà, je voudrais quelques conseils concernant la création d'un système de cache en PHP (je ne compte pas utiliser de systèmes pré-construit car je dois l'utiliser sur un hébergement mutualisé et que je doute des possibilités d'installation) : Comment faire pour que : - le serveur gère comme il faut la "if modified since" "last modified" sur une page qui est du php ? - le serveur compresse les outputs en gz, même lorsqu'il reprend la page en cache ? - il puisse y avoir des exceptions concernant les pages contenant des formulaires ? Merci
  23. Salut, Je ne suis pas du tout habitué aux CMS, mais je dois faire un mini-portail pour un groupe de copains gamers, et je n'ai pas le temps de me compliquer la tâche en faisant tout à la main. Donc je cherche un système de portail en php avec les fonctionnalités suivantes : inscription simplifiée : champs login, password, email et "coalition" (une catégorie de membre à choisir parmi n) identification login, password pour entrer sur le portail messagerie inter-membres chat système de news sur la page d'accueil aisément personnalisable en css Merci
  24. Salut, Je cherche, sous jQuery, à ce qu'une fonction se déclenche sur un évènement, pour tous les éléments correspondant à un sélecteur, SAUF l'élément ayant déclenché l'évènement. Je me doute qu'il faut utiliser not, mais je ne vois pas bien comment (j'ai essayé avec des syntaxes du genre :not($(this)), mais ça n'a pas l'air bon. En l'occurence, le but est, lorsqu'un élément de menu déroulant est sélectionné, de cacher tous les éléments "details" correspondant à des champs de formulaire (la classe form_elm_details), SAUF celui correspondant au select impliqué ET éventuellement celui correspondant à l'item sélectionné. Pour l'instant, je me contente de le cacher et de le remontrer, mais je ne voudrais pas d'un clignotement inutile si je peux m'en passer. $(".form_type_01 select").change(function() { var id = "#" + this.id + "_details"; var option_id = option_id = "#" + this.options[this.selectedIndex].value + "_details"; $(".form_elm_details_01").hide(); $(id).show(); $(option_id).show(); }); Merci
×
×
  • Créer...