changer le générateur aléatoire php en un generateur qui delete autmatiquement les mots deja générés

zokario
Invité n'ayant pas de compte PHPfrance

27 mai 2021, 21:59

bonjour/bonsoir, je voudrais changer le générateur aléatoire php (mots = ['salut', 'bonjour', ...) et au lieu que le mot généré puisse se regeneré lorsque on rafraichit je voudrais que le mot qui a ete généré qu'on ne puisse plus le generer merci de m'enmener vers la voie j'espere avoir ete clair merci d'avance

Mammouth du PHP | 2703 Messages

27 mai 2021, 22:04

mettre la valeur générée en session https://www.php.net/manual/fr/session.e ... .basic.php
et enlever les valeurs présentes en session avec https://stackoverflow.com/questions/369 ... ray-in-php

zokario
Invité n'ayant pas de compte PHPfrance

27 mai 2021, 22:16

la j'ai ça et je sais pas si c'est bon (on m'a aidé)
<?php
session_start()

if(!isset($_SESSION['word'])){
$array = ['word1', 'word2'];
$word = (**) array
$_SESSION['word'] = $word;
}

?>

<html>
<p><?php echo <?php $_SESSION['word'] ?></p>

**je mets quoi ici ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mai 2021, 14:29

Salutations !

Tout dépend de ton contexte et de ce que tu veux faire. PHP ne propose pas nativement de fonction de tirage aléatoire sans remise, il te faut la développer. Le principe est néanmoins simple : à chaque fois que tu détermine un élément au hasard, il faut le retirer du pool (et enregistrer le nouveau pool pour pouvoir utiliser celui-ci pour le prochain tirage).

Quant à l'utilisation de session, de cookie, de base de données... pour l'enregistrer, et bien tout va dépendre de ton contexte... est-ce le même utilisateur qui tire plusieurs fois ? est-ce plusieurs utilisateurs distincts qui tirent à tour de rôle ? est-ce que l'utilisateur fait tout ses tirages à la suite ou un tirage par jour ? ...

Sans info sur le contexte c'est difficile d'apporter une réponse plus précise. Le fait est que quelle que soit la solution, c'est à toi de retirer l'élément déjà généré.

Autre solution - là encore selon le contexte - tu ne changes jamais le pool, mais tu refais le tirage tant que le tirage retourne une valeur déjà sortie, mais c'est clairement la solution la moins optimisée.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...