Avatar billede pmedia Nybegynder
03. maj 2003 - 21:43 Der er 30 kommentarer og
1 løsning

Random mellem F.eks 2,3,7,9

hvordan laver jeg en random udtræk udfra nogle forud bestemte muligheder.. så hvis jeg har tallene 1,6,9,13 så skal den komme med et af dem tilfældigt.

jeg trode måske man kunne gøre det sådan men nej:
<?
$tal = mt_srand((double)microtime()*1000000);
$tal = mt_rand(1,6,9,13);
echo $tal;

?>
Avatar billede schaefner Juniormester
03. maj 2003 - 21:48 #1
<?php
$tal = array("1","6","9","13");
$i = mt_rand(0,count($tal));
echo $tal[$i];
?>

Det var en mulighed
Avatar billede pmedia Nybegynder
03. maj 2003 - 21:48 #2
glemte at sige at løsningen skal være så hurtig som muligt :-)
Avatar billede schaefner Juniormester
03. maj 2003 - 21:48 #3
$i = rand(0,count($tal));
Avatar billede postndk Nybegynder
03. maj 2003 - 21:48 #4
løsningen kom da hurtigere end du kunne sige det. ;o)
Avatar billede jakoba Nybegynder
03. maj 2003 - 21:48 #5
<?php
$udvalg = array ( 1,6,9,13 );
    // så mangler vi blot et tilfældigt tal imellem 0 og 3 til at vælge
$tal = $udvalg[ mt_rand( 0, 3 );
?>
mvh JakobA
Avatar billede pmedia Nybegynder
03. maj 2003 - 21:49 #6
schaefner: så ikke dit indlæg før min kommentar.. prøver det lige
Avatar billede schaefner Juniormester
03. maj 2003 - 21:49 #7
<?php
$tal = array(1,6,9,13);
$i = rand(0,count($tal)-1);
echo "$tal[$i]";
?>
Avatar billede jakoba Nybegynder
03. maj 2003 - 21:50 #8
schaefner >> count($tal) er een for mange.
$i = rand( 0, count($tal)-1 );
Avatar billede schaefner Juniormester
03. maj 2003 - 21:50 #9
jakoba >> rettede den lige ;)
Avatar billede jakoba Nybegynder
03. maj 2003 - 21:51 #10
ej... vi må se at få nogen flere spørgsmål :-))
Avatar billede pmedia Nybegynder
03. maj 2003 - 21:52 #11
schaefner: det virker fint.. men er det den bedste måde at gøre det på synes du/i jeg skal bruge det til at loade et element på en side som får mange besøgende
Avatar billede postndk Nybegynder
03. maj 2003 - 21:52 #12
retter lige jakoba's ;o)

<?php
$udvalg = array ( 1,6,9,13 );
    // så mangler vi blot et tilfældigt tal imellem 0 og 3 til at vælge
$tal = $udvalg[ mt_rand( 0, 3 )];
?>
Avatar billede pmedia Nybegynder
03. maj 2003 - 21:53 #13
jakoba: også tak for dit indlæg!
Avatar billede schaefner Juniormester
03. maj 2003 - 22:06 #14
pmedia >> Det er umiddelbart den eneste måde at gøre det på.
Avatar billede pmedia Nybegynder
03. maj 2003 - 22:11 #15
schaefner: ok takker, jeg prøvede lige at sætte det ind i min kode, men det giver en fetch fejl?

min kode:
if ($movieid < 1) { $movieid = array(42,1,43,5,19); $i = rand(0,count($movieid)-1); } else { $movieid = $movieid ; }

$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=" . $movieid));
Avatar billede schaefner Juniormester
03. maj 2003 - 22:13 #16
Prøv:

<?php
if ($movieid < 1) {
    $movieid = array(42,1,43,5,19);
    $i = rand(0,count($movieid)-1);
} else {
    $movieid = $movieid;
}
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=$movieid"));
?>
Avatar billede schaefner Juniormester
03. maj 2003 - 22:14 #17
Nej, hov:

