Avatar billede cvsac Nybegynder
03. februar 2001 - 19:15 Der er 9 kommentarer og
1 løsning

random output fra mysql server dims

jeg ahr en ældrer versiojn af mysql server installeret og derfor kan jeg ikke lige bruge RAND()
så hvordan får jeg nu lavet i kode så den tager en tilfædig output og udskriver på min hjemme side ?
Avatar billede nerdyguy Nybegynder
03. februar 2001 - 19:41 #1
RAND er da en PHP funktion er det ikke ???
Avatar billede cvsac Nybegynder
03. februar 2001 - 19:52 #2
det tror jeg da ikke ....
Avatar billede nerdyguy Nybegynder
03. februar 2001 - 20:03 #3
tjek manualen
http://www.php.net/manual/en/function.rand.php  (findes i php3..)
du kan f.eks gøre sådan her:

$mysql-query = mysql_query(\"select id from database\");
$antal = mysql_num_rows($mysql-query);
så gøre sådan her:
$tal = rand(1,$antal);
$mysql-query = mysql_query(\"select ting,ting1 from database where id=$tal\");
while (list($ting,$ting1) = mysql_fetch_row($mysql-query)) {
  echo $ting.$ting1;
}
det er utestet..
Avatar billede doeleman Nybegynder
03. februar 2001 - 21:37 #4
RAND() er også en SQL-funktion.

Fra MySQL-manualen (kap. 7.4.9)
Rand()
Rand(n)
Returns a random floating-point value in the range 0 to 1.0. If an integer argument N is specified, it is used as the seed value.

You can\'t use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. In MySQL 3.23, you can however do: SELECT * FROM table_name ORDER BY RAND() This is useful to get a random sample of a set SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Note that a RAND() in a WHERE clause will be re-evaluated every time the WHERE is executed.
Avatar billede nerdyguy Nybegynder
04. februar 2001 - 01:00 #5
Slap af :p
Avatar billede volstrup Nybegynder
06. februar 2001 - 22:30 #6
doeleman -> jeps, men det virker først fra ver. 3.23

i stedet kunne noget lign nedenstående evt. bruges:

function random($min = false, $max = false) {
  global $RandomIsInitialized;
  if (!$RandomIsInitialized) {
    srand ((double) microtime() * 1000000);
    $RandomIsInitialized = true;
  }
  return rand($min, $max);
}

$data = mysql_query(\"SELECT * FROM tabel\");
if (mysql_num_rows($data)>0) {
  $tal = random(1, mysql_num_rows($data));
  $gange = 1;
  while ($gange != $tal) {
    mysql_fetch_array($data);
  }
  if ($gange == $tal) {
    $udvalgt = mysql_fetch_array($data);
    $data1 = $udvalgt[\"data1\"];
    etc....
  } else {
    print \"Der er opstået en fejl!\";
  }
}

Ovenstående er utestet, men jeg er rimelig sikker på at det virker!

mvh Jacob Volstrup
UIN 4356912
Avatar billede cvsac Nybegynder
08. februar 2001 - 12:55 #7
hmm jeg får en fejl som lyder sådan her :

Warning: rand(): Invalid range: 1..1 in /easyfrag/WWW/tagwallnew.php on line 81

hvad skal det sige ?
Avatar billede volstrup Nybegynder
08. februar 2001 - 12:59 #8
hvilken linie i koden drejer det sig om?
Avatar billede cvsac Nybegynder
08. februar 2001 - 13:01 #9
return rand($min, $max);
Avatar billede volstrup Nybegynder
08. februar 2001 - 13:01 #10
glem foregående...

Hvor mange returns kommer der fra din query med din forespørgsel? Det er nok der fejlen ligger. Der skal min. returneres én (1) post!

mvh Jacob Volstrup
UIN 4356912
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