Page 1 sur 1

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

Posté : 27 mai 2021, 21:59
par zokario
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

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

Posté : 27 mai 2021, 22:04
par or 1
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

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

Posté : 27 mai 2021, 22:16
par zokario
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 ?

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

Posté : 31 mai 2021, 14:29
par Ryle
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.