Avatar billede rubaek Mester
05. juni 2008 - 16:26 Der er 17 kommentarer og
1 løsning

Hjælp til en "motor"

Jeg er ved at prøve at lave et aktiespil til brug i undervisningen. Men jeg kan ikke finde ud af følgende:
Jeg har en database tabel som indeholder et "firmanavn" og en kurs. Det er nu meningen at kursen for alle firmaerne skal ændres evt. hver 10 min. Nogle forslag??
Avatar billede fant0mas Nybegynder
05. juni 2008 - 16:45 #1
Php kan lave nogen realtime updatering. Men du kan da sætte et timestamp, og opdater hvis det er ældre end 10 min. Men som sagt, så kræver det at der sker forespørgelser til serveren i tidsrummet.
Avatar billede fant0mas Nybegynder
05. juni 2008 - 16:46 #2
Php kan ikke :o)
Avatar billede rubaek Mester
05. juni 2008 - 16:59 #3
Jer forstår det sådan at et PHP script ikke kan, men så kan den del vel løses med noget javascript eller kan det slet ikke lade sig gøre. En mulighed er vel også at gøre det når en bruger logger ind på en side, det vigtigste er at der sker en ændring i kurserne.
Det er også selve opdateringen at databasens kursværdi der er det vigtigste for mig.
Avatar billede fant0mas Nybegynder
05. juni 2008 - 17:13 #4
Med ajax kan du godt lave noget der ligner, men brugeren skal stadig være på siden.
Ligegyldig hvilken løsning, så er det vigtigt at der checkes om den kurs brugeren har handlet til, passer med den seneste kursændring.

Til det sidste, så må du vel bare se om den seneste databaseværdi er ældre en 10 minutter, og i så fald handle derefter. Indsæt den nye række, og brug TIMESTAMP som datatype på dit felt.
Avatar billede Six Nybegynder
05. juni 2008 - 17:31 #5
Det med at det kræver en forespørgsel, kan løses med cronjobs. Jeg bruger selv cronjob.de og de er rimelig stabile, og gratis :)
Avatar billede rubaek Mester
05. juni 2008 - 18:06 #6
Så er jeg ved at få en ide om hvordan et script kan afvikles, men hvordan skal selve scriptet se ud, DET er mit store problem.
Avatar billede rubaek Mester
05. juni 2008 - 18:08 #7
Kan nogle lave et eksempel script som jeg selv kan bygge videre på??
Avatar billede Six Nybegynder
05. juni 2008 - 19:14 #8
Hvordan vil du finde ud af hvad den aktuelle kurs er? Har du et script der søger på en af de større aktiesider eller ?

Så vil scritpet være noget lignende:

$con = mysql_connect("localhost","Username","Password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("MyDatabase", $con);

mysql_query("UPDATE Kurstabel SET Kurs = $AktuelKurs
WHERE Firmanavn = $firmanavn");

mysql_close($con);
Avatar billede rubaek Mester
05. juni 2008 - 19:44 #9
Firmaerne er fiktive og derfor er derfor også fiktiv. Der skal fremstilles en ny kurs, via noget rand(). Det er disse nye kurser der skal gemmes updateres i databasen.
Avatar billede Six Nybegynder
05. juni 2008 - 20:22 #10
Så bliver du nok nødt til at udspecificere nogle "pseudo" regler for hvordan du vil have dine kurser til at "bevæge" sig. - det går jo f.eks. ikke at en kurs for er 100, så går der 10 minutter så er kursen 12, 10 minutter senere er den 320. Håber du kan følge mig i hvad jeg mener ;)
Avatar billede rubaek Mester
05. juni 2008 - 20:47 #11
Det er også meningen. Jeg regner med at der kursen skal ganges med et tal i mellem 0.8 og 1.2 eller noget i den stil. Men det regner jeg med kan klares i næste "omgang".
Avatar billede Six Nybegynder
05. juni 2008 - 21:20 #12
Jeg lurer lige på det og ser om jeg kan få et eksempel klar.
Avatar billede rubaek Mester
05. juni 2008 - 21:38 #13
Det lyder rigtig godt..
Avatar billede Six Nybegynder
05. juni 2008 - 22:11 #14
Her er der et lille eksempel som du kan prøve at gå lidt videre med:

<?

function db_connect ()
{
$host = "localhost";
$user = "dinbruger";
$pass = "ditpass";
$dbase = "dinDB";
    if (!($link = mysql_connect ($host, $user, $pass)))
    {
        echo("(1)mysql error: " . mysql_errno() . " " . mysql_error());
        return 0 ;
    }
    if(!(mysql_select_db($dbase, $link)))
    {
        echo("(2)mysql error: " . mysql_errno() . " " . mysql_error());
        return 0 ;
    }
    return $link;
};

function db_query ($sql, $link)
{
    if (!($result = mysql_query($sql, $link)))
    {
        echo("(1)mysql error: " . mysql_errno() . " " . mysql_error());
        return 0 ;
    }
    return $result;
};


    $link = db_connect();
    $sql = "SELECT firmanavn, kurs FROM firmainfo;";
    $res = db_query($sql, $link);
   
    while($tab=mysql_fetch_array($res)) {
        $id=$tab["ID"];
        $firmanavn=$tab["firmanavn"];
        $kurs=$tab["kurs"];
       
        $AktuelKurs = $kurs * (rand(80, 120)/100);
            $link = db_connect();
            $sql = "UPDATE firmainfo SET kurs = '$AktuelKurs' WHERE firmanavn = '$firmanavn';";
            db_query($sql, $link);
           
        echo $firmanavn ." : ".round($kurs,2)." : ".$AktuelKurs."<br />";
    };
?>
Avatar billede Six Nybegynder
05. juni 2008 - 22:13 #15
Resultat fra min egen test efter tre forespørgsler:
1.
maersk : 59.85 : 49.0770947965
microsoft : 82.74 : 66.1883707734
sonofon : 68.77 : 78.4004233962
blizzard : 147.5 : 123.90308169

2.
maersk : 49.08 : 55.947888068
microsoft : 66.19 : 66.8502544811
sonofon : 78.4 : 90.1604869056
blizzard : 123.9 : 105.317619436

3.
maersk : 55.95 : 54.8289303066
microsoft : 66.85 : 56.1542137641
sonofon : 90.16 : 94.6685112509
blizzard : 105.32 : 114.796205185
Avatar billede rubaek Mester
05. juni 2008 - 23:17 #16
Kanon arbejde, kigger lige lidt mere på det i morgen. Men det var sådan jeg havde tænkt.. Smid et svar.
Avatar billede Six Nybegynder
06. juni 2008 - 16:18 #17
Ingen problem :) - nu skal du så huske, at når du bruger cronjobs - så er der ingen grund til at have et output fra scriptet - da scriptets eneste formål er at opdatere databasen. Så f.eks. skal du have cronjobbet til at pege på http://www.minside.dk/scripts/opdaterkurs.php - og så vil den så køre dit kursscript hvert 10'ende minut (Eller hvilket interval du nu sætter). For at gøre det hele lidt nemmere på cronjob.de - så tag og brug google's translator, selvom det ikke er korrekt dansk, så er det trods alt forståeligt dansk ;D

http://66.102.9.104/translate_c?hl=da&sl=de&tl=da&u=http://www.cronjob.de/
Avatar billede Six Nybegynder
06. juni 2008 - 16:18 #18
... det skulle være et svar ;D

hvis du har spørgsmål eller andet - så¨bare skriv :)
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