selection aleatoire

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 : selection aleatoire

par rami » 19 nov. 2005, 17:55

Au temps pour moi, j'ai édité ;)

par Truc » 19 nov. 2005, 17:47

est ce qu'il ne doit pas y avoir un $i++ a la fin du while?
non , dans le while()

par donatello » 19 nov. 2005, 12:07

vu que tu initialises $i=0, est ce qu'il ne doit pas y avoir un $i++ a la fin du while?

par rami » 19 nov. 2005, 00:33

:?:

Je te propose sinon cela:
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4";
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() );
$i=0;
while ($row = mysql_fetch_row($result))
{
     $_SESSION['selection'.$i]=$row[0];
     $i++;
}
En sortie, tu auras tes variables de session $_SESSION['selection0'],$_SESSION['selection1']...
Testes ce code et dis si ca convient.

par donatello » 18 nov. 2005, 21:55

ripat, ta première solution me plait pas mal.
Seule interrogation, je pensais qu'à chaque actulisation de la page, la sélection aléatoire reprendrait depuis le début.
dans mon cas, la sélection est toujours la même quand on actualise la page.
Est-ce normal?

par rami » 18 nov. 2005, 15:46

Il suffit d'adapter un peu le code:
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4";
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() );
while ($row = mysql_fetch_row($result))
{
     $_SESSION['selection'][]=$row[0];
}
Tu obtiens une variable de session $_SESSION['selection'] étant elle-même u n tableau (tu y accèdes ainsi: $_SESSION['selection'][0] : sélection 1, $_SESSION['selection'][1] : sélection 2...)

par donatello » 18 nov. 2005, 15:44

pour éviter de se perdre, je récapitule ma question:
Pourquoi en faisant ceci
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4"; 
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() ); 
while ($total = mysql_fetch_array($result)) { 

//création tableau sélection dans la session 
$_SESSION['selection0'] = $total[0]; 
$_SESSION['selection1'] = $total[1] ; 
$_SESSION['selection2'] = $total[2] ; 
$_SESSION['selection3'] = $total[3] ; 
} 
on obtient count($total)=1, mais en faisant ceci
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4"; 
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() ); 
while ($total = mysql_fetch_array($result)) { 

//création tableau sélection dans la session 
echo $total[0]; 
echo $total[1] ; 
echo $total[2] ; 
echo $total[3] ; 
} 
on obtient count($total)=4

par donatello » 18 nov. 2005, 15:31

Salut,

Essaies cela:
PHP:
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4";
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() );
while ($row = mysql_fetch_row($result))
$total[] = $row[0];

foreach($total as $id)
echo 'Total: '.$id.'<br>';
ben ça marche parceque je ne fais pas appel à $_SESSION dans ce cas.

par rami » 18 nov. 2005, 15:28

Salut,

Essaies cela:
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4";
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() );
while ($row = mysql_fetch_row($result)) 
     $total[] = $row[0];

foreach($total as $id) 
     echo 'Total: '.$id.'<br>';

par Maitrepylos » 18 nov. 2005, 15:25

avec var_dump j'obtiens
bool(false)
 
Ben là tu devrais avoir un tableau de 4 éléménts, après avoir fais mysql_fetch=_array

par donatello » 18 nov. 2005, 15:14

Bon, la requete a l'air bonne car quand je fais
$requete = "SELECT DISTINCT ID FROM occasions ORDER BY RAND() LIMIT 4"; 
$result= mysql_query($requete) or die (mysql_error() . mysql_errno() ); 
while ($total = mysql_fetch_array($result)) { 

//création tableau sélection dans la session 
echo $total[0]; 
echo $total[1] ; 
echo $total[2] ; 
echo $total[3] ; 
} 
j'obtiens bien 4 valeurs distinctes. ça veut dire que le pb vient de l'enregistrement des éléments de $total dans la session, mais je ne vois pas ce qui cloche là...

par donatello » 18 nov. 2005, 15:07

j'ai tendence à penser que c'est ma requête qui est mal construite, parcequ je ne vois vraiment pas pourquoi $total ne serait pas un tableau de 4 éléments.

par donatello » 18 nov. 2005, 15:05

avec var_dump j'obtiens
bool(false)
 

par Invité » 18 nov. 2005, 14:54

et si tu fais
var_dump ($total)
cela donne quoi?

par donatello » 18 nov. 2005, 13:37

ça ne marche pas à cause de la boucle while qui manque sur le fetch_array