Page 1 sur 2

tableau selection aléatoire

Posté : 19 avr. 2013, 22:04
par jack91
bonjour ,
voila j'ai fait un ptit tableau en html , jusque là rien de bien compliqué , seulement voila ou est mon problème , j'ai mis 4 ptits ronds a cocher ("de type radio") ; maintenant après maintes recherches et fonctions testées , aucune solution n'est venue .
Ce que je veut faire concrétement , c'est faire en sorte que mes choix ne soit jamais dans le même ordre, ci-dessous je voudrait que $new se melange avec ma liste tout en etant sur que la variable sorte , un bout de mon programme pour (essayer de) faire simple :
<TH> 
 <body>
<INPUT TYPE="Radio" NAME="brain" VALUE=1> 
<?php
// Je met le nom de mon fichier dans une variable
$file_name = "$image_afficher";
// J'explose dans un tableau à chaque fois que je rencontre un point
$file_array = explode ('.',$file_name);
// Je récupère l'indice dans le tableau de l'extension "jpg", soit le dernier élément
$extension = count ($file_array) - 1;
// Je découpe en enlevant l'extension cad (la taille de "jpg" + la taille du point d'où le -1)
$New = substr ($file_name,0,strlen($file_name) -strlen ($file_array[$extension])-1);
// J'affiche
echo $New;
?>
</form>
 </TH> 
<TH> 
 <body>
<INPUT TYPE="Radio" NAME="brain" VALUE=2> 
<?php
$input = array("A";"B";"C";"D";"E";"F";"G";);
$rand_keys = array_rand($input, 3);
echo $input[$rand_keys[0]] . "\n";
 ?>

</form> 
</TH> 

<TH> 
 <body>
<INPUT TYPE="Radio" NAME="brain" VALUE=2> 
<?php echo $input[$rand_keys[1]] . "\n";
 ?>

</form> 
</TH>

 <TH> 
 <body>
<INPUT TYPE="Radio" NAME="brain" VALUE=3> 
<?php echo $input[$rand_keys[2]] . "\n";
 ?>

</form> 
 </TH>


donc en gros j'ai une variable appeler $new que je veut melanger avec ma liste (ici A,B,... pour tester) et j'aimerai que l'on m'aide a trouver la fonction correspondante ou m'expliquer comment le faire et pas seulement me donner le lien php.net car je croit (restons modeste :) ) avoir fait le tour de beaucoup de fonctions , seulement je suis un debutant en php , motivé pour ne plus l'être !

Re: tableau selection aléatoire

Posté : 19 avr. 2013, 23:14
par moogli
salut,


le problème n'est pas php mais html, tu ferme le formulaire plusieurs fois, un gorupe de radio doit être dans le même formulaire.

ensuite il te faut garder la valeur choisie pour ne pas être perdu à la validation.
tout les attribut HTML doivent avoir leurs valeurs entourée de " (sinon tu va être emmerdé).

Par convention on utilise les minuscule pour le code html (plus lisible ;)) .

pour traiter correctement ton code tu peux simplement utiliser un foreach sur le tableau de clef résultat
<form action="" method="post">
<?php
$input = array("A";"B";"C";"D";"E";"F";"G";);
$rand_keys = array_rand($input, 3);
foreach($rand_keys as $key) {
echo '<label for="radio'.$key.'">'.$input[$key] .'</label><input type="radio" name="brain" value="'.$key.'" /><br />';
}
?>
</form>
c'est pas plus complexe.

tu passe la clef en valeur du bouton radio pour garder la référence sur l'info, puisse que c'est par la clef que tu retrouve la référence. si par exemple il s'agit d'info provenant de base de donnée tu utilise la clef primaire.


@+

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 00:10
par jack91
D'accord c'est noté , merci de ta réponse ; cependant je n'arrive toujours pas a mettre ma variable $new dans le groupe de boutons radios , comment fait-on ? je pensait avoir compris , apparemment non ...

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 12:25
par moogli
je ne comprend pas ce que tu veux en faire de cette variable.

elle est unique est affichée en haut (avant les options).

le but c'est qu'elle soit présente sur la page de validation du formulaire ?
ci-dessous je voudrait que $new se melange avec ma liste tout en etant sur que la variable sorte
il s'agit d'une option qui doit s'afficher avec les autres ?

si oui ajoute la au tableau avant le rand
<?php
$input = array('A','B','C','D','E''F','G',$news);
ensuite le séparateur entre les éléments d'un tableau c'est la virgule pas le point virgule ;)

