Auto Refresh weer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Maikel  B

Maikel B

03/05/2011 10:09:54
Quote Anchor link
Ik haal uit de XML van buienradar het huidige weer en de verwachting van morgen.
Dit plaats ik in een array en die array die lees ik dan uit en dan laat ik de resultaten zien in mijn project.

Maar nu wil ik dat het stukje waar het weer staat dat die iedere minuut vernieuwd maar zonder de pagina te vernieuwen. Net zoals een javascript klokje zoiets.

Maar ik heb vrij weinig tot geen verstand van javascript.

Is er misschien iemand die mij een beetje op weg kan helpen.

Het gaat om deze code:

<div id='weertitel'>Weer vandaag</div>
<div id='weertekst'>Huidige temp: ".$tempnu."</div>
<div id='weertekst'>Regenval in mm: ".$regenvandaag."</div>

En de php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$nu
= buienradar($settings['weerstation']);
$morgen = buienradar_verwachting();

$tempnu = $nu['TEMPERATUURGC']." °C";
$regenvandaag = $nu['REGENMMPU'];
?>
 
PHP hulp

PHP hulp

20/04/2024 01:09:40
 
Maarten PHP

Maarten PHP

03/05/2011 10:35:11
Quote Anchor link
jQuery
 
Vincent Huisman

Vincent Huisman

03/05/2011 10:35:38
 
Voornaam Achternaam

Voornaam Achternaam

03/05/2011 10:53:13
Quote Anchor link
Beste Maikel,

Door het weer te updaten zonder te pagina te herladen, kan je het beste gebruik maken van Ajax, dit kan heel makkelijk doormiddel van Jquery.

Als je eerst voor je php een apart bestand maakt en deze "binnenhalen.php" noemt en het volgende erin zet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$nu
= buienradar($settings['weerstation']);
$morgen = buienradar_verwachting();

$tempnu = $nu['TEMPERATUURGC']." °C";
$regenvandaag = $nu['REGENMMPU'];
echo $tempnu.'--++--'.$regenvandaag;
?>


Dan zet je in je html bron het volgende voor jquery:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>


Vervolgens zet je het volgende ook in je html bron, voor het inladen van je weer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
$(document).ready(function() {
    function update_weer() {
        $.get("binnenhalen.php", function(data) {
            data = data.split("--++--");
            
            // En nu nu verander je de waarden van het weer
            $("#weertekst").html("Huidig temp: " + data[0]);
            $("#weertekst2").html("Regenval in mm: " + data[1]);
        });
        
        setTimeout(update_weer, 5000); // Om de 5 seconden word het geupdated
    }
    
    update_weer();
});
</script>


Oja en veranderd dit:
<div id='weertitel'>Weer vandaag</div>
<div id='weertekst'>Huidige temp: ".$tempnu."</div>
<div id='weertekst'>Regenval in mm: ".$regenvandaag."</div>
even in dit:
<div id='weertitel'>Weer vandaag</div>
<div id='weertekst'>Huidige temp: ".$tempnu."</div>
<div id='weertekst2'>Regenval in mm: ".$regenvandaag."</div>
Gewijzigd op 03/05/2011 10:54:55 door Voornaam Achternaam
 
Maikel  B

Maikel B

03/05/2011 11:28:19
Quote Anchor link
bedankt :)

