Avatar billede berner5300 Nybegynder
11. maj 2011 - 18:46 Der er 22 kommentarer og
1 løsning

Lave område, der opdatere sig selv

Heej Ekspert folk

Er der nogen der ved hvordan man kan lave en "kasse" på en hjemmeside som opdatere automatisk. Altså det er KUN denne "kasse" der skal opdatere, da det er til en afspilningliste.

Nogen der kan hjælpe med det?

Hvis spørgsmålet ikke er tydeligt nok, vil jeg med glæde uddybe det

- berner5300

- 90 point
Avatar billede kjeldsted Novice
11. maj 2011 - 18:48 #1
Du har to muligheder.

1. En iFrame der opdateres via et meta-tag.

2. At lave et i Javascript.

Det kan ikke lade sig gøre med PHP da PHP er et server-side script.
Avatar billede berner5300 Nybegynder
11. maj 2011 - 18:50 #2
Jaah okaay

Har du eksempler på hvordan de to kan gøres, eller en af dem?

Ville være til stor hjælp ;)
Avatar billede kjeldsted Novice
11. maj 2011 - 18:52 #3
Men via JS kan du fx:

<html>
<script type="text/javascript">

function reload()
{
    document.getElementById('navnPaaDiv').innerHTML = 'Indhold';
    setTimeout("reload",10000);
}

</script>
<body onLoad="reload()">
</body>
</html>


Det skal jo selvfølgelig lige tilpasses efter hvad det er du gerne vil have den skal hente. Indholdet kan så fx. hentes via XMLhttp.
Avatar billede kjeldsted Novice
11. maj 2011 - 18:54 #4
Og jeg må nok indrømme at jeg ikke selv arbejder med iFrames da jeg for lang tid siden blev grundigt uvenner med disse og ikke har rørt det stads siden :)
Avatar billede berner5300 Nybegynder
11. maj 2011 - 18:56 #5
<html>
    <head>
        <title></title>
        <link href="style.css" type="text/css" rel="stylesheet">
    </head>