@+

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 14:45
par jack91
oui c'est ça j'ai essayer en mettant la variable dans ma liste , seulement (je n'ai sans doute pas été assez clair) je veut que ma variable sorte obligatoirement (de manière certaine) mais dans un ordre different a chaque reactualisation ...
du type :
A G B $new
puis B $new C A avec $new le nom correspondant
En gros existe t-il une fonction permettant de sortir obligatoirement la variable ?

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 15:02
par moogli
le code que j'ai fournit peux le faire, après a toi de jouer avec le second paramètre de array_rand.

après si le but c'est 3 infos plus $new tu peux reconstruire un tableau (a partir des clefs fournis par le array_rand) et utiliser shuffle dessus.


par exemple
<form action="" method="post">
    <?php
    $input = array('A','B','C','D','E','F','G');
    $rand_keys = array_rand($input, 3);
    foreach($rand_keys as $key) {
        $finalTab[$key] = $input[$key];
    }
    $finalTab['new'] = $new;
    shuffle($finalTab);
    foreach($finalTab as $key => $value){
        echo '<label for="radio'.$key.'">'.$value .'</label><input type="radio" name="brain" value="'.$key.'" /><br />';
    }
    ?>
</form>

@+

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 18:08
par jack91
merci beaucoup , je vais essayer de comprendre ça et si il y a un truc que je comprend pas je te le redemanderais :)
sinon pour la fonction shuffle , justement je ne la comprend pas , pourtant c'est pas faute de l'avoir testé
j'ai rajouter une fonction array_unique aussi et tout marche parfaitement :D

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 19:50
par moogli
Shuffle mélange un tableau c'est tout.

Par contre elle ne conserve pas les clefs donc attention a ce qu'elle ne soit pas utile.

@+

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 21:20
par jack91
Par contre elle ne conserve pas les clefs donc attention a ce qu'elle ne soit pas utile.
Qu'entend tu par la , je ne peut pas la faire réagir avec une autre page php si je met un submit ?

Re: tableau selection aléatoire

Posté : 20 avr. 2013, 23:31
par moogli
aucun rapport c'est juste que shuffle ré ordonne les élements du tableau, or cela implique la perte des clefs du tableau.

du coup mon code n'est pas top, il devrait plutôt être dans ce style
<form action="" method="post">
    <?php
    $input = array('A','B','C','D','E','F','G');
    $rand_keys = array_rand($input, 3);
    $rand_keys[] = 'new';
    shuffle($rand_keys);
    $input['new'] = $new
    foreach($rand_keys as $key){
        echo '<label for="radio'.$key.'">'.$input[$key] .'</label><input type="radio" name="brain" value="'.$key.'" /><br />';
    }
    ?>
</form>
bon après il y a surement plus simple suivant la provenances des données.

@+

Re: tableau selection aléatoire

Posté : 21 avr. 2013, 20:06
par jack91
merci pour l'aide , cependant le code , que tu as fait , sort une erreur au niveau du shuffle ...

Re: tableau selection aléatoire

Posté : 21 avr. 2013, 23:00
par moogli
au niveau du rand je pense pas, la ligne suivant pourquoi pas il manque un ;

donc du coup si tu colle ça avec ton code (donc avec $new existant avant) le code est fonctionnel.

Effectivement j'ai fait un erreur d’étourderie, mais bon un petit effort comme ajouter un ; c’est pas grand chose.

je t'invite a revoir les tutos de bases sur la syntaxe php !


@+

Re: tableau selection aléatoire

Posté : 23 avr. 2013, 09:42
par jack91
En effet je n'avais pas vu le ; manquant , je te remercie du conseil , je me debrouille pas trop mal dans la syntaxe , je n'y ai seulement pas fait attention et c'est une grande erreur , merci pour l'aide !
a bientot :)

Re: tableau selection aléatoire

Posté : 21 mai 2013, 21:55
par jack91
Bonjour , me revoilà hélas ,
je pensais avoir ,depuis un certain temps, réglé le problème , puis le voila qui surgit de nul part
donc revoila le bout de code :
<?php
     $input = array('A','B','C','D','E','F','G');
     $input['new'] = $new ;
	 $rand_keys = array_rand($input, 3);
     $rand_keys[] = 'new';
	 $result = array_unique($rand_keys);
     shuffle($result);
	foreach($result as $key){
		 echo '<label for="radio'.$key.'">'.$input[$key] .'</label><input type="radio" name="brain" value="'.$key.'" /><br />';
     }
     ?>
le problème est le suivant : $new est soit A soit B , etc... et je ne connait pas d'avance qui sera $new , donc voila sur 5-6 actualisation environ , je me retrouve avec deux A ou deux B etc... et moi je ne veut qu'une seule lettre possible (les lettres sont utilisés ici pour simplifier le code) ; la fonction array_unique ne fonctionne pas comme je le voudrait , j'aimerais que vous m'éclairiez un peu svp !

Re: tableau selection aléatoire

Posté : 22 mai 2013, 21:08
par jack91
personne n'as d'idée(s) ?