ik was net zelf ook aan het zoeken en had het volgende script gevonden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<script language=\"JavaScript\">
        setInterval( \"SANAjax();\", 1000 );

        $(function() {
        SANAjax = function(){

        $('#weer').prepend(\"<div id='weertekst'>Regenval in mm: <b>".rand(1, 10)."</b></div>\").fadeIn(\"slow\");

        }
         });
</script>


alleen deze zet er iedere keer een nieuwe div onder ipv de huidige te vervangen.
Door welke functie moet ik prepend dan vervangen?
Alvast bedankt;)
Gewijzigd op 03/05/2011 11:29:20 door Maikel B
 
Vincent Huisman

Vincent Huisman

03/05/2011 11:53:56
Quote Anchor link
.html();
 
Maikel  B

Maikel B

03/05/2011 12:08:15
Quote Anchor link
dat heb ik nu gedaan maar de rand(1, 10); blijft gewoon op het zelfde getal staan dus hij vernieuwt hem niet :(
 
- Ariën  -
Beheerder

- Ariën -

03/05/2011 13:58:20
Quote Anchor link
Een header meegeven met een verlopen datum. Blijkbaar wordt de output gecached,wat niet handig is bij ajax-calls.
 
Maikel  B

Maikel B

03/05/2011 14:11:32
Quote Anchor link
heb een header eraan meegegeven met een verloopdatum maar hij refresht hem nog steeds niet. Hij kiest een willekeurig getal van 1 tot 10 voor de code die ik er standaard in heb staan en dan gaat ie naar het ajax script en krijgt ie 1x een nieuw getal maar daarna gebeurd er niks meer.
 
Vincent Huisman

Vincent Huisman

03/05/2011 14:16:09
Quote Anchor link
doe eens een alert elke keer dat hij zou moeten refreshen, zie je die dan ook telkens?
 
Maikel  B

Maikel B

03/05/2011 14:24:31
Quote Anchor link
de alert krijg ik wel iedere seconde te zien
 
- Ariën  -
Beheerder

- Ariën -

03/05/2011 14:36:13
Quote Anchor link
Laat je header eens zien?
 
Maikel  B

Maikel B

03/05/2011 14:37:31
Quote Anchor link
Deze heb ik bovenaan de pagina staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
 
Sebastiaan Blaas

Sebastiaan Blaas

03/05/2011 14:41:46
Quote Anchor link
met de .html() vervangt ie inderdaad.. weet je zeker dat je wel nieuwe data binnenkrijgt ? Wat zegt je console ( firefox -> developer toolbar )
 
Maikel  B

Maikel B

03/05/2011 14:45:49
Quote Anchor link
die geeft geen foutmeldingen oid

@sebastiaan hij geeft wel ieder seconde een alert als ik die erbij zet dus hij krijgt gegevens binnen.


dit is mijn code nu:

<div id='weertekst1'>Regenval in mm: <b>".rand(1, 10)."</b></div>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<script language=\"JavaScript\">
        setInterval( \"SANAjax();\", 1000 );

        $(function() {
            SANAjax = function() {
                $('#weertekst1').html(\"<div id='weertekst1'>Regenval in mm: <b>".rand(1, 10)."</b></div>\");
            }
         });
</script>
Gewijzigd op 03/05/2011 14:53:53 door Maikel B
 
Vincent Huisman

Vincent Huisman

03/05/2011 14:54:01
Quote Anchor link
het is ook niet raar dat het niet werkt, de div zal ook wel telkens gerefreshed worden maar het nummer blijft het zelfde omdat de rand niet vernieuwd.

de rand is namelijk php, die php wordt niet vernieuwd. je zult dit in een nieuw bestand oid moeten zetten wil het werken of je moet de javascript rand gebruiken
 
Sebastiaan Blaas

Sebastiaan Blaas

03/05/2011 14:55:02
Quote Anchor link
javascript werkt met "+"
dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$('#weertekst1').html(\"<div id='weertekst1'>Regenval in mm: <b>" + rand(1, 10) + "</b></div>\");
?>


Toevoeging op 03/05/2011 14:55:47:

lol rand had ik zelfs over heen gelezen :)
 
Maikel  B

Maikel B

03/05/2011 15:01:22
Quote Anchor link
oke ik heb het aangepast maar hij laat nog steeds maar 1x een cijfer zien
Gewijzigd op 03/05/2011 15:05:52 door Maikel B
 
Sebastiaan Blaas

Sebastiaan Blaas

03/05/2011 15:09:26
Quote Anchor link
Kan ik het ergens online zien maikel ?
 
Maikel  B

Maikel B

03/05/2011 15:12:38
Quote Anchor link
nee helaas, het draait hier lokaal op ons werk
 
Vincent Huisman

Vincent Huisman

03/05/2011 15:24:56
Quote Anchor link
maak je nu wel gebruik van de javascript random functie?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.