IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

best practice pour un replace via SQL?


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut best practice pour un replace via SQL?
    Bonjour tous le monde,
    j'aimerais savoir le 'best practice' pour effectuer une recherche SQL pour faire un str_replace..

    J'ai une table avec des valeurs qui ressemble à :

    table

    [VALEUR] [DescFR] [DescEN]
    MDR Mort de rire laughing out loud
    MRD Merd.. Shi...

    Exemple..

    Et j'ai dans cette table plus de 500 mots...

    sur ma page j'ai du texte ( Salut comment ça va moi? MDR )
    et j,ai aussi ailleur des tableau

    MDR 500$
    MRD 150$

    Bon c'est des valeurs fictives biensûr

    au finalement, je voudrais faire un str_raplce('MDR','Mort de rire',$phrase);
    mais via la base de donnée..

    Je vois pas comment le faire sans faire 500 requêtes ... qui me semble ridicule.

    J'ai vu qu'il à le mysqli preparer, mais la requête va devoir s'exécuter à tout les mots demander, je crois pas que sa soit la meilleur option.

    L'autre option que j'ai pensé c'est créer une boucle
    $array1 = array();
    while($result = $select->fetch_assoc())
    {
    on ajoute l'info dans $array1;
    }
    pareil pour un 2ième array

    après je fais un str_replace($array1,$array2,$phrase);
    Mais je suis pas sûr que se soit la façon la plus rapide... car j'ai quand même une table de 500 mots...

    Est-ce qu'il à pas moyen... de prendre directement un array de la requête

    $sql = mysqli->query("SELECT VALEUR FROM Table");
    $result1 = $sql->fetch_array();

    $sql2 = mysqli->query("SELECT DescFR FROM Table");
    $result2 = $sql2->fetch_array();

    après je fais mon str_replace($result1,$result2,$phrase);


    voilà.. je vois pas comment bien me lancer dans se genre de requête..

    Merci!!

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu fais une requête de récupération complète une fois et tu fais tes str_replace ensuite via cette variable. Idéalement il faudrait mettre en place un cache de cette variable pour que chaque utilisateur n'est pas à récupérer 500 mots à chaque page.

    Clairement une base de données n'est pas adaptée pour traduire du contenu statique (des mots ou portions de phrases).
    En général ce qui ce fait :

    - Le contenu statique (menu, texte , etc ...) est traduit via des fichiers. Il existe plein de solutions (gettext, tmx, simple tableaux php).
    - Le contenu dynamique est traduit en base de données. Et dans ce cas là , on évite de créer une colonne par langue puisque ca devient très vie compliquer de gérer de nouvelle langue. Voir cet article à ce sujet.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Je suis daccord qu'une base de donnée n'est pas fait pour ça,
    je dois travailler avec cette base de donnée comme l'utilise l'agence.

    Alors pour le moment je captes tout et je le mets en variable de session qui est déclarrée en array()... sa me semble pas si mal..
    Du coup, je peux vérifier si la variable existe déja et donc pas la reprendre à toute les pages.


    Merci pour l'article je vais aller voir ça!!

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Fait un cache (par langue) de cette variable de session car sinon tous tes utilisateurs vont devoir faire la requête au moins une fois pour rappatrier les 500 traductions. Retourner 500 résultats c'est long , voir très long sur un hébergement ou le serveur sql n'est pas local.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flex] Recherche de Best Practice pour l'alignement
    Par eXiaNazaire dans le forum Flex
    Réponses: 5
    Dernier message: 11/02/2008, 16h14
  2. Best practice pour un insérer/remplacer
    Par Antoun dans le forum SQL
    Réponses: 2
    Dernier message: 09/01/2008, 13h10
  3. Réponses: 4
    Dernier message: 17/11/2006, 10h46
  4. Réponses: 11
    Dernier message: 16/06/2006, 13h46
  5. Réponses: 4
    Dernier message: 23/05/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo