Buddy/Laatste Bezoekers
Dit is de structuur van mijn database waar de gegevens van de leden worden opgeslagen:
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
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
CREATE TABLE `leden` (
`id` smallint(3) NOT NULL auto_increment,
`gebruikersnaam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(255) NOT NULL default '',
`naam` varchar(50) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`woonplaats` varchar(50) NOT NULL default '',
`provincie` varchar(50) NOT NULL default '',
`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`geslacht` varchar(50) NOT NULL default '',
`geaardheid` varchar(50) NOT NULL default '',
`status` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`html` longtext NOT NULL,
`ip` varchar(255) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`bezoekers` mediumint(9) NOT NULL default '0',
`bevestigen` varchar(150) NOT NULL default '0',
`activatiecode` varchar(250) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
`id` smallint(3) NOT NULL auto_increment,
`gebruikersnaam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(255) NOT NULL default '',
`naam` varchar(50) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`woonplaats` varchar(50) NOT NULL default '',
`provincie` varchar(50) NOT NULL default '',
`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`geslacht` varchar(50) NOT NULL default '',
`geaardheid` varchar(50) NOT NULL default '',
`status` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`html` longtext NOT NULL,
`ip` varchar(255) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`bezoekers` mediumint(9) NOT NULL default '0',
`bevestigen` varchar(150) NOT NULL default '0',
`activatiecode` varchar(250) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
( varchar bij `datum_` varchar(50) NOT NULL default '', klopt misschien niet, maar let daar niet op, in de echte database staat hij wel, die kon ik ff niet van mijn server afhalen:) )
Maak even een extra veld van het DATE TIME type aan in deze tabl: last_inlog ofzo waar je elke keer wanneer je inlogd de huidige datum en tijd in gooit.
Dan moet je ook een buddy lijst hebben en een koppel tabel
koppel tabel "user_buddy":
user|buddy
en een "buddy" lijst
id|buddy
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql_ut = "SELECT
ub.user,
ub.buddy,
b.id,
b.buddy,
l.id,
l.gebruikersnaam,
l.last_inlog
FROM
user_buddy AS ub,
buddy AS b,
leden AS l
WHERE
b.id = ub.buddy
AND
ub.user = '".$_SESSION['ID']."'
ORDER BY
l.last_inlog DESC";
?>
$sql_ut = "SELECT
ub.user,
ub.buddy,
b.id,
b.buddy,
l.id,
l.gebruikersnaam,
l.last_inlog
FROM
user_buddy AS ub,
buddy AS b,
leden AS l
WHERE
b.id = ub.buddy
AND
ub.user = '".$_SESSION['ID']."'
ORDER BY
l.last_inlog DESC";
?>
Succes ermee!
Laatste gebruikersnaam (uit tabel leden) die mijn pagina(profiel) bezoekt
Dus,
CREATE TABLE `user_buddy` (
`user` varchar(50) NOT NULL default '',
`buddy` varchar(50) NOT NULL default '',
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `buddy` (
`id` smallint(3) NOT NULL auto_increment,
`buddy` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `leden` (
`last_inlog` DATE TIME NOT NULL default '',
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Maar die code, is alleen om de Buddy`s te weergeven, hoe moet ik dan, aanmelden als buddy, en als ik aanmeld, krijgt degene een bericht, of die mij als buddy wil.
heb je al ervaring met PHP/mysql?
PHP wel MySQL niet
Op dit moment gebruik ik een gewoon in de tabel leden 1 veld, namelijk 'vrienden'.
Daar staan alle id's van de vrienden in. Gescheiden door een komma. Op de pagina zelf explode ik dan dat veld.
Maar dit is niet de ideale oplossing volgens mij, aangezien je dan een erg groot tekstveld krijgt.
Klopt, en een hoop php handelingen. Waarom gebruik je mijn manier niet? gewoon een lijstje met de vrienden van de user ophalen die je dus uit de user-buddy lijst haalt. Zo heb je met zo min mogelijk handelingen het gewenste resultaat!
Ik zal zo even de code posten die ik heb gemaakt
Kan je niet iets met je sessie id doen wanneer je die buddylijst weer gaat geven?
Buddy.php
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
39
40
41
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
39
40
41
<?php if ( isset($_COOKIE['login'])){ ?>
<?php
$query = "SELECT * FROM leden WHERE gebruikersnaam='$login'";
$uitvoer = mysql_query($query) or die (mysql_error());
while($lijst = mysql_fetch_object($uitvoer))
{
?>
<form action="buddy2.php" method="post">
<center>
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<td width="100%">
<textarea rows="15" name="buddy" cols="40"><?php echo"$lijst->buddy"; ?></textarea></td>
</tr>
<tr>
<td width="100%">
<input type="submit" value="Ok" name="submit"></td>
</tr>
</table>
</font></form>
</center>
</td></tr></table>
<?php } ?>
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
<?php
$query = "SELECT * FROM leden WHERE gebruikersnaam='$login'";
$uitvoer = mysql_query($query) or die (mysql_error());
while($lijst = mysql_fetch_object($uitvoer))
{
?>
<form action="buddy2.php" method="post">
<center>
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<td width="100%">
<textarea rows="15" name="buddy" cols="40"><?php echo"$lijst->buddy"; ?></textarea></td>
</tr>
<tr>
<td width="100%">
<input type="submit" value="Ok" name="submit"></td>
</tr>
</table>
</font></form>
</center>
</td></tr></table>
<?php } ?>
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
Buddy2.php
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php if ( isset($_COOKIE['login'])){ ?>
<?php
$buddy = $_POST['buddy'];
$sql = "UPDATE leden SET buddy='$buddy' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
<font face=verdana size=2>Je bent nu buddy
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
<?php
$buddy = $_POST['buddy'];
$sql = "UPDATE leden SET buddy='$buddy' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
<font face=verdana size=2>Je bent nu buddy
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
Moet doen als buddy, en gebruikersnaam appart staan.
P.S. Ik krijg bij de bovenstaande code (buddy.php) deze error:
Gewijzigd op 01/01/1970 01:00:00 door Erkan
:)
:)
Bovenstaande foutmelding geeft aan dat je nog geen verbinding met de database gemaakt hebt, of dat er foute input als database, gebruikersnaam en wachtwoord in staan.
(dit is de gebruikersnaam van de buddy)
De gebruikersnaam die ik daar invul moet wel bestaan, hoe moet ik dat controleren of die bestaat in tabel leden?