Refreshen van query.
ik ben laatst begonnen aan een nieuw leuk projectje.
voordat ik over het probleem begin zal ik eerst uitleggen wat het uberhaupt inhoud.
het is dus een website waar men iets kan invoeren wat dan naar de DB gestuurd word en beland op de website
wat de illustratie heeft van een berg.
als iemand iets invoerd op de website word de oude zin verwijderd.
Maar, als iemand iets invoert moet iedereen alles eerst refreshen.
is er een marnier om een div of misschien een query elke 5 of 10 seconden te herhalen?
(zonder de heele pagina te refreshen)
dit is de division waar het om gaat.
<div id="king" class="THREEdee">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
include 'connect.php';
if($_POST['submit']) {
$message = filter_var($_POST['messageInput'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
if(!mysql_query("INSERT INTO Data(message) VALUES('$message')")) {
echo mysql_query();
exit();
}
}
$message = mysql_query("SELECT message FROM Data ORDER BY id DESC");
$messageArray = mysql_fetch_assoc($message);
echo $messageArray['message'];
mysql_close($con);
?>
include 'connect.php';
if($_POST['submit']) {
$message = filter_var($_POST['messageInput'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
if(!mysql_query("INSERT INTO Data(message) VALUES('$message')")) {
echo mysql_query();
exit();
}
}
$message = mysql_query("SELECT message FROM Data ORDER BY id DESC");
$messageArray = mysql_fetch_assoc($message);
echo $messageArray['message'];
mysql_close($con);
?>
dit is het FORM.
<div id="inputDiv">
<form id="form" action="index.php" method="post">
<input type="text" maxlength="40" name="messageInput" /><br/>
<input id="submit" type="submit" name="submit" value="Conquer the hill~!"/>
</form>
</div>
alvast bedankt!
Gewijzigd op 03/04/2013 11:11:46 door Bob Desaunois
Wat jij wil kan, dit houd wel in dat je de pagina steeds in zal moeten laden met Ajax.
Vervolgens kan je een setInterval gebruiken om steeds opnieuw de ajax call te doen.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<body onload="JavaScript:timedRefresh(2000);">
function timedRefresh(timeoutPeriod)
{
setTimeout(\"location.reload(true);\",timeoutPeriod);
}
function timedRefresh(timeoutPeriod)
{
setTimeout(\"location.reload(true);\",timeoutPeriod);
}
Je moet alleen de pagina helemaal refreshen. In een div werkt dit volgens mij niet.
Je zal het zoals dit moeten doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<div id="hierdataladen"></div>
<script>
setInterval(function(){
$.ajax({
url: '< hier je url >',
success: function(data){
$("#hierdataladen").html(data)
}
})
},7500); /* Gebeurt elke 7,5 seconden */
</script>
<script>
setInterval(function(){
$.ajax({
url: '< hier je url >',
success: function(data){
$("#hierdataladen").html(data)
}
})
},7500); /* Gebeurt elke 7,5 seconden */
</script>
heb het nit getest overigens!
En ik ga er van uit dat je jQuery gebruikt.
Bedankt voor de hulp, nu kan ik weer verder met mijn kunstwerk, haha
Nogmaals bedankt!
Bob Desaunois.
Graag gedaan en succes verder!
Hij werkt ongeveer, als ik iets invoer dan refresht inderdaad de Division.
dit is de code at the moment;
setInterval(function(){
$.ajax({
url: 'index.php',
success: function(data){
$("#king").html(data);
}
});
},7500); /* Gebeurt elke 7,5 seconden */
er is alleen een klein probleempje.
en dat is vrijwel makkelijk te zien op de volgende screenshots.
Hier is de site net geopened.
https://dl.dropbox.com/u/50042261/probleem/lijktGoed.png
en hier word het refresh script uitgevoerd via Ajax.
https://dl.dropbox.com/u/50042261/probleem/maarNee.png
Het lijkt alsof hij de website nogmaals aanmaakt in de division.
heeft iemand een idee hoe dit te fixen valt?
alvast (alweer) bedankt!
bob dat klopt, je doet een ajax call op index.php je moet een appart php bestand maken, en hierin ALLEEN zetten wat je in de #king div wilt hebben!
ik heb het veranderd en het werkt nu perfect :)
Nogmaals bedankt!