Avatar billede funti Nybegynder
21. maj 2003 - 18:07 Der er 14 kommentarer og
2 løsninger

random fra mysql

Hej!

Har kigget på exp.dk for at finde en måde at hente en random værdi ud af tabellen 'users'.
Værdien hedder 'id'...
der skal kun hentes en værdi ud...

nogen der har den kode på lager?
Avatar billede schaefner Juniormester
21. maj 2003 - 18:16 #1
SELECT id FROM users ORDER BY RAND(NOW()) LIMIT 1
Avatar billede tipsen Nybegynder
21. maj 2003 - 18:20 #2
Afhænger af din version af MySQL som er...?
Avatar billede funti Nybegynder
21. maj 2003 - 18:24 #3
ved ikke lige hvilken version - men den er pænt ny :P

problemet er at jeg hele tiden får samme værdi ud!

$muuh = mysql_query("SELECT id FROM users ORDER BY RAND() LIMIT 1");
while($row = mysql_fetch_array($muuh)) {

echo $row[0];
}
Avatar billede funti Nybegynder
21. maj 2003 - 18:24 #4
version 3.23.55
Avatar billede tipsen Nybegynder
21. maj 2003 - 18:41 #5
Så bruger du bare schaefners løsning.

fra v. 3.23.52 skal RAND-funktionen i MySQL seedes!
Avatar billede schaefner Juniormester
21. maj 2003 - 18:51 #6
$muuh = mysql_query("SELECT id FROM users ORDER BY RAND(NOW()) LIMIT 1");
$row = mysql_fetch_array($muuh);
echo $row[0];
Avatar billede funti Nybegynder
21. maj 2003 - 19:12 #7
hmm det samme... den tager nr 2 hele tiden... vi snakker copy / paste her ;)

kan det være fordi min tabel "kun" har 4 rækker?
Avatar billede tipsen Nybegynder
21. maj 2003 - 19:17 #8
Eller fordi IE cacher resultatet?
Avatar billede funti Nybegynder
21. maj 2003 - 19:30 #9
måske... 2sek
Avatar billede funti Nybegynder
21. maj 2003 - 19:30 #10
nej
Avatar billede funti Nybegynder
21. maj 2003 - 19:32 #11
hvis det er til nogen hjælp:

CREATE TABLE users (
  id int(6) NOT NULL auto_increment,
  navn varchar(32) NOT NULL default '',
  alder int(2) NOT NULL default '0',
  email varchar(32) NOT NULL default '',
  PASSWORD varchar(12) NOT NULL default '',
  password2 varchar(64) NOT NULL default '',
  aktivering varchar(6) NOT NULL default '',
  aktiv int(1) NOT NULL default '0',
  oprettet timestamp(12) NOT NULL,
  sex int(1) NOT NULL default '0',
  UNIQUE KEY id (id)
) TYPE=MyISAM;
Avatar billede ohmish Nybegynder
21. maj 2003 - 23:52 #12
ska jeg smide mit altid brugbare men lidt længere og alternative script på bordet, tipsen?
Avatar billede tipsen Nybegynder
22. maj 2003 - 00:51 #13
Det synes jeg da - så vil jeg også benytte lejligheden til at finde et alternativ frem :-)

$res = mysql_query('SELECT COUNT(*) FROM users') or die(mysql_error());
$antal = mysql_result($res,0);
mysql_free_result($res);
if ($antal > 0) {
  $rndnum = mt_rand(0, $antal-1);
  $res = mysql_query("SELECT id FROM users LIMIT $rndnum, 1") or die(mysql_error());
  echo mysql_result($res, 0);
} else {
  echo 'Intet id fundet!';
}
Avatar billede ohmish Nybegynder
22. maj 2003 - 01:04 #14
<?
$hent = @mysql_query("SELECT id, RIGHT(RAND(), 4) AS r FROM users ORDER BY r DESC LIMIT 0,1 "); $r = @mysql_fetch_assoc($hent);
echo $r['id'];
?>
Avatar billede ohmish Nybegynder
22. maj 2003 - 01:06 #15
jeg sagde lidt længere... hmmm. det kunne vist barberes ned til kernen.
Avatar billede funti Nybegynder
22. maj 2003 - 01:08 #16
Tak for hjælpen!

Begge ting virker perfekt... nu har jeg lidt mere at lege videre med...! TAK igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester