Realtime dingen uit mysql halen via php

Status
Niet open voor verdere reacties.

joris345

Gebruiker
Lid geworden
12 jan 2008
Berichten
143
Hallo.

Ik ben bezig met een sms wall, en dat werkt nu goed via mysql en php.
Ik lees de smsjes met php uit via deze code:
PHP:
<?php

try
{
	// include configuration file
	include 'includes/config.php';
	
	// get all messages
	$result = mysql_query("SELECT message FROM " . DB_PREFIX . "smsberichtenbalk ORDER BY id DESC LIMIT 5");
	if(mysql_num_rows($result) > 0)
	{
		// add messages to array
		$messages = array();
		while($row = mysql_fetch_assoc($result))
		{
			$messages[] = htmlspecialchars($row['message']);
		}
		
		// output messages
		echo '<br>' . implode(' </br> ', $messages) . '';
	}
}
catch(Exception $e)
{
	echo $e -> getMessage();
}

?>

Maar als er een nieuw smsje binnekomt gebeurt er niks. Pas als je de pagina herlaad is het nieuwe smsje te zien. Is er een mogelijkheid dat er om de x seconden gekeken wordt of er een nieuw smsje is, en zo ja dat die die dan met een animatie erbijzet. Net zoals de twitter widget. (voorbeeld)

Bedankt voor het medenken!
 
Ik denk dat je hier beter javascript/ajax voor kan gebruiken. In het Javascript/Ajax forum kun je hier waarschijnlijk wel meer over vinden.
 
Laatst bewerkt:
header refrech achter x aantal seconden. maar dan geef je geen bericht in die tussen tijd
 
Da's een beetje een 1980-oplossing.

AJAX is hiervoor prima geschikt.
 
Die nederlanders toch altijd ajax.Maar wat men vergeet is dat er gebruikers zijn zoals ik die 20 browservenster openstaan hebben die stomme ajax scripts elke 10 sec een nieuw plaatje of ect of het een en het ander willen veranderen maakt niet uit wat. dus ajax is gewoon veroudert de server/verbindingen zijn tegenwoordig zo goedkoop dat ajax overbodig wordt (merk op dat het veel eenvoudiger wordt door niet te hoeven weten welk veldje er wel of niet is upgedate) Maar daar zullen velen later wel achterkomen

Je gebruikt enkel ajax voor update van een formveldaanvulling
 
het is niet echt ajax maar meer javascript en als jij 20 browser velden open hebt dan doe je dat zelf..
De webmaster wil gewoon de meest nette oplossing hebben dus zonder overgangsvorm(refresh) de updates laten zien;)
 
Die nederlanders toch altijd ajax.Maar wat men vergeet is dat er gebruikers zijn zoals ik die 20 browservenster openstaan hebben die stomme ajax scripts elke 10 sec een nieuw plaatje of ect of het een en het ander willen veranderen maakt niet uit wat. dus ajax is gewoon veroudert de server/verbindingen zijn tegenwoordig zo goedkoop dat ajax overbodig wordt (merk op dat het veel eenvoudiger wordt door niet te hoeven weten welk veldje er wel of niet is upgedate) Maar daar zullen velen later wel achterkomen

Je gebruikt enkel ajax voor update van een formveldaanvulling

Hou alsjeblieft op met die onzin...
 
Die nederlanders toch altijd ajax.Maar wat men vergeet is dat er gebruikers zijn zoals ik die 20 browservenster openstaan hebben die stomme ajax scripts elke 10 sec een nieuw plaatje of ect of het een en het ander willen veranderen maakt niet uit wat. dus ajax is gewoon veroudert de server/verbindingen zijn tegenwoordig zo goedkoop dat ajax overbodig wordt (merk op dat het veel eenvoudiger wordt door niet te hoeven weten welk veldje er wel of niet is upgedate) Maar daar zullen velen later wel achterkomen

Je gebruikt enkel ajax voor update van een formveldaanvulling

Wat gebruik jij dan voor methode?
 
Die nederlanders toch altijd ajax.Maar wat men vergeet is dat er gebruikers zijn zoals ik die 20 browservenster openstaan hebben die stomme ajax scripts elke 10 sec een nieuw plaatje of ect of het een en het ander willen veranderen maakt niet uit wat. dus ajax is gewoon veroudert de server/verbindingen zijn tegenwoordig zo goedkoop dat ajax overbodig wordt (merk op dat het veel eenvoudiger wordt door niet te hoeven weten welk veldje er wel of niet is upgedate) Maar daar zullen velen later wel achterkomen

Je gebruikt enkel ajax voor update van een formveldaanvulling

