[PHP]Sorte de fonction Random

Discussion dans 'Web, design' créé par MbK_, 13 Février 2005.

Statut de la discussion:
Fermée.
  1. Offline
    MbK_ Etudjant
    Slt a tous,

    j'aimerais que PHP choisisse tout seul une certaine phrase dans une sorte de base de donnée avec plusieurs phrases.

    Je m'explique : je voudrait avoir un code qui ressemble a ca

    Code:
    if($test['places_assises']=="on"){
            echo ("Choisir une phrase parmis 5 ou 6 phrases AU HASARD");
    } 
    

    j'ai ete voir sur la fonction random mais elle ne s'adresse qu'au chiffre. Si il n'y a aucun autre moyen, je m'arrangerai avec cette fonction.

    Merci a tous ;)

    (je reviens ce soir pour voir les reply donc si je rpd pas, dsl :p)
    MbK_, 13 Février 2005
    #1
  2. Offline
    null ose();
    Moi je peux te donner deux solutions mais basées sur le même principe :

    1ere

    Tu rajoutes un champ auto-incrementé dans ta table (comme ça chaque phrase à son ID).

    Ensuite tu utilises la function rand en mettant comme maximum le nombre de phrases dans la base (mysql_num_rows(mysql_query("SELECT * FROM table)))

    2eme

    Tu charhes tout la table dans un tableau PHP et après tu utilises la function rand pour générer des "clés" du tableau.
    null, 13 Février 2005
    #2
  3. Offline
    MbK_ Etudjant
    heuu pour finir je me dis que ne pas utiliser la BDD c'est plus simple. si je fais un tableau mais qui restera tjs le même en PHP dans un petit script et que j'utilise sa fonction rand c'est bon aussi?

    Cmt je pourrai faire?

    Code:
    <?
    $phrases = array ("phrase1", "phrase2", "phrase3", "phrase4", "phrase5");
    
    
    $chiffre=rand(0, 4);
    
    echo ("$phrases['".$chiffre."']");
    ?> 
    Ainsi?
    MbK_, 13 Février 2005
    #3
  4. Offline
    MbK_ Etudjant
    bon j'ai fais une petite fonction mais elle ne fonctionne pas.

    Code:
    function places_assises_dispo(){
    	$phrases = array 
                              (
    		"test1!",
    		"test2.",
    		"test3"
                              );
    	$chiffre=rand(0, 2); 
    	echo ($phrases['$chiffre']);
    	}
    et je l'appelle comme ceci

    Code:
    <? echo (places_assises_dispo()); ?>
    <? echo places_assises_dispo(); ?>
    <? places_assises_dispo(); ?>
    aucune ne fonctionne.

    une idée?
    MbK_, 13 Février 2005
    #4
  5. Offline
    null ose();
    Je t'ai refais le code à ma manière et décliner en plusieurs façons car je sais pas si tu devais avoir en fonction ou pas :

    1ere

    Un bête echo de à l'appel du script

    Code:
    <?php
    $phrases = array("test1!", "test2.", "test3");
    
    $phrase = $phrases[rand(0, count($phrases)-1)];
    
    echo $phrase;
    ?>
    
    2eme

    Via une fonction avec le tableau hors de la fonction (appel via GLOBAL) et affichage direct par echo

    Code:
    <?php
    $phrases = array("test1!", "test2.", "test3");
    
    function places_assises_dispo()
    {
       GLOBAL $phrases;
       
       $phrase = $phrases[rand(0, count($phrases)-1)];
    
       echo $phrase;
    }
    
    places_assises_dispo();
    ?>
    3eme

    Via une fonction avec le tableau hors de la fonction (appel via GLOBAL) et renvoit du résultat

    Code:
    <?php
    $phrases = array("test1!", "test2.", "test3");
    
    function places_assises_dispo()
    {
       GLOBAL $phrases;
       
       $phrase = $phrases[rand(0, count($phrases)-1)];
    
       return $phrase;
    }
    
    $phrase = places_assises_dispo();
    echo $phrase;
    // ou
    echo places_assises_dispo();
    ?>
    Tu auras remarquer que je pour donner le maximum de la fonction "rand()", je compte le nombre d'entrées dans le tableau et je soustrais 1 (ça comment bien à 0 comme tu l'avais mis). C'est plus facile, tu peux rajouter des phrases sans changer le chiffre.
    null, 13 Février 2005
    #5
  6. Offline
    MbK_ Etudjant
    tout ca fonctionne parfaitement!

    mais j'ai 2 petites questions (histoire d'apprendre qd mm un peu :) )

    :arrow: Pq le tableau se trouve à l'extérieur de la fonction?

    :arrow: à quoi sert le GLOBAL?


    un grand merci à toi pck ca marche NIKEL !
    MbK_, 13 Février 2005
    #6
  7. Offline
    null ose();
    Tu peux le mettre à l'intérieur mais c'est pour si jamais tu faisais une include ou quelque chose du genre.

    L'appel GLOBAL permet de prendre des variables hors de la fonction (donc du script) sans les passer en paramètres (via la parenthèse) :

    Pas

    Code:
    <?php
    $temps = "beau";
    
    function le_temps($temps)
    {
         echo "Il fait ".$temps;
    }
    
    mais ça

    Code:
    <?php
    $temps = "beau";
    
    function le_temps()
    {
         GLOBAL $temps;
    
         echo "Il fait ".$temps;
    }
    
    null, 13 Février 2005
    #7
  8. Offline
    Carambar He once forgot how to cry
    Code:
    $i=rand (0, 5);
    
    switch ($i) {
    case 0:
       echo "phrase 1";
       break;
    case 1:
       echo "phrase 2";
       break;
    case 2:
       echo "phrase 3";
       break;
    case 3:
       echo "phrase 4";
       break;
    case 4:
       echo "phrase 5";
       break;
    case 5:
       echo "phrase 6";
       break;
    }
    Pour transformer ca en fonction, utilise un return.
    Carambar, 13 Février 2005
    #8
  9. Offline
    MbK_ Etudjant
    donc si je met l'array a l'interrieur de la fonction, il ne faudra pas de GLOBAL si j'ai bien compris.

    Merci en tout cas ;)
    MbK_, 13 Février 2005
    #9
  10. Offline
    null ose();
    Exact
    null, 14 Février 2005
    #10
  11. Offline
    MbK_ Etudjant
    un grand merci pour ton aide ;)

    j'ai encore appris une chose :D
    MbK_, 14 Février 2005
    #11
  12. Offline
    j0k3r_n0ir ex membre
    Pour info, ton erreur est que tu fais :
    Code:
    echo ($phrases['$chiffre']);
    Alors que tu devrai faire :
    Code:
    echo ($phrases[$chiffre]);
    Sans les simples quotes autour de $chiffres sinon il ne te le prends pas comme une variable mais comme une chaine de caractère.
    j0k3r_n0ir, 15 Février 2005
    #12
Statut de la discussion:
Fermée.