laatste bericht uit database halen
ik heb een tut gelezen hier op php hulp maar die doet mij niet veel beter
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
<?php
$sql = mysql_query("SELECT * FROM `[messages]` WHERE `to`='{$data->login}' AND message = "" AND`read`='0'");
$row = mysql_num_rows($sql);
echo 'bericht: '.$row['message'].';
?>
dit is wat ik heb
db tabellen
id IP forwardedFor time from to subject message read inbox outbox avatar
$sql = mysql_query("SELECT * FROM `[messages]` WHERE `to`='{$data->login}' AND message = "" AND`read`='0'");
$row = mysql_num_rows($sql);
echo 'bericht: '.$row['message'].';
?>
dit is wat ik heb
db tabellen
id IP forwardedFor time from to subject message read inbox outbox avatar
Thymen akker op 21/05/2012 16:16:06:
AND message = ""
Dus met andere woorden, je selecteert alleen de berichten waarvan de message leeg is.... en vervolgens print je de message. Wat denk je zelf dat je op je scherm krijgt (hint: het zal niet veel tekst zijn).
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/XXX/domains/XXXX/public_html/new2/messa ook krijg ik die fout
Gewijzigd op 21/05/2012 16:23:02 door thymen akker
http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
P.S. backticks gebruiken om die toch wel te kunnen gebruiken is een zeer slecht lap middel, niet doen dus.
Toevoeging op 21/05/2012 16:25:42:
Thymen akker op 21/05/2012 16:22:22:
hoe krijg ik het dan ik dacht dat als je AND message = "" leeg laat dat hij het dan weer geeft
Als je een lege string echo'd krijg je een lege string te zien, wat anders?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$qry = "SELECT
message,
subject,
read,
to
FROM
[messages]
ORDER BY `time`";
# Als query is gelukt
if( $sql = mysql_query( $qry ) )
{
# Als er items zijn
if( mysql_num_rows( $sql ) > 0 )
{
while( $rec = mysql_fetch_assoc( $sql ) )
{
# Data weergeven
}
}
else
{
echo 'Er zijn geen items gevonden.';
}
}
else
{
echo 'Er is een fout opgetreden met de database.';
}
?>
$qry = "SELECT
message,
subject,
read,
to
FROM
[messages]
ORDER BY `time`";
# Als query is gelukt
if( $sql = mysql_query( $qry ) )
{
# Als er items zijn
if( mysql_num_rows( $sql ) > 0 )
{
while( $rec = mysql_fetch_assoc( $sql ) )
{
# Data weergeven
}
}
else
{
echo 'Er zijn geen items gevonden.';
}
}
else
{
echo 'Er is een fout opgetreden met de database.';
}
?>
maar nu zegt hij Er is een fout opgetreden met de database.
config staat nog steeds goed
Je hebt mijn post over reserved words zeker niet gelezen....
ja wel maar daar begreep ik al helenmaal niets van
from, to en read kan je niet als kolomnamen gebruiken. Zo simpel. Daar moet je dus gewoon andere namen voor bedenken. Voor de complete lijst van woorden die je niet kan gebruiken, check de link.
message,
subject,
read,
to
FROM
[messages]
ORDER BY `time`";
ik doe nu tog:
"SELECTEER" message,subject,read,to, "VAN tabel" [messages] SORTEER OP tijd ?
If you want to check if you have named your table or column with a reserved word here is a script/process that will get you there:
er staat "TO" in maar to is het tabelletje waar het bericht is heen gegaan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--
-- Tabelstructuur voor tabel `[messages]`
--
CREATE TABLE IF NOT EXISTS `[messages]` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`IP` varchar(32) NOT NULL DEFAULT '',
`forwardedFor` varchar(32) DEFAULT NULL,
`time` datetime DEFAULT NULL,
`from` varchar(16) DEFAULT NULL,
`to` varchar(16) DEFAULT NULL,
`subject` varchar(50) NOT NULL DEFAULT '',
`message` text NOT NULL,
`read` int(1) NOT NULL DEFAULT '0',
`inbox` int(1) DEFAULT '1',
`outbox` int(1) DEFAULT '1',
`avatar` varchar(64) NOT NULL DEFAULT 'avatar.jpg',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=681 ;
-- Tabelstructuur voor tabel `[messages]`
--
CREATE TABLE IF NOT EXISTS `[messages]` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`IP` varchar(32) NOT NULL DEFAULT '',
`forwardedFor` varchar(32) DEFAULT NULL,
`time` datetime DEFAULT NULL,
`from` varchar(16) DEFAULT NULL,
`to` varchar(16) DEFAULT NULL,
`subject` varchar(50) NOT NULL DEFAULT '',
`message` text NOT NULL,
`read` int(1) NOT NULL DEFAULT '0',
`inbox` int(1) DEFAULT '1',
`outbox` int(1) DEFAULT '1',
`avatar` varchar(64) NOT NULL DEFAULT 'avatar.jpg',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=681 ;
Gewijzigd op 21/05/2012 16:51:16 door thymen akker
Erwin H op 21/05/2012 16:42:43:
from, to en read kan je niet als kolomnamen gebruiken.
Ik zie to en read nog steeds staan in je query, dus zolang je niets eraan doet gaat het niet werken....
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$qry = "SELECT
message,
subject,
read,
inbox
FROM
`[messages]`
ORDER BY `time`";
# Als query is gelukt
if( $sql = mysql_query( $qry ) )
{
# Als er items zijn
if( mysql_num_rows( $sql ) > 0 )
{
while( $rec = mysql_fetch_assoc( $sql ) )
{
# Data weergeven
}
}
else
{
echo 'Er zijn geen items gevonden.';
}
}
else
{
echo 'Er is een fout opgetreden met de database.';
}
?>
$qry = "SELECT
message,
subject,
read,
inbox
FROM
`[messages]`
ORDER BY `time`";
# Als query is gelukt
if( $sql = mysql_query( $qry ) )
{
# Als er items zijn
if( mysql_num_rows( $sql ) > 0 )
{
while( $rec = mysql_fetch_assoc( $sql ) )
{
# Data weergeven
}
}
else
{
echo 'Er zijn geen items gevonden.';
}
}
else
{
echo 'Er is een fout opgetreden met de database.';
}
?>
zo maar dan krijg ik nog steeds Er is een fout opgetreden met de database.
Aanrader ->http://www.youtube.com/phpacademy
Heel duidelijk te volgen en goede uitleg. Suc6!
Erwin H op 21/05/2012 16:42:43:
Ik zie nog steeds read staan in het SELECT statement. from, to en read kan je niet als kolomnamen gebruiken.
[/quote]
En kies voor echte foutafhandeling. Met een melding 'er is iets fout gegaan' kun je niet zo heel veel. Je wilt, neem ik aan, weten wat er fout is gegaan.