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

Langage PHP Discussion :

[Tableaux] Faire tourner une série de mots au hasard


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut [Tableaux] Faire tourner une série de mots au hasard
    Bonjour,
    je me permets d'ouvrir un post car j'ai un peu de mal à régler un petit soucis sur mon developpement de site.

    Je ne suis pas codeuse en PHP mais j'essaie au maximum de ma débrouiller seule.

    MON PROBLEME:
    Je souhaite faire tourner au hasard une série de mots clés sur des alt d'images

    Voilà mon script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $nb_mc=5;
    $kw_tmcs[1]="mot1";
    $kw_tmcs[2]="mot2";
    $kw_tmcs[3]="mot3";
    $kw_tmcs[4]="mot4";
    $kw_tmcs[5]="mot5";
    $kw_m2=mt_rand(1,$nb_mc); 
    $kw_mc=$kw_tmcs[$kw_m2];
     
    $html .= $this->image_tag($db->f("product_thumb_image"), "alt=\"".$kw_mc." ".$db->f("product_name")."\"", 0);
    pourriez vous s'il vous plaît me dire si mon script est correct ?

    J'ai vu dans mes recherches qu'il serait possible de faire en sorte que pour un "product_name" partiiculier et défini, on pourrait faire en sorte d'assigner un mot clé particulier.
    Apparemment la fonction utilisée serait un IF mais je n'arrive pas à la mettre en pratique.

    Je vous remercie d'avance de votre aide,
    Nathalie

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    A priori ton script doit fonctionner dans le sens où il va bien prendre aléatoirement une valeur dans ton tableau.
    tu peux utiliser mt_rand qui est plus rapide que rand (cf http://no2.php.net/manual/fr/function.mt-rand.php).

    aussi, un petit mot pour te dire qu'en principe, on met le code entre des balises. Il te suffit de cliquer sur le bouton # qui se trouve dans le menu de l'éditeur quand tu rédiges ton post. ça facilite la lecture

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup, y compris pour la fonction mt_rand.

    J'ai également mis le code dans des balises dans le 1er message.

    N'aurais tu pas également une idée pour la deuxième partie de ma question, à savoir utiliser un IF. Là j'ai beau chercher j'arrive pas du tout à voir comment mettre en syntaxe.

    Je vois bien potentiellement qu'il faut faire un truc comme ça mais j'arrive pas du tout à le mettre en forme et à l'appeler proprement pour qu'ensuite ce soit pris en compte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($db->f("product_name")=="SPECIAL") { $kw_mc="MOT-SPECIAL"; $kw1_i=$kw1_i-1; }
    Ou quelque chose du genre, mais là je sèche complètement.
    Merci,
    Nathalie

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    ton code parait également correct.
    Est ce que tu as pu le tester? As-tu un message d'erreur?
    Es-tu sûr que $db->f("product_name") te renvoie une chaine de caractère?
    Pour tester, tu peux faire un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $db->f("product_name");

    tu peux simplifier ça en ceci

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonsoir Julien,

    je te remercie beaucoup, ca marche effectivement parfaitement.

    Ca s'affiche correctement si je paramètre un product_name pour y afficher un texte spécial, du type MOT-SPECIAL, le alt="" va alors afficher:

    MOT-SPECIAL + product_name : En 1 mot => PARFAIT.

    Voici mon code final, est il propre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $nb_mc=5;
     
    $kw_tmcs[1]="MOT1";
    $kw_tmcs[2]="MOT2";
    $kw_tmcs[3]="MOT3";
    $kw_tmcs[4]="MOT4";
    $kw_tmcs[5]="MOT5";
    $kw_m2=mt_rand(1,$nb_mc); 
    $kw_mc=$kw_tmcs[$kw_m2];
     
    if($db->f("product_name")=="PRODUIT-1") { $kw_mc="MOT-SPECIAL-1"; $kw1_i--; }
    if($db->f("product_name")=="PRODUIT-2") { $kw_mc="MOT-SPECIAL-2"; $kw1_i--; }
     
    $html .= $this->image_tag($db->f("product_thumb_image"), "alt=\"".$kw_mc." ".$db->f("product_name")."\"", 0);
    Merci encore de ton aide précieuse,
    Nathalie

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Merci encore de ton aide précieuse,
    de rien, ton code fonctionnait très bien sans mon aide

    Juste une petite remarque pour te dire qu'en principe les tableaux commencent à l'indice 0. Il serait plus correct d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $kw_tmcs[0]="MOT1";
    $kw_tmcs[1]="MOT2";
    $kw_tmcs[2]="MOT3";
    $kw_tmcs[3]="MOT4";
    $kw_tmcs[4]="MOT5";
    on pourrait également écrire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'alt="'.$kw_mc.' '.$db->f("product_name").'"'
    qui doit être un peu plus rapide et à mon sens plus clair (on évite les \).

    Mais c'est un peu du chipotage...

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    C'est absolument parfait, j'ai remis la syntaxe de ton alt qui effectivement est plus rapide.

    Te serait il possible en qq mots m'expliquer pourquoi on gagne en rapidité entre les 2 syntaxes de code ?
    notamment pourquoi l'utilisation des [\] ralentit le truc ?

    Merci
    Nathalie

  8. #8
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    en fait, ce n'est pas les \ qui ralentissent.
    l'interpréteur PHP ne traite pas de la même façon les " et les '.
    * une chaine entre ' est prise telle quelle. PHP ne s'occupe pas de son contenu.
    * une chaine entre " est parsée. C'est à dire que l'interpréteur examine le contenu et s'il trouve quelque chose qui commencent par $ alors il cherche la variable correspondante et affiche son contenu. Ce qui prend plus de temps.

    voici un lien qui rentre plus dans les détails http://www.vulgarisation-informatiqu...imiser-php.php

    si tu veux tu peux chercher sur google "php optimisation", tu trouveras pleins d'infos. Encore une fois, c'est des petits détails qui font une différence notable sur des gros scripts.

    J'ai un petit site où je mets en ligne des trucs dont je veux me rappeler.
    ici j'ai fait un résumé de quelques optimisations de code. Tu es libre de t'en servir si tu veux.
    http://kz.objectis.net/php/divers/op...n-du-code-php/.

Discussions similaires

  1. Faire tourner une sphere
    Par harris_macken dans le forum OpenGL
    Réponses: 9
    Dernier message: 26/06/2006, 08h46
  2. [VB6] Faire tourner une appli en tache non bloquante
    Par hirochirak dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/06/2006, 11h56
  3. faire tourner une commande dos sous application java
    Par Terminator dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 02/05/2006, 22h33
  4. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 14h06

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