Following database structuur
Ik heb 2 databases. Een database met daarin twee tabbellen "users" en "follow". In de tabel "users" staan allerlei gegevens over de gebruikers. Ze kunnen hiermee vervolgens inloggen en andere gebruikers gaan volgen. Wie wie volgt word opgeslagen in de "follow" tabel. Onderstaand een klein voorbeeld:
Users:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
+--------+-------+-------+
| ID | NAAM | PASS |
+--------+-------+-------+
| 1 | Bram | ******|
+--------+-------+-------+
| 2 | Kees | ******|
+--------+-------+-------+
| 3 | Pim | ******|
+--------+-------+-------+
| ID | NAAM | PASS |
+--------+-------+-------+
| 1 | Bram | ******|
+--------+-------+-------+
| 2 | Kees | ******|
+--------+-------+-------+
| 3 | Pim | ******|
+--------+-------+-------+
Follow:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
+--------+-----------+
|USER_ID | FOLLOW_ID |
+--------+-----------+
| 1 | 2 |
+--------+-----------+
| 2 | 1 |
+--------+-----------+
| 1 | 3 |
+--------+-----------+
|USER_ID | FOLLOW_ID |
+--------+-----------+
| 1 | 2 |
+--------+-----------+
| 2 | 1 |
+--------+-----------+
| 1 | 3 |
+--------+-----------+
Zoals je kunt zien volgt Bram (id 1): Kees (id 2) en Pim (id 3). Kees volgt alleen Bram (id 1).
Mijn vraag is nu hoe ik dit uit de database kan halen? Dus als Bram ingelogd is moeten Kees en Pim worden weergegeven. Als Kees ingelogd is moet alleen Bram worden weergegeven. Ik heb iets geprobeerd maar dit laat iedereen zien die gevolgd word.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if(strcmp($_SESSION['uid'],"") == 0){
include "login.php";
}else{
?>
<aside>
<ul id="filters">
<?php
$sql = mysql_query("SELECT * FROM users INNER JOIN follow WHERE users.id = follow.following_id");
while($user = mysql_fetch_assoc($sql)) {
?>
<li><?php echo $user['username']; ?></li>
<?php } ?>
</ul>
</aside>
<?php } ?>
if(strcmp($_SESSION['uid'],"") == 0){
include "login.php";
}else{
?>
<aside>
<ul id="filters">
<?php
$sql = mysql_query("SELECT * FROM users INNER JOIN follow WHERE users.id = follow.following_id");
while($user = mysql_fetch_assoc($sql)) {
?>
<li><?php echo $user['username']; ?></li>
<?php } ?>
</ul>
</aside>
<?php } ?>
Ik hoop dat iemand mij kan helpen. Is iets niet duidelijk dan hoor ik het graag.
Gewijzigd op 24/06/2013 15:49:56 door Giel Cobben
Bedankt, dit werkt!
voor wat begrippen betreft: Je hebt maar één database en daarin heb je een tweetal tabellen genaamd users en follow.
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
42
43
44
45
46
47
48
49
50
51
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
42
43
44
45
46
47
48
49
50
51
<ul id="filters">
<?php
$sidebar = mysql_query("SELECT users.id
, users.username
, users.firstname
, users.surname
, follow.status
, follow.group_id
, groups.id
, groups.name
FROM (
users
INNER
JOIN follow
ON follow.following_id = users.id
)
INNER
JOIN groups
ON follow.group_id = groups.id
WHERE follow.user_id = '".mysql_real_escape_string($_SESSION["uid"])."' ");
while($user = mysql_fetch_assoc($sidebar)) {
$username = $user['username'];
$firstname = $user['firstname'];
$surname = $user['surname'];
$status = $user['status'];
$groupname = $user['name'];
?>
<li>
<div class="name">
<?php
if($firstname != '') {
echo ucwords($firstname) ." ". ucwords($surname);
} else {
echo ucwords($username);
}
?>
</div>
<div class="check">
<?php if($status == "1") { ?>
<input type="checkbox" name="<?php echo $username; ?>" value=".<?php echo ucwords(strtolower($username)); ?>" id="<?php echo $username; ?>" checked="checked" /><label for="<?php echo $username; ?>"><span></span></label>
<?php } else { ?>
<input type="checkbox" name="<?php echo $username; ?>" value=".<?php echo ucwords(strtolower($username)); ?>" id="<?php echo $username; ?>" /><label for="<?php echo $username; ?>"><span></span></label>
<?php } ?>
</div>
</li>
<?php } ?>
</ul>
<?php
$sidebar = mysql_query("SELECT users.id
, users.username
, users.firstname
, users.surname
, follow.status
, follow.group_id
, groups.id
, groups.name
FROM (
users
INNER
JOIN follow
ON follow.following_id = users.id
)
INNER
JOIN groups
ON follow.group_id = groups.id
WHERE follow.user_id = '".mysql_real_escape_string($_SESSION["uid"])."' ");
while($user = mysql_fetch_assoc($sidebar)) {
$username = $user['username'];
$firstname = $user['firstname'];
$surname = $user['surname'];
$status = $user['status'];
$groupname = $user['name'];
?>
<li>
<div class="name">
<?php
if($firstname != '') {
echo ucwords($firstname) ." ". ucwords($surname);
} else {
echo ucwords($username);
}
?>
</div>
<div class="check">
<?php if($status == "1") { ?>
<input type="checkbox" name="<?php echo $username; ?>" value=".<?php echo ucwords(strtolower($username)); ?>" id="<?php echo $username; ?>" checked="checked" /><label for="<?php echo $username; ?>"><span></span></label>
<?php } else { ?>
<input type="checkbox" name="<?php echo $username; ?>" value=".<?php echo ucwords(strtolower($username)); ?>" id="<?php echo $username; ?>" /><label for="<?php echo $username; ?>"><span></span></label>
<?php } ?>
</div>
</li>
<?php } ?>
</ul>
Als je de pagina nu laad, zie ik de gebruikers in een bepaalde groep. Ik weet alleen niet hoe ik de <ul> als groep kan laten zien binnen de while.
Ik hoop dat iemand mij hiermee verder kan helpen.
Gewijzigd op 25/06/2013 11:38:04 door Giel Cobben