Je maakt toch zeker een geintje? Het nut van AJAX heeft 0,0 te maken met de prijs van een internetverbinding (??), een voor de volle 100% met gebruikerservaring. Ik kan me zo na popups en alerts weinig dingen die minder gebruiksvriendelijk zijn dan een constante pagerefresh.

@joris345, negeer alsjeblieft het bericht van kenikavanbis, je schiet daar helemaal niets mee op (o.a. doordat het inhoudelijk incorrect is).
 
dat vermoede ik al maar met een beetje goed programmeur haal je loadtijd van minder of 1sec en ja er zijn er die er in slagen meer of 7 sec over een pagina load te doen en ja dan zie je zwarte schermen en flitst het .Maar ieder zijn mening en ik de mijne.
 
Met Ajax haal je een nog veel hogere snelheid dan die refresh van 1 seconde, aangezien je helemaal niks ziet van de reload. Bovendien is het ook wel prettig dat je filmpje niet ineens stopt met afspelen of je form geleegd wordt omdat de webmaster zo nodig de hele tijd je pagina moet refreshen.

En dat je niet continue naar de bovenkant van een artikel zit te kijken omdat je pagina bij elke refresh terugspringt naar boven.

En zo nog wel een heleboel redenen om voor Ajax te kiezen en niet voor een refresh.
 
Bedankt voor alle reacties:)

Heb de youtube tutorials gekeken. Maar begrijp er niet echt veel van.. Ben pas 14;)

Iemand misschien een werkende code voor me?

Gr, Joris
 
hier heb je wat code van inet waar je wel iets me zal zijn maar weet dat ik niet voor sites ben die allerlei dingen op de achtergrond doen.
Code:
var http;
var browser = navigator.appName;

if ( browser == 'Microsoft Internet Explorer' )
    http = new ActiveXObject("Microsoft.XMLHTTP");
else
    http = new XMLHttpRequest();
function getformserver(){
	http.open('get', 'data.txt');
	http.onreadystatechange = dataHandle;
	http.send(null);
}
function dataHandle() {  
    if ( http.readyState == 4 ) {      
        var response = http.responseText;
        document.getElementById('data').innerHTML = response;
    }
}
function senddata(){
	http.open('post', 'verwerking.php');
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send('veld1=waarde;veld2=waarde');
}
/**
<form id="nav" onsubmit="javascript:getTopic();return false">
    Enter UseBB topic ID:
    <input type="text" name="topic" />
    <input type="submit" value="Get" />
</form>
*/
function getTopic() {
    http.open('get', '../UseBB/topic-'+document.getElementById('nav').topic.value+'.html');
    http.onreadystatechange = dataHandle;
    http.send(null);
}
 
Waarom doe je het zo moeilijk?

Code:
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
   $(document.ready(function() {
       $('#datadiv').load('data.php');
       setInterval(function() {
          $('#datadiv').load(data.php'');
   }
</script>
</head>
<body>
<div id="datadiv">

</div>
</body>

Nu maak je een data.php aan en daar in zet je je mysql verbinding en hoe je de gegevens wilt laten zien.

*)Deze code is niet getest maar gekopieerd van een werkend exemplaar.
 
Waarom doe je het zo moeilijk?

Code:
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
   $(document.ready(function() {
       $('#datadiv').load('data.php');
       setInterval(function() {
          $('#datadiv').load(data.php'');
   }
</script>
</head>
<body>
<div id="datadiv">

</div>
</body>

Nu maak je een data.php aan en daar in zet je je mysql verbinding en hoe je de gegevens wilt laten zien.

*)Deze code is niet getest maar gekopieerd van een werkend exemplaar.

Tnx! Dat werkt! Maar heb nu wel een probleem.. hij haalt dus blijkbaar de html dan van de data.php pagina.. Maar ik moet echt de code hebben. Want de code in de data.php zet voor elk ding wat die uit de database haalt, een <div> tag. En dat is dan weer nodig op de pagina waar het op moet komen. Snappen jullie het nog?


Joris
 
Ja maar je kan data.php toch de div's er voor laten plaatsen? dit is eigenlijk het zelfde als een php include alleen ververst het al die tijd.
 
Ja maar je kan data.php toch de div's er voor laten plaatsen? dit is eigenlijk het zelfde als een php include alleen ververst het al die tijd.
data.php doet dat ook. dit staat er in:
PHP:
<?
mysql_connect ('localhost','user','pass' ); 
mysql_select_db ('db' ); 


$query = "SELECT message,id FROM smsberichtenbalk ORDER BY id DESC LIMIT 5"; 
$uitvoer = mysql_query($query) or die (mysql_error()); 
while($lijst = mysql_fetch_object($uitvoer)) 
{ 
/*WEERGAVE VAN ELK ITEM IN DE LIJST*/ 


echo "<div>$lijst->message</div>"; 
} 

?>
Maar die div tags komen niet door..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan