Profilseite Datenbank Rang abfrage

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Profilseite Datenbank Rang abfrage

    Hallo,
    ich möchte auf meiner Webseite eine Profilseite erstellen.
    Wo einfache Informationen wie UserName,UserRang und noch anderes aus einer Datenbank ausgegeben werden sollen.
    Mein Problem liegt bei dem Rang des Users. Es gibt 6 verschiedene Ränge.
    Der jeweilige Rang des Users wird in der "users" Tabelle zusammen mit den anderen Informationen über den User gespeichert.
    Meine Ränge sind: Leitung, Manager, HeadAdmin, Admin, Mitglied und System-Bot.

    Das ist meine Abfrage, mit der alle Informationen abgerufen werden.

    Source Code

    1. $sql = "SELECT * FROM users";
    2. $db_user_erg= mysqli_query($db_link,$sql);
    3. if ( ! $db_user_erg )
    4. {
    5. die('Ungültige Abfrage: ' . mysqli_error());
    6. }
    7. while ($output = mysqli_fetch_array( $db_user_erg, MYSQL_ASSOC))
    8. {
    9. echo "<li><div id='user_username'>" .$output['username']. "</div></li>";
    10. if($output['rank']==1){
    11. echo "<li><div id='user_rank'>Leitung<img src='./medien/ranks/1.png'></div></li>";
    12. }elseif($output['rank']==2){
    13. echo "<li><div id='user_rank'>Manager<img src='./medien/ranks/2.png'></div></li>";
    14. }elseif($output['rank']==3){
    15. echo "<li><div id='user_rank'>HeadAdmin<img src='./medien/ranks/3.png'></div></li>";
    16. }elseif($output['rank']==4){
    17. echo "<li><div id='user_rank'>Admin<img src='./medien/ranks/4.png'></div></li>";
    18. }elseif($output['rank']==5){
    19. echo "<li><div id='user_rank'>Mitglied<img src='./medien/ranks/5.png'></div></li>";
    20. }elseif($output['rank']==6){
    21. echo "<li><div id='user_rank'>System-Bot<img src='./medien/ranks/6.png'></div></li>";
    22. }
    Display All


    Was ich möchte, dass die verschiedenen Ränge in einer Extra Tabelle gespeichert werden. Mit dem Name und dem Icon.
    Damit, wenn ein neuer Rang hinzukommt es leichter zu ändern ist.
    Nur ich bekomme es nicht hin.

    MfG
    DestinatioN

    ?( ?( ?(

    The post was edited 1 time, last by DestinatioN ().

  • Moinmoin,

    dafür brauchst du JOINS. Hier ein Link zu 'ner gute Einführung von Peter Kropff: peterkropff.de/site/mysql/joins.htm

    Im Prinzip hast du eine Tabelle von Rängen (jeder Range eine unique ID), in der Usertabelle hast du eine Spalte mit der Rang-ID. Anhang der Id, wird dann per Join deinem Resultat die Spalten der Rangtabell hinzugefügt.

    btw. solltest du SELECT * FROM users nicht so verwenden, sondern limitieren (LIMIT 1). Sonst wird der gesamte Inhalt der Tabelle in den RAM kopiert, was bei einer großen Tabelle irgendwand tödlich für deine Anwendung sein kann. ;)


    Gruß
    Arno
  • @Active Record Danke für die schnelle Antwort.
    Ich habe mir das alles mal genau durchgelesen. Aber mit der JOIN Funktion bekomme ich das nicht hin.

    Könnte mir da jemand auf den richtigen Weg/zum richtigen Ansatz helfen?

    Dies sind meine beiden Tabellen
    users:
    idusernamepasswordemailuser_group_id
    1DestinatioN********************
    1
    2DasRick_**********
    **********
    4

    user_groups:
    user_group_iduser_group_nameuser_group_icon_url
    1Leitung./media/ranks/1.png
    2Manager./medien/ranks/2.png
    3HeadAdmin./medien/ranks/3.png
    4Admin./medien/ranks/4.png
    5Mitglied./medien/ranks/5.png
    6System-Bot./medien/ranks/6.png



    Die Ausgabe sollte ca. so aussehen:
    Username, Email, Rank name (Table:"user_groups" > name), Rank Icon (Table:"user_groups" > group_icon_url)
    Rank name und Rank Icon sollen anhand der rank_id in Table: "users" ausgegeben werden, so wie sie in Table: "user_groups" deffiniert sind.

    Danke an jeden der mir hilft.

    The post was edited 1 time, last by DestinatioN ().

  • Ich habe meine beiden Tabellen nocheinmal geändert (siehe Tabellen im letzten Post von mir)

    Durch die Informationsqullen von @bYemma und dem Ansatz von @Active Record habe ich folgenden Code:

    Source Code

    1. $sql2 = "SELECT * FROM users LEFT JOIN user_groups ON users.user_group_id = user_groups.user_group_id";
    2. $db_user_erg2= mysqli_query($db_link,$sql2);
    3. if ( ! $db_user_erg2 )
    4. while ($output2 = mysqli_fetch_array( $db_user_erg2, MYSQL_ASSOC))
    5. {
    6. echo "" .$output2['username']. "";
    7. echo "" .$output2['user_group_id']. "";
    8. echo "<img src=" .$output2['user_group_icon_url']. ">";
    9. }


    Der Code gibt mir so keine Fehlermeldungen mehr aus.
    Allerdings gibt er mir auch keine Informationen, die ich als echo ausgeben möchte.

    The post was edited 5 times, last by DestinatioN ().

  • Wenn ich "var_dump($output2)" in das PHP-Dokument einfüge bekomme ich diesen Error:

    Source Code

    1. Parse error: syntax error, unexpected '$sql2' (T_VARIABLE) in D:\Programme (x86)\XAMPP\htdocs\pages\@test-user.page.php on line 38


    Einen kleinen Fehler habe ich schon gefunden. Bei den echo´s stand $output anstatt $output2
    Funktioniert aber trotzdem nicht

    EDIT://

    Ich habe es geschafft.

    Öffne den Spoiler um mein Endergebnis zu sehen.
    Display Spoiler

    Dies sind meine entgültigen Tabellen.
    users:
    idusernamepasswordemailuser_group_id
    1DestinatioN********************
    1
    2DasRick_**********
    **********
    4

    user_groups:
    user_group_iduser_group_nameuser_group_icon_url
    1Leitung./media/ranks/1.png
    2Manager./medien/ranks/2.png
    3HeadAdmin./medien/ranks/3.png
    4Admin./medien/ranks/4.png
    5Mitglied./medien/ranks/5.png
    6System-Bot./medien/ranks/6.png


    Dies ist meine PHP-Datei zur Ausgabe der Daten.

    Source Code

    1. <?PHP
    2. $sql = "SELECT * FROM users LEFT JOIN user_groups ON users.user_group_id = user_groups.user_group_id LIMIT 1";
    3. $db_ergebnis = mysqli_query($db_link,$sql);
    4. if ( ! $db_ergebnis )
    5. {
    6. die('Ungültige Abfrage: ' . mysqli_error());
    7. }
    8. ?>
    9. <div id="user_page">
    10. <?PHP
    11. while ($output = mysqli_fetch_array( $db_ergebnis, MYSQL_ASSOC))
    12. {
    13. ?>
    14. <div id='user_card'>
    15. <div id="user_info">
    16. <?PHP
    17. echo "<div id='user_avatar'><img src=" .$output['user_avatar_url'] ." alt='user avatar' width='100px' height='100px'></div>";
    18. echo "<li><div id='user_username'>" .$output['username']. "</div></li>";
    19. echo "<li><div id='user_group'>" .$output['user_group_name']. "</div></li>";
    20. ?>
    21. </div>
    22. </div>
    23. <div id='user_contact'>
    24. <?PHP
    25. echo "<div id='user_email'>" .$output['email']. "</div>";
    26. ?>
    27. </div>
    28. </div>
    29. <?PHP
    30. echo "<div id='user_user_signature_url'><img src=" .$output['user_signature_url'] ." alt='user signarue'></div>";
    31. }
    32. ?>
    33. </div>
    Display All


    Danke für die große Hilfe @Active Record und @bYemma.


    The post was edited 2 times, last by DestinatioN ().