Aller au contenu

TheRec

Hubmaster
  • Compteur de contenus

    1 777
  • Inscrit(e) le

  • Dernière visite

Messages postés par TheRec

  1. Non ce n'est pas possible aussi facilement, pour deux raisons, la première est que le deuxième paramètre de RedirectMatch (oui car la syntaxe que tu as utilisée correspond à un RedirectMatch, pas Redirect permanent ou RedirectPermanent) n'est pas une expression régulière, la seule spécialité est qu'il peut accepter les références arrières, comme tu l'as fait avec $1.

    La deuxième est que pour faire ce que tu souhaites, il faudrait que le nom de l'utilisateur soit disponible dans l'URL de base, apparemment ce n'est pas le cas. Ainsi, la solution la plus simple est d'utiliser l'ancienne page pour effectuer une redirection (301, permanente) grâce à la fonction PHP nommée header. Depuis PHP tu pourras récupérer le nom de l'utilisateur (grâce à son id, dans ta base de données je suppose) et effectuer une redirection vers la bonne page (avec le nom d'utilisateur dans l'URL).

    Sinon, dans le cadre d'une expression régulière (ou plus justement, rationnelle), le meta-caractère signifiant "n'importe quel caractère" est le "." (point), ensuite tu lui fais succéder un quantificateur comme "+" (1 ou plus), "*" (0 ou plus) ou "?" (0 ou 1). Si tu veux une explication exhaustive de PCRE (moteur d'expression rationnelles), PHP dispose d'une page à ce sujet.

    Bonne continuation.

    CONCAT_WS

    Super ! Content d'avoir pu t'aider.

    Tes solutions sont partiellement correcte, dans la mesure ou tu peux garantir qu'il n'y aura pas la chaîne ", , " dans les champs qui seront concaténés, sinon elle sera remplacée alors que ce n'était pas un champs de chaîne vide qui aura causé l'apparition de cette chaîne ;)

    Pour information, ISNULL n'est pas équivalent à IFNULL. La première est une fonction qui retourne 0 ou 1 en évaluant si la valeur testée est NULL ou non. Et IFNULL vérifie si la valeur du premier paramètre est NULL, si c'est le cas la valeur du deuxième paramètre est retournée, sinon c'est la valeur du premier paramètre qui est retournée.

    Encore une précision IS NULL n'est pas non plus équivalent à ISNULL, le premier est un opérateur et le second est une fonction ;)

    Bonne continuation !

    CONCAT_WS

    Ouais, en fait ni l'un ni l'autre... NULLIF est le plus approprié après avoir cherché un peu plus dans le manuel ... mais de toute façon toutes ces fonctions font la même chose ;)

    Mais ça c'est plus court et propre :

    SELECT CONCAT_WS(', ', NULLIF('Mot',''), NULLIF(NULL,''), NULLIF('phrase',''), NULLIF('',''), NULLIF('point.',''));

  2. Ou les caractères spéciaux? ( rubrique=ma+rubrique )?

    Tu as mis le doigt dessus, c'est bien le "+" qui pose problème. Ce caractère a une valeur spécifique dans une expression régulière (c'est une quantificateur), si tu veux l'utiliser pour sa valeur textuelle, il faut l'échapper en la précédant d'un backslash ;)

    RewriteCond %{QUERY_STRING} ^typerecherche=parrubrique&rubrique=ma\+rubrique&begin=([0-9]+)$
    RewriteRule ^mapage.php$ http://www.monsite.fr/catalogue/motclef-%1\.html? [R=301,L]

    Sinon pour ta RewriteRule, le R=301 n'est pas absolument nécessaire, dès que le second paramètre est une URL complète mod_rewrite effectue une redirection permanente... mais en même temps au moins là c'est plus visuel ;)

    CONCAT_WS

    Tu peux certainement utiliser un IF, pas de problème de ce côté ... mais si ISNULL reste inutile, on souhaite détecter une chaîne vide, et ISNULL considère qu'une chaîne vide n'est pas NULL ;) Il faudrait utiliser IF et retourner NULL lorsque la comparaison est positive... et ceci pour chaque paramètre de la fonction CONCAT_WS à concaténer.

    J'ai tendance à réaliser cela dans le code de l'application, pas sur le serveur de base de donnée, à moins qu'il y ait vraiment besoin de faire une tri ou une autre tâche sur le champ après concaténation. Je mets un exemple à titre indicatif, mais c'est peu représentatif vu que les valeurs sont fixes, ce serait plus représentatif avec des noms de champs ;) :

    SELECT CONCAT_WS(', ', IF('Mot' <> '','Mot',NULL), IF(NULL <> '','Mot',NULL), IF('phrase' <> '','phrase',NULL), IF('' <> '','',NULL), IF('point.' <> '','point.',NULL));

    À la sortie on se retrouve bien avec :

    Mot, phrase, point.

    CONCAT_WS

    En quoi est-ce que cela résout le problème (pour peu qu'il y en ait un, apparemment c'est le comportement normal de la fonction CONCAT_WS) ?

    ISNULL (dans une requête) va retourner 0 ou 1... je ne vois pas où cela serait utile :huh:

    CONCAT_WS

    Je n'ai pas dit non plus que ça changeait le "fond de ton propos" ; t'énerve pas ;)

    Ne t'inquiète pas, je ne risque pas de m'énerver pour si peu ;) Je cherchais à comprendre le but de ton intervention.

    Tout dépend du mode de fonctionnement de l'équipe de développement, est-ce que les développeurs documentent leur travail correctement, est-ce que la documentation est rédigée en amont, en aval ou pendant le développement, etc... En plus c'est un développement Open-Source, donc s'il y a vraiment un problème on peut toujours aller au cur de celui-ci pour comprendre ce qui ne va pas.

    Je n'ai pas connaissance du changement des types DATE et DATETIME dont tu parles, aurais-tu plus de détails à ce sujet s'il te plaît ?

    CONCAT_WS

    Ou simplement que la documentation originale utilisée pour la traduction a été modifiée entre-temps parce qu'elle était erronée (et que la fonction est prévue pour fonctionner ainsi)... en même temps je ne vois pas en quoi cela change quelque chose le fond de mon propos.

    CONCAT_WS

    Le comportement que tu décris est le même chez moi. Les chaînes vides ne sont pas ignorées, mais les valeurs NULL le sont. Le problème n'en est pas réellement un, c'est une erreur de traduction du manuel en français apparemment :

    CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.
    Source: MySQL 5.0 Reference Manual :: 11.4 String Functions

    Préfère toujours la version originale des manuels si tu le peux car l'adage italien "Traduttore, traditore" (dont le sens est que toute traduction est une trahison) se vérifie bien souvent ;)

  3. Peut-être que tu trouveras ton bonheur avec cette méthode : A revised and simplified CSS left flyout menu that works in IE

    Tout cela en sachant que cela requiert du Javascript (pour corriger un comportement gênant de Internet Explorer, sans cela le menu semble fonctionnel, mais l'animation flash devient cliquable et une info-bulle apparaîtra :S) et à en lire la description l'utilisation faire de <object>/<embed> n'est pas conforme au recommandations du W3C, à voir si cela est adaptable pour être conforme à ces recommandations ;)

    À toi de voir si tu peux utiliser cette technique comme base, bonne chance et bonne continuation.

  4. En fait connaître les valeurs par défaut non, mais tu peux connaître les valeurs CSS héritées par n'importe quel élément grâce à l'outil d'inspection.

    C'est assez antinomique de vouloir baser ton intégration sur ces valeurs, car elles changent dans tous les navigateurs, la solution est de définir ce que tu veux définir et n'utiliser l'héritage que lorsque tu es certain des effets qu'il a parmi tous les navigateurs.

    Il faut aussi être conscient que certains navigateurs n'appliquent pas l'héritage de la même façon, pour ne citer qu'un exemple, la propriété font-size n'est pas hérité du parent mais de l'élément <body> dans un tableau dans Internet Explorer 6, alors que la majorité des navigateurs gère cela correctement... pour palier à cela il suffit de définir effectivement la taille à appliquer (par exemple font-size: 1em; pour conserver la taille de l'élément parent).

    Un peu de lecture en relation avec ce sujet : Le rendu par défaut des éléments HTML

    Bonne continuation.

  5. Il faut utiliser une clause LIMIT dans ta requête SQL avec les deux paramètres rowcount et offset, voici un exemple :

    SELECT * FROM ta_table ORDER BY ta_date DESC LIMIT 0, 9

    Le premier paramètre de LIMIT, offset, définit défini le premier élément de la requête non limité et le deuxième, rowcount, le nombre d'élément maximum qui seront retournés. Donc pour tes "pages" rowcount sera égal à la limité fixée par l'utilisateur ("afficher 10 - 20 - 50"), et offset variera suivant la page en cours (variable GET dans ton URL). Tu auras également besoin du nombre d'éléments totaux pour connaître ne nombre de pages, tu pourras utiliser la fonction MySQL "FOUND_ROWS" qui permet d'obtenir ce nombre sans refaire la requête, seul pré-requis, ajouter "SQL_CALC_FOUND_ROWS" à ta requête SELECT (je reprends l'exemple ci-dessus) :

    SELECT SQL_CALC_FOUND_ROWS * FROM ta_table ORDER BY ta_date DESC LIMIT 0, 9

    Et juste après cette requête tu exécutes :

    $totalrowcount = mysql_result(mysql_query('SELECT FOUND_ROWS()'),0,0);

    Je te laisse faire le reste toi-même ;)

    Bonne continuation.

  6. Le sujet est clos, après discussion de l'équipe de modération il n'y a aucune question ou sollicitation pour une aide quelconque. Si la discussion s'oriente vers un mur de lamentations elle n'est pas utile à la communauté.

    Merci de votre compréhension.

    P.S. : S'il y a lieu d'ouvrir à nouveau ce sujet (pour les raisons évoquées précédemment par exemple), merci de me contacter par MP.

    EDIT: Le sujet est rouvert sur demande de TrocWeb qui souhaite savoir quelles démarches il doit entreprendre pour se défendre contre le plagiaire supposé.

  7. La redirection dans le fichier PHP suffira, plus besoin du RedirectPermanent, comme cela toute demande vers l'ancienne URL sera redirigée (par la fonction header) vers la nouvelle URL et à ce moment la réécriture se fera (au niveau de ton .htaccess). À priori la cible de ta réécriture ne sera plus categories.php, vu que ce script sera utilisé pour effectuer la redirection (header) mentionnée précédemment.

  8. La première solution ne changera pas les URL de ton référencement, les moteurs suivront la redirection 301 (R=301) et indexeront à nouveau l'ancienne URL.

    La deuxième solution est la bonne, si tu as une seule catégorie c'est la plus facile.

    Si tu as beaucoup de catégories, la RewirteRule changera (ajout d'un sous-masques permettant de traiter plus d'une catégorie avec la même règle) et si tu souhaites ne plus avoir du tout d'ID (id_categorie) dans l'URL il faudra passer par un minimum de code PHP pour effectuer l'équivalence "nom de catégorie" -> "id_catégorie" (ou alors tu entre une RewriteRule pour chaque catégorie, mais cela devient rapidement ingérable).

    Idem pour la deuxième règle, la redirection des anciennes pages vers le nouveau schéma d'URL (réécrites), il est assez simple de remplacer le contenu du script categories.php en conservant ce fichier les anciennes URL fonctionneront encore et y faire une redirection HTTP 301 avec la fonction header vers l'URL de la nouvelle catégorie (en fonction id_categorie bien entendu).

  9. <marquee> n'est également pas accessible car elle ne correspond à pas aux recommandations du WCAG (document du W3C en anglais). Le texte ne pouvant pas être arrêté il peut s'avérer illisible voir dangereux (crise d'épilepsie causée par le "clignotement"... oui je sais c'est un cas extrême, mais c'est celui cité dans les recommandations) pour certaines personnes.

    En utilisant du Javascript tu peux facilement permettre l'arrêt du texte, voir même simplement le transformer en texte statique. Un exemple, le script DOMNews ;)

    Bonne continuation !

  10. Salut,

    Je rejoins l'avis de captain_torche, et je te précise juste que $_SERVER['HTTP_REFERER'] n'est renseigné que si le navigateur utilisé le prévoit et que cette fonctionnalité est activée (certains la désactive pour protéger leur vie privée). Donc il est difficile de se fier à la valeur de cette variable.

  11. Très bonne interview, plaisante à lire en tous cas :) Merci aux participants, à l'arrière et avant scène ;)

    J'ai été étonné que dans les évolutions dans domaine du E-Commerce de ces derniers mois, bshop ne cite pas Magento, il est clair qu'il ne s'agit pas de versions finales (malgré la qualité des versions bêta), mais cette solution se profile comme la solution alternative open-source gratuite aux osCommerce (et divers variantes).

  12. Bonjour,

    Suivant l'implémentation que tu veux en faire, tu pourrais utiliser url2jpeg. Seul le problème étant que ce programme fonctionne sous Windows seulement, donc si ton but est de l'exécuter depuis un script PHP par exemple il faut que ton serveur fonctionne sous Windows (ce qui n'est pas non plus la panacée). Malheureusement je ne connais pas d'équivalent sous Linux, si quelqu'un en connais un, ça m'intéresse également ;)

×
×
  • Créer...