<?php
if ($movieid < 1) {
    $moviearr = array(42,1,43,5,19);
    $i = rand(0,count($moviearr)-1);
} else {
    $movieid = $moviearr[$i];
}
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=$movieid"));
?>
Avatar billede roenving Novice
03. maj 2003 - 22:14 #18
Er det ikke sådan noget som:

<?php
if ($movieid < 1) {
    $movieid = array(42,1,43,5,19);
    $i = rand(0,count($movieid)-1);
} else {
    $i = $movieid;
}
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=$i"));
?>
Avatar billede roenving Novice
03. maj 2003 - 22:17 #19
Nå nej, så må det hellere være:

<?php
if ($movieid < 1) {
    $movies = array(42,1,43,5,19);
    $i = rand(0,count($movieid)-1);
    $movieid = movies[$i];
} else {
    $movieid = $movieid;
}
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=$movieid"));
?>
Avatar billede schaefner Juniormester
03. maj 2003 - 22:21 #20
Er lidt i tvivl.

<?php
// Hvis $movieid er mindre end nul, så laver den et random nr.
if ($movieid < 1) {
    $moviearr = array(42,1,43,5,19);
    $i = rand(0,count($moviearr)-1);
    $movieid = $moviearr[$i];
} else {
    // Ellers sættes den til 1
    $movieid = 1;
}
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview WHERE id=$movieid"));
?>
Avatar billede jakoba Nybegynder
03. maj 2003 - 22:23 #21
det er sjældent en god ide at stoppe mysql funktioner ind i hinanden på den måde. Du får intet feedback når noget går galt.

$temp = mysql_query( "SELECT * FROM preview WHERE id=".$movieid )
    or die( "Select failed: " .mysql_error() );
$movierow = mysql_fetch_array( $temp );
Avatar billede pmedia Nybegynder
03. maj 2003 - 22:24 #22
schaefner: den sidste løsning virker :) kunne ikke få de andre til at funke
Avatar billede schaefner Juniormester
03. maj 2003 - 22:29 #23
et svar så?
Avatar billede tipsen Nybegynder
03. maj 2003 - 22:32 #24
pmedia: Er det spørgsmål om at du skal udtrække en tilfældig række ud af samtlige rækker i en tabel eller skal du udtrække en tilfældig række ud af nogle udvalgte rækker i en tabel? (Jeg mener begge ting kan klares hurtigere end det er tilfældet her!)
Avatar billede pmedia Nybegynder
03. maj 2003 - 22:40 #25
tipsen: skal du udtrække en tilfældig række ud af nogle udvalgte rækker i en tabel - yep det er det jeg skal - men må hellere give schaefner sine point, det virker fint, hvis du har en bedre løsning må du gerne poste den..
Avatar billede schaefner Juniormester
03. maj 2003 - 22:41 #26
pmedia >> Du kan prøve:
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview ORDER BY RAND()));
Avatar billede schaefner Juniormester
03. maj 2003 - 22:41 #27
Hov:
$movierow = mysql_fetch_array(mysql_query("SELECT * FROM preview ORDER BY RAND()"));
Avatar billede pmedia Nybegynder
03. maj 2003 - 22:44 #28
ok men kan ikke se hvordan det kan virke.. jeg har 50 rækker i min tabel.. og vil udtrække en tilfældig ud af nogle forud bestemte rækker (1,5,19,42,43)..
Avatar billede pmedia Nybegynder
03. maj 2003 - 22:45 #29
schaefner: vil din sidste kode ikke bare tage en tilfældig ud af dem alle?
Avatar billede tipsen Nybegynder
03. maj 2003 - 22:55 #30
SELECT * FROM preview WHERE id in (1,5,19,42,43) ORDER BY RAND() LIMIT 0,1
Avatar billede tipsen Nybegynder
03. maj 2003 - 22:56 #31
Det skulle fungere og bliver vist ikke meget hurtigere...
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