Live database chatbox
ik ben bezig met een eigen chatbox te maken die alle berichten in een database zet en ze daar zegmaar ook weer uit haalt om te laten zien wat iedereen dus zoal zegt.
nu is het de bedoeling dat dit live gebeurd.
op google zag ik veel mensen zeggen dat dit met ajax moet dus ik heb me daar even in verdiept en kwam hierop uit :
Dit is de javascript die ik gebruik
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
function updateMessage() {
var url="getmessage.php";
jQuery("#MessageElement")<strong class="highlight">.load</strong>(url);
}
<strong class="highlight">setInterval</strong>("updateMessage()", 1000);
</script>
function updateMessage() {
var url="getmessage.php";
jQuery("#MessageElement")<strong class="highlight">.load</strong>(url);
}
<strong class="highlight">setInterval</strong>("updateMessage()", 1000);
</script>
vervolgens de php file die hij steets opent
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_SESSION['Username'])) {
session_start();
include ('mysql.php');
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC");
$resultmessage = mysql_fetch_assoc($getmessage);
$Username = $resultmessage['Username'];
$Message= $resultmessage['Message'];
echo $Username;
echo $Message;
} else {
header("location: ../index.php");
}
?>
if(isset($_SESSION['Username'])) {
session_start();
include ('mysql.php');
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC");
$resultmessage = mysql_fetch_assoc($getmessage);
$Username = $resultmessage['Username'];
$Message= $resultmessage['Message'];
echo $Username;
echo $Message;
} else {
header("location: ../index.php");
}
?>
en dan de html
hij laat alleen niks zien.
misschien relevante informatie is dat ik dynamic pages gebruik dus de file.inc.php files worden in een div ge echo'd op de index.php
Wat is het nut van dit? Je haalt alléén de eerste/laatste er uit.
Code (php)
1
2
3
4
2
3
4
<?php
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC");
$resultmessage = mysql_fetch_assoc($getmessage);
?>
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC");
$resultmessage = mysql_fetch_assoc($getmessage);
?>
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
if(isset($_SESSION['Username'])) {
session_start();
include ('mysql.php');
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC LIMIT 10");
while($resultmessage = mysql_fetch_array($getmessage)) {
$Username = $resultmessage['Username'];
$Message = $resultmessage['Message'];
echo $Username;
echo $Message;
}
} else {
header("location: ../index.php");
}
?>
if(isset($_SESSION['Username'])) {
session_start();
include ('mysql.php');
$getmessage = mysql_query("SELECT * FROM Chatbox ORDER BY Id DESC LIMIT 10");
while($resultmessage = mysql_fetch_array($getmessage)) {
$Username = $resultmessage['Username'];
$Message = $resultmessage['Message'];
echo $Username;
echo $Message;
}
} else {
header("location: ../index.php");
}
?>
$_SESSION['Username'] zal dus niet bestaan want de session is nog niet gestart. Dat wil je pas op de volgende regel doen. Zet session_start() dus helemaal bovenaan in je script.
Code (php)
Waarom nutteloos extra variabelen aanmaken, dat kost alleen maar extra geheugen.
ik hou meestal van een beetje duidelijke declaratie vandaar dat ik he zo neer heb gezet maar wist niet dat zoiets kleins echt zou uitmaken voor het geheugen. ik zal er voortaan om denken.
alleen zit ik nu nog steeds met het probleem dat hij dus niks laat zien.
En zet dit bovenin je script:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
Toevoeging op 13/03/2013 15:36:32:
bovenaan de index.php krijg ik deze 4X
Notice: Constant MYSQL_HOSTNAME already defined in mysql.php
Zorg dat je tijdens het scripten op elke pagina de errors kunt zien.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
define('MYSQL_HOSTNAME', '***');
define('MYSQL_USERNAME', '***');
define('MYSQL_PASSWORD', '***');
define('MYSQL_DATABASE', '***');
//Verbind met de server en kies de juiste database, zo niet weergeef dan een error.
mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD) or die ('MySQL Error: Cannot connect to server');
mysql_select_db(MYSQL_DATABASE) or die ('MySQL Error: Cannot select database');
define('MYSQL_USERNAME', '***');
define('MYSQL_PASSWORD', '***');
define('MYSQL_DATABASE', '***');
//Verbind met de server en kies de juiste database, zo niet weergeef dan een error.
mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD) or die ('MySQL Error: Cannot connect to server');
mysql_select_db(MYSQL_DATABASE) or die ('MySQL Error: Cannot select database');
Toevoeging op 13/03/2013 15:38:31:
heb ik nu. en op elke pagina is de enige error die over de mysql.php en dat is deze hier
Gewijzigd op 13/03/2013 15:38:51 door Niels Peeren
Niels Peeren op 13/03/2013 15:34:05:
bovenaan de index.php krijg ik deze 4X
Notice: Constant MYSQL_HOSTNAME already defined in mysql.php
Notice: Constant MYSQL_HOSTNAME already defined in mysql.php
Dan maak je die dus meerdere keren aan en dat kan niet.
Constant MYSQL_HOSTNAME already defined in mysql.php
Constant MYSQL_USERNAME already defined in mysql.php
Constant MYSQL_PASSWORD already defined in mysql.php
Constant MYSQL_DATABASE already defined in mysql.php
Toevoeging op 13/03/2013 15:44:52:
hij had 4 errors maar niet 4X diezelfde
- SanThe - op 13/03/2013 15:39:55:
Dan maak je die dus meerdere keren aan en dat kan niet.
Antwoord blijft hetzelfde.
maar dat is wel raar want hij wordt in totaal 1X geopend op de hele site en dat is in de index met include_once('mysql.php'); en daarna niet meer. en dat wat ik net linkte is het enige wat er in de mysql.php file staat dus ze worden maar 1X gedefined.
Zit het niet in een loop? En niks in de index?
de index is waar het instaat zegmaar en elke pagina komt dan in de index te staan dus eenmaal daar geopent hoeft het op de rest van de pagina's niet meer. en in een loop staat hij zeker weten niet
Geeft de complete error niet aan waar en op welke regel de fout zit?
dit is de gehele file en hij geeft aan op regel 4/5/6/7.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//MySQL Gegevens
define('MYSQL_HOSTNAME', '***');
define('MYSQL_USERNAME', '***');
define('MYSQL_PASSWORD', '***');
define('MYSQL_DATABASE', '***');
//Verbind met de server en kies de juiste database, zo niet weergeef dan een error.
mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD) or die ('MySQL Error: Cannot connect to server');
mysql_select_db(MYSQL_DATABASE) or die ('MySQL Error: Cannot select database');
?>
//MySQL Gegevens
define('MYSQL_HOSTNAME', '***');
define('MYSQL_USERNAME', '***');
define('MYSQL_PASSWORD', '***');
define('MYSQL_DATABASE', '***');
//Verbind met de server en kies de juiste database, zo niet weergeef dan een error.
mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD) or die ('MySQL Error: Cannot connect to server');
mysql_select_db(MYSQL_DATABASE) or die ('MySQL Error: Cannot select database');
?>
Geef de complete error eens.
Notice: Constant MYSQL_USERNAME already defined in /home/****/domains/serialhacks.com/public_html/phpfiles/mysql.php on line 5
Notice: Constant MYSQL_PASSWORD already defined in /home/****/domains/serialhacks.com/public_html/phpfiles/mysql.php on line 6
Notice: Constant MYSQL_DATABASE already defined in /home/****/domains/serialhacks.com/public_html/phpfiles/mysql.php on line 7
En in welk bestand krijg je deze error, in de index?
Toevoeging op 13/03/2013 16:08:11:
maar ehm ... mijn site ging net ff 20 secondes offline en toen weer online. en nu zijn mijn errors weg ?????
Toevoeging op 13/03/2013 16:08:47:
ohnee daar zijn ze weer