Following database structuur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Giel Cobben

Giel Cobben

24/06/2013 14:20:50
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
+--------+-------+-------+
| ID     |  NAAM | PASS  |
+--------+-------+-------+
|   1    | Bram  | ******|
+--------+-------+-------+
|   2    | Kees  | ******|
+--------+-------+-------+
|   3    | Pim   | ******|
+--------+-------+-------+


Follow:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
+--------+-----------+
|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)
PHP script in nieuw venster Selecteer het PHP script
1
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 } ?>


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
 
PHP hulp

PHP hulp

17/11/2024 17:46:45
 
Erwin H

Erwin H

24/06/2013 14:38:10
Quote Anchor link
Je wil dus voor user X weten welke users hij volgt en daarvan de namen hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT b.naam
FROM follow a
INNER JOIN users b ON a.follow_id = b.id
WHERE a.user_id = X
 
Giel Cobben

Giel Cobben

24/06/2013 15:39:05
Quote Anchor link
Bedankt, dit werkt!
 
John D

John D

24/06/2013 15:45:02
Quote Anchor link
voor wat begrippen betreft: Je hebt maar één database en daarin heb je een tweetal tabellen genaamd users en follow.
 
Giel Cobben

Giel Cobben

24/06/2013 15:50:09
Quote Anchor link
De bovenstaande vraag is gelukt. Na het inloggen laat de pagina enkel de gebruikers zien die de gebruiker volgt. Nu heb ik het script iets uitgebreider gemaakt en heb ik groepen toegevoegd. Onderstaand mijn nieuwe code.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.