Avatar billede and.vang Nybegynder
29. juli 2001 - 19:40 Der er 19 kommentarer og
3 løsninger

Dagens gode råd

Hvordan kan jeg lave en liste og få PHP til at vælge en tilfældig ting fra den? Det er ligemeget om det er et array, en variabel eller simpelthen en selvstændig fil.

  Det skal bar fungere således at jeg kan lave en liste med en masse gode råd, men det skal kun være det ene af dem der bliver vist ad gangen. Og det skal være helt tilfældigt.

/Anders
Avatar billede Slettet bruger
29. juli 2001 - 19:45 #1
    //**************************************
    //   
    // Name: Random Quote
    // Description:Displays randome quotes o
    //    n a webpage.
    // By: Todd Williams
    //
    // Inputs:quotes.
    //
    // Returns:quotes.
    //
    //This code is copyrighted and has    // limited warranties.Please see http://
    //    www.Planet-Source-Code.com/xq/ASP/txtCod
    //    eId.313/lngWId.8/qx/vb/scripts/ShowCode.
    //    htm    //for details.    //**************************************
    //   
   
    //QUOTE SCRIPT
    <?php
    srand((double)microtime()*1000000);
    $quotelist = file(\"quote.txt\");
    $nquote = sizeof($quotelist);
    $rquote = rand(0,$nquote-1);
    $quote = $tiplist[$rquote];
    echo $quote;
    ?>
    //QUOTE TEXT (quote.txt)
    This is quote 1.
    This is quote 2.
    ...
    ...
Avatar billede Slettet bruger
29. juli 2001 - 19:47 #2
Avatar billede Slettet bruger
29. juli 2001 - 19:48 #3
ups, sidste link er vist ASP...
Avatar billede and.vang Nybegynder
29. juli 2001 - 19:52 #4
jeg studerer det lige lidt...
Avatar billede Slettet bruger
29. juli 2001 - 19:56 #5
altså, $quotelist kunne også være et array, men jeg ved ikke hvordan man laver en tilfældig query af en SQL db...
Avatar billede and.vang Nybegynder
29. juli 2001 - 19:57 #6
Tager det lige med ind på min Apache og tester det. Mange tak!!

/Andes :)
Avatar billede Slettet bruger
29. juli 2001 - 20:04 #7
*S*
Avatar billede barefoot Nybegynder
30. juli 2001 - 03:22 #8
$array[] = \'hej\';
$array[] = \'med\';
$array[] = \'dig\';
$array[] = \'fra\';
$array[] = \'experten\';
srand((double)microtime()*1000000);
$slut = sizeof($array);
$rand = rand(0, $slut)

echo $array[$rand];
Avatar billede and.vang Nybegynder
30. juli 2001 - 11:33 #9
Jeg kunne ikke rigtig få El Barto\'s til at virke. Jeg skal lige teste Barefoot\'s med arrays, det tror jeg på en måde lidt mere på. Det ser i hvert fald mere overskueligt ud :)

/Anders
Avatar billede fl Nybegynder
30. juli 2001 - 12:28 #10
srand ((double) microtime() * 10000000);
$mine_raad[1] = \"råd nummer 1\";
$mine_raad[2] = \"råd nummer 2\";
$mine_raad[3] = \"råd nummer 3\";
$mine_raad[4] = \"råd nummer 4\";
$mine_raad[5] = \"råd nummer 5\";
$mine_raad[6] = \"råd nummer 6\";

$rand_valg = array_rand ($mine_raad, 1);
echo \"Dagens gode råd<br>$mine_raad[$rand_valg]\";

     
Avatar billede Slettet bruger
30. juli 2001 - 12:34 #11
fl> Wow, næsten ikke det samme som barefoots svar...
Avatar billede barefoot Nybegynder
30. juli 2001 - 12:48 #12
el_barto => Du hentede et script og postede og det er ikke særligt overskueligt da du har \"licensen\" i toppen, og dårlige kommentarer i midten.
Forresten henter du en fil ind.
Jeg laver mit eget indhold i arrays.