<body>
    <center>
        <table>
            <tr>
                <td id="top-left">
                    <center>
                        Radioens status er: <?php
                            // Change these to your online/offline messages //
                            $online = "<u>Online</u> <img src='images/online.gif' />"; // Displays when stream is online
                            $offline = "<u>Offline</u> <img src='images/offline.gif' />"; // Displays when stream is offline
                            // don't edit below //
                            $ip = "213.239.220.22";
                            $port = "12370";
                            $fp = @fsockopen($ip,$port,$errno,$errstr,1);
                            if (!$fp)
                                {
                                $status = $offline;
                                }
                                else
                                {
                                fputs($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
                                while (!feof($fp))
                                    {
                                    $info = fgets($fp);
                                    }
                                $split = explode(',', $info);
                                if ($split[1] == "0" )
                                    {
                                    $status = $offline;
                                    }
                                else
                                    {
                                    $status = $online;
                                    }
                                }
                            echo $status;
                            ?>   
                            <hr />
                                Du h&oslash;rer lige nu <b><u><?php
                            $ip = "213.239.220.22";
                            $port = "12370";
                            $fp = @fsockopen($ip,$port,$errno,$errstr,1);
                            if (!$fp)
                                {
                                $title = "Radioen er gået offline  ";
                                }
                                else
                                {
                                fputs($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
                                while (!feof($fp))
                                    {
                                    $info = fgets($fp);
                                    }
                                $info = str_replace('</body></html>', "", $info);
                                $split = explode(',', $info);
                                if (empty($split[6]) )
                                    {
                                    $title = "Sangen findes ikke mere  ";
                                    }
                                else
                                    {
                                    $count = count($split);
                                    $i = "6";
                                    while($i<=$count)
                                        {
                                        if ($i > 6)
                                            {
                                            $title .= ", " . $split[$i];
                                            }
                                        else
                                            {
                                            $title .= $split[$i];
                                            }
                                        $i++;
                                        }
                                    }
                                }
                            $title = substr($title, 0, -2);
                            echo $title;
                            ?></u></b>
                    </center>
                </td>
                <td id="top-middel">
                    <center><script type="text/javascript" src="http://shoutcast.mixstream.net/js/external/flash/s14.myradiostream.com:12370:0:000000:ffffff:ffffff::"></script>
                    </center>
                </td>
                <td id="top-right">
                    <a href='http://s14.myradiostream.com/12370.pls' target="_blank"><img src="images/itunes.gif" width="50" height="50"></a>&nbsp;
                    <a href='http://s14.myradiostream.com/12370.pls' target="_blank"><img src="images/winamp.gif" width="50" height="50"></a>&nbsp;
                    <a href='http://s14.myradiostream.com/12370.asx' target="_blank"><img src="images/windows-media-player.gif" width="50" height="50"></a></p>
                </td>
            </tr>
            <tr>
                <td id="body" colspan="3">
                    <h1>Nyheds System</h1>
                    123
                </td>
            </tr>
        </table>
    </center>
</body>
</html>

Det er den der hedder <td id="top-left">

Hvordan får jeg den ind i til at opdatere automatisk?
Avatar billede kjeldsted Novice
11. maj 2011 - 19:04 #6
Et stykke hurtigt modificeret stykke kode jeg engang lavede til en radio kanals afspilningsliste:

function ReLoad()
{
    logFile = loadLog();
    document.getElementById('top-left').innerHTML = logFile;
    setTimeout('ReLoad',10000);
}

function loadLog()
{
    var logFile = new Array();
    var xmlhttp;
    if (window.XMLHttpRequest)        //Åbner xmlhttp for alt andet end IE
    {
        xmlhttp=new XMLHttpRequest();
    }
    else                            //Åbner xmlhttp for IE
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    var t = new Date();
    t = t.getTime();
    t = parseInt(t / 1000);
    xmlhttp.open("GET","top-left-content.php?u=" + t,false);
    xmlhttp.send();
    logFile = xmlhttp.responseText;
    return logFile;
  }


Dette skal naturligvis ind i dokumentet hvor der er refreshes. Det skal indsættes i et <script> tag inde i <head>

Du skal så lave en PHP fil der hedder 'top-left-content.php' med indholdet af top-left.
Avatar billede berner5300 Nybegynder
11. maj 2011 - 19:06 #7
Nice

Hvordan får jeg den så til at få designet ud?
Altså der hvor jeg gerne vil have den til at opdatere
Avatar billede kjeldsted Novice
11. maj 2011 - 19:38 #8
Det gør den i den linje der hedder

document.getElementById('top-left').innerHTML = logFile;


Hér tager den indholdet (her kaldet logFile. Kan sagtens ændres) og smider det ind i den div der har ID 'top-left'
Avatar billede berner5300 Nybegynder
11. maj 2011 - 19:41 #9
Og hvad skal jeg gøre med den der top-left-content.php fil?
Avatar billede kjeldsted Novice
11. maj 2011 - 19:48 #10
Deri skal der være det indhold som der skal vises i top-left boksen.
Avatar billede berner5300 Nybegynder
11. maj 2011 - 19:49 #11
Okaay.

Hvor tit opdatere den så?
Avatar billede kjeldsted Novice
11. maj 2011 - 19:52 #12
Det styres hér:
setTimeout('ReLoad',10000);
Nu står den til 10.000 millisekunder. Men det kan du bare rette.
Avatar billede berner5300 Nybegynder
11. maj 2011 - 19:59 #13
Iorden.

Men kan du ikke hjælpe mig.

hvad er det jeg skal skrive i, istedet for <td id="top-left">

Jeg er helt væk.

Vil du ikke prøve at skrive hvordan de skal se ud.?
Avatar billede kjeldsted Novice
11. maj 2011 - 20:08 #14
Det eneste er at du skal fjerne der er står mellem <td id="top-left"> og <td>.
Avatar billede kjeldsted Novice
11. maj 2011 - 20:09 #15
Nej. Det fortrød jeg vist.
Lav det om til:

<td id="top-left"><div id="top-left"></div></td>
Avatar billede berner5300 Nybegynder
11. maj 2011 - 20:14 #16
Jeg har smidt javascriptet ind i en <script> og ind i <head>

Så har jeg smidt det der var i <td id="top-left"></td> ind i top-left-content.php fil.

Så har jeg sat <div id="top-left"></div> ind i <td id="top-left"></td>

Men der kommer intet frem.

Hvad gør jeg forkert? :(
Avatar billede kjeldsted Novice
11. maj 2011 - 20:15 #17
Har du en URL jeg lige kan se?
Avatar billede berner5300 Nybegynder
11. maj 2011 - 20:15 #18
Avatar billede kjeldsted Novice
11. maj 2011 - 20:24 #19
setTimeout('ReLoad',10000); skal jo naturligvis hedde
setTimeout('ReLoad()',10000);

Desuden. Hvorfor har du ikke en DOCTYPE på din side?

Og så skal din <body> have tilføjet en onLoad:

<body onLoad="ReLoad()">
Avatar billede berner5300 Nybegynder
11. maj 2011 - 20:28 #20
Det virker nu.
Fantastik :D

Og jeg har ikke fået DOCTYPE på, da jeg sad og lavede det på min HTC Incredible S ;)

Skriv lige svar. Så har du 90 point ;)
Avatar billede kjeldsted Novice
11. maj 2011 - 20:35 #21
Super :) Bare du husker at tilføje den.

Så så fandt min Firefox desuden to CSS bugs, bare til info:

Advarsel: Forventede farve, men fandt '#green'.  Fejl i fortolkningen af værdien for 'background'.  Erklæring droppet.
Kildefil: http://www.radio.offlines.dk/style.css
Linje: 19

Advarsel: Forventede farve, men fandt '#green'.  Fejl i fortolkningen af værdien for 'background'.  Erklæring droppet.
Kildefil: http://www.radio.offlines.dk/style.css
Linje: 28
Avatar billede berner5300 Nybegynder
11. maj 2011 - 20:41 #22
Kan man ikke skrive green istedet for  farve koden?

Og det skal jeg nok ;)
Avatar billede kjeldsted Novice
11. maj 2011 - 20:48 #23
Nop. Ikke til gyldig CSS.

Hvis du kigger på http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fwww.radio.offlines.dk%2Fstyle.css kan du se de 100% korrekte CSS'tags og values.
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