rand et enregistrement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : rand et enregistrement

Re: rand et enregistrement

par Nicost » 25 nov. 2010, 00:11

Merci de ta réponse !

Voila ou j'en suis :
<?php
// requete
$recherche= mysql_query("SELECT id, a, b, c, d, e, f, g FROM les_numero");
$donne = mysql_fetch_assoc($recherche);

// récupération des a, b, c, d, e, f, g dans la table les_numero
$a = $donne['a'];
$b = $donne['b'];
$c = $donne['c'];
$d = $donne['d'];
$e = $donne['e'];
$f = $donne['f'];
$g = $donne['g'];


// variable de maximum
$Nb_A=4;
$Nb_B=4;
$Nb_C=3;
$Nb_D=3;
$Nb_E=1;
$Nb_F=3;
$Nb_G=1;

$count=0;
$BoolA=true;
$BoolB=true;
$BoolC=true;
$BoolD=true;
$BoolE=true;
$BoolF=true;
$BoolG=true;

// premier chiffre au hasard
for($i=0;$i<1;$i++){
$numero=rand (1,7);
// maintenant si le numéro est ok, alors on l'enregistre dans la table
if(($numero==7)AND($BoolA)){
echo'A';
$a++;
}
elseif(($numero==6)AND($BoolB)){
echo'B';
$b++;
}
elseif(($numero==5)AND($BoolC)){
echo'C';
$c++;
}
elseif(($numero==4)AND($BoolD)){
echo'D';
$d++;
}
elseif(($numero==3)AND($BoolE)){
echo'E';
$e++;
}
elseif(($numero==2)AND($BoolF)){
echo'F';
$f++;
}
elseif(($numero==1)AND($BoolG)){
echo'G';
$g++;
}

$count++;
// condition


if($a==$Nb_A){
$numero = rand (1,6);
$BoolA=false;
}
elseif($b==$Nb_B){
$numero = rand (1,5);
$BoolB=false;
}
elseif($c==$Nb_C){
$numero = rand (1,4);
$BoolC=false;
}
elseif($d==$Nb_D){
$numero = rand (1,3);
$BoolD=false;
}
elseif($e==$Nb_E){
$numero = rand (1,2);
$BoolE=false;
}
elseif($f==$Nb_F){
$BoolF=false;
$numero =1;
}
elseif($g==$Nb_G){
$BoolG=false;
}





// fin du premier if

}




?>
Mais en faite il me sort quand même un chiffre qui est au max, sniff..
Merci de votre aide.

Re: rand et enregistrement

par Mazarini » 24 nov. 2010, 14:38

Bonjour,

Il faudrait que tu indiques que faire lorsque tous tes compteurs sont au max

Autrement tu peux faire :
for ($i = $a;$a < $Nb_A;$i++) $t[] = 7;
(à refaire pour b,c...)

if (count($t) == 0) tu as déjà atteint tout les max, que faire ?
else
if (count($t) == 1) $i = 0
else $i = (rand(0,count($t)-1);
$numéro = £t[$i]

rand et enregistrement

par Nicost » 24 nov. 2010, 11:48

bonjour à tous !
J'ai un petite problème sur ce que j'essaie de faire avec rand

Dans le fichier test.php, je me connect à msql et je récupère les donnés des champs de ma table les_numero.

Dans cette table les_numero, j'enregistre les numéros pris au hasard avec rand.

Ce que j'essaie de faire, est de limiter le nombre maximum que j'ai défini d'un chiffre compris entre 1 et 7.

Voici ma table :
id / a / b / c / d / e / f / g
--------------------------------

a = 7
b = 6
c = 5
d = 4
e = 3
f = 2
g = 1

Par exemple A ne peux avoir plus de 4 fois le numéro, B seulement 2 fois le numéro, etc

Donc je crée les variables suivante pour définir le nombre de fois que l'on peux avoir le numéro :

$Nb_A = "4";
$Nb_B = "2";
$Nb_C = "1";
$Nb_D = "3";
$Nb_E = "1";
$Nb_F = "3";
$Nb_G = "1";

Si le numéro pris au hasard par rand est 7, on vérifie que celui-ci n'est pas déjà rendu à son maximum, donc 4.
Si dans le champ a de la table les_numero, il est enregistrer seulement 3, alors on peux obtenir le chiffre 7.

Sinon on passe à un numéro rand différent.

Qui sera compris entre 1 et 6, étant donné que le 7 est déjà à son maximum.

J'essaie d'expliquer on gros, pas facile lol :oops:

Donc voila se que j'ai fait, mais cela ne fonctionne pas comme je voudrait, puisqu'il prend quand même un numéro même si celui-ci est déjà à son max défini dans la variable $Nb_A
<?php
// requete 
$recherche= mysql_query("SELECT id, a, b, c, d, e, f, g FROM les_numero");
$donne = mysql_fetch_assoc($recherche);

// variable de maximum
$Nb_A = "4";
$Nb_B = "2";
$Nb_C = "1";
$Nb_D = "3";
$Nb_E = "1";
$Nb_F = "3";
$Nb_G = "1";


// récupération des a, b, c, d, e, f, g dans la table les_numero
$a = $donne['a'];
$b = $donne['b'];
$c = $donne['c'];
$d = $donne['d'];
$e = $donne['e'];
$f = $donne['f'];
$g = $donne['g'];

// premier chiffre au hasard
$numero = rand (1,7);


// condition
if($numero){


if($a == $Nb_A){
$numero = rand (1,6); 
}
elseif($b == $Nb_B){
$numero = rand (1,5); 
}
elseif($c ==$Nb_C){
$numero = rand (1,4); 
}
elseif($d == $Nb_D){
$numero = rand (1,3); 
}
elseif($e == $Nb_E){
$numero = rand (1,2); 
}
elseif($f == $Nb_F){
$numero = rand (1,1); 
}
elseif($g == $Nb_G){
$numero = rand (1,1); 
}
else{
$numero = "7";
}


// maintenant si le numéro est ok, alors on l'enregistre dans la table
if($numero == 7){
echo'A';
$db->query("update les_numero set a=a+1");
}

elseif($numero == 6){
echo'B';
$db->query("update les_numero set b=b+1");
}

elseif($numero == 5){
echo'C';
$db->query("update les_numero set c=c+1");
}

elseif($numero == 4){
echo'D';
$db->query("update les_numero set d=d+1");
}

elseif($numero == 3){
echo'E';
$db->query("update les_numero set e=e+1");
}

elseif($numero == 2){
echo'F';
$db->query("update les_numero set f=f+1");
}

elseif($numero == 1){
echo'G';
$db->query("update les_numero set g=g+1");
}


// fin du premier if
}

?>
Merci de votre aide !!!