Hvis endeligt du skulle pointere noget er det at fl\'s løsning er 100% identisk med min bortset fra at han akgiver tal hvor min laver dem automatisk...
Avatar billede Slettet bruger
30. juli 2001 - 12:51 #13
barefoot> Rolig nu, jeg har ikke skrevet noget dårligt om dig, tværtimod prøver jeg at pointere at fl laver næsten samme kode som dig...
Avatar billede barefoot Nybegynder
30. juli 2001 - 13:07 #14
Ups, undskyld. Igen en misforståelse fra min side. jeg må have overset et eller andet.

Det må du undskylde...!
Avatar billede Slettet bruger
30. juli 2001 - 13:31 #15
Det okæ... :)
Avatar billede barefoot Nybegynder
30. juli 2001 - 16:05 #16
tak:)))
Avatar billede and.vang Nybegynder
03. august 2001 - 13:12 #17
Barefoot\'s virker! Har ikke prøvet fl\'s, men det ser jo ud til at være næsten det samme. Der er bare et problem. Det er ikke helt tilfældigt hvilket råd der bliver valgt. Det afhænger åbenbart af microtime. Hvordan virker det der microtime? Hvis jeg f.eks. stiller den til 6000 så vælger den kun imellem de første fire-fem stykker. Og indtil videre har jeg otte. Er der nogen der har en forklaring?

/Anders  :-D
Avatar billede barefoot Nybegynder
03. august 2001 - 19:46 #18
srand() er en funktion til at indstille rand().
Mitrotime() angiver tiden i microsekunder, og da den hele tiden er forskellig vil den kunne brugea til at generere et tilfældigt tal ud fra.

Hvad mener du med at stille den til 6000?
Stille hvad til 6000?

$array[] = \'hej\';
$array[] = \'med\';
$array[] = \'dig\';
$array[] = \'fra\';
$array[] = \'experten\';
$array[] = \'et\';
$array[] = \'dansk\';
$array[] = \'forum\';
//Otte forskellige pladser
srand((double)microtime()*1000000);
$slut = sizeof($array);
$rand = rand(0, $slut)

echo $array[$rand];

Dette vil udvælge en tilfældigt plads i arrayet.
Men prøv at vise den kode som ikke virker...
Avatar billede and.vang Nybegynder
04. august 2001 - 20:19 #19
istedet for microtime()*1000000 skriver jeg microtime()*6000 og det har åbenbart en virkning på hvad der bliver valgt. Men i dag virkede det alligevel, såæhh...Jeg må vel hellere få uddelt point!

  Barefoot var den der svarede bedst, så han får de fleste. El_barto havde jo egentlig bare et copyrigth-beskyttet script, og Fl svarede næsten det samme som bare foot. Håber i kan accaeptere fordelingen!! Mange tak allesammen!!!

/Anders  :)
Avatar billede barefoot Nybegynder
04. august 2001 - 20:56 #20
(doubble)microtime returnerer den nuværende tid i microsekunder, og der er et komma tal som kunne se sådan ud: 0,955623
Microtime bruger en bestemt algorimte til at udregne det tilfældige tal på baggrund af hvad den har fået opgivet i srand().
Hvis du altid skriver srand(3) vil du altid få det samme retultat med rand() !!
Jo flere ciffre et tal har jo flere kombinationsmuligheder har det.
Når du ganger med 6000 vil du få et tal som dette: 351,653 der er altså kun 999 kombinationsmuligheder hvor der er 999999 muligheder, og hver gang er tallet forskelligt da det er bestemt af microtiden som hele tiden ændrer sig.
Du opnår altså større tilfældighed ved at gange med 1000000 end du gør med 6000.

Ved at gange med 1000000 opnår du 1000000 forskellige mønstre som rand() kan bruge til at udregne det tilfældige tal. Med 6000 er det kun 6000 mønstre, eller 166,6 gange mindre.
Avatar billede barefoot Nybegynder
04. august 2001 - 20:56 #21
Og tak for din point fordeling:))
Avatar billede barefoot Nybegynder
04. august 2001 - 20:58 #22
Hvad skete der forresten med det sidste point?
el_barto fik 5, jeg fik 20 og fl fik 4, det er kun 29 i alt, og der blev givet 30..
Det må være en fejl i experten....
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