Ankündigung

Einklappen
Keine Ankündigung bisher.

Pinnwannd erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pinnwannd erstellen

    Hallo,

    ich versuche gerade für ein Schulprojekt eine Pinnwand (ähnlich wie bei Facebook) zu erstellen, ich weiß aber leider nicht genau wie ich das machen soll. Ich bekomme jedes mal ein falsches Ergebnis.

    Und zwar möchte ich das, User nur ihre eigenen Pinnwand Beiträge und die von Freunden sehen.

    Meine Datenbanken:

    post ( Hier werden die Pinnwand einträge gespeichert)
    ###################
    id || email || inhalt || datum
    ###################


    friends ( Hier werden die Freundschaften gespeichert)
    ##################################
    id || friends || email_absender || email_empfanger
    ##################################

    ( friends steht für den Status 0 = keine Freunde , 1 = Freundschaftsanfrage, 2 = Freunde, email_absender ist die Person die die Freundschaftsanfrage gestellt hat)

    login ( Hier sind alle Profil Sachen gespeichert)
    ################################
    id || vorname || nachname || email || profilbild
    ################################


    Jetzt weiß ich leider nicht wie ich die Abfrage schreiben muss, ich hoffe ihr könnt mir weiterhelfen

    Mit freundliche Grüßen
    CobraDE


  • #2
    Folgende Abfrage müsste gehen:
    PHP-Code:
    SELECT
        post
    .id,
        
    post.inhalt,
        
    post.email,
        
    post.datum
    FROM login
    INNER JOIN friends 
    AS myFriend ON myFriend.email_absender login.email AND myFriend.friends 2
    INNER JOIN friends 
    AS friendOf ON friendOf.email_empfanger login.email AND friendOf.friends 2
    INNER JOIN post ON post
    .email myFriend.email_empfanger OR post.email friendOf.email_absender
    WHERE login
    .id = %current_user_id
    Die WHERE-Clausel müsste dann die ID des eingeloggten User bekommen. Unschön ist das man das ganze über die Emails verknüpfen muss. Schöner wäre mit ID. Dazu müsstest du aber dein Datenbank-Design änder, denke ich.

    Kommentar


    • #3
      Hallo,

      danke für deine Hilfe , jedoch funktioniert es nicht so wie es soll. Die Pinnwand Beiträge werden den falschen Usern zugewiesen ( siehe Screen).

      post
      http://s1.directupload.net/images/140612/2qp4lcry.png

      friends
      http://s14.directupload.net/images/140612/hgu5wza2.png

      Hier die Pinnwand
      http://s14.directupload.net/images/140612/59ohjwo4.png ( Eigentlich müsste dieser Post von Test User 2 sein )

      und bei Test User 2 sieht die Pinnwand so aus
      http://s7.directupload.net/images/140612/4wh7m28j.png

      eigentlich sollten Freunde auch die Einträge ihrer Freunde sehen.

      Ich hoffe Ihr könnt mir dabei nochmal helfen bzw. ein Tipp geben wie es gehen könnte.

      Mit freundlichen Grüßen
      CobraDE

      Kommentar


      • #4
        Mhhh... ich hab da mal was vorbereitet:

        http://s14.directupload.net/images/140613/w88wiln8.png

        Schauen wir uns das mal an.
        Tabellen-Reihenfolge: login, friends, post, Ergebnis

        Ich habe das ganze getestet mit der ID 2. Also mit dem User, nennen wir in einfach mal "email2".

        "email2" ist befreundet mit "email1" und "email7".

        Im Ergebniss werden alle posts von "email1" und "email7" gelistet. Also alle posts von den Freunden von "email2". So soll es dich sein, oder?

        Kommentar


        • #5
          Ja genau so soll es sein

          Hast du den gleichen Code wie oben benutzt ?

          Kommentar


          • #6
            Na klar, ich schummel nicht!

            Kommentar


            • #7
              Mhhh... bei mir funktionierst immer noch nicht so wie es sollte :/

              könnte das vielleicht an der Ausgabe liegen ?

              Kommentar


              • #8
                Tja, wenn ich jetzt nicht im dunkeln rumstochern soll, denn musst du schon was posten. Funktioniert es denn auf der DB-Ebene?

                Kommentar


                • #9
                  Also so sieht meine PHP Abfrage aus.

                  PHP-Code:
                  $session_email $_SESSION["email"];
                  // email in id umwandeln
                                              
                  $query2 mysql_query("SELECT login.id FROM login WHERE email = '$session_email'");
                  while(
                  $row mysql_fetch_assoc($query2)){
                     
                  $user_id $row['id'];
                  }
                                              
                  $query3 mysql_query("SELECT
                      post.id,
                      post.inhalt,
                      post.email,
                      post.datum,
                      login.*
                      FROM login
                          INNER JOIN friends AS myFriend ON myFriend.email_absender = login.email AND myFriend.friends = 2
                          INNER JOIN friends AS friendOf ON friendOf.email_empfanger = login.email AND friendOf.friends = 2
                      INNER JOIN post ON post.email = myFriend.email_empfanger OR post.email = friendOf.email_absender
                      WHERE login.email = '
                  $user_id'") or die ("MySQL-Error: " mysql_error());    

                      while(
                  $row mysql_fetch_assoc($query3)){
                          
                  $email_post $row['email'];
                          
                  $inhalt $row['inhalt'];
                          
                  $datum $row['datum'];
                          
                  $vorname $row['vorname'];
                          
                  $nachname $row['nachname'];
                          
                  $profilbild $row['profilbild'];
                          
                          
                  // Ausgabe                
                          
                  echo "<div class='well well-sm'>
                                  <div class='post_oben'>
                                      <div class='post_oben_links'>
                                          <img src='
                  {$profilbild}' style='width:100%;height:45px;'></img>
                                      </div>
                                      <div class='post_oben_rechts'>
                                          <a href='profil.php?search=
                  {$email_post}'>{$vorname} {$nachname}</a>
                                          <div id='font_small'>am 
                  {$datum}</div>
                                      </div>
                                          <div class='post_oben_clear'></div>
                                  </div>
                                  <div class='post_unten'>
                                      
                  {$inhalt}
                                  </div>
                              </div>"
                  ;

                      } 
                  Was meinst du mit
                  Funktioniert es denn auf der DB-Ebene?

                  Kommentar


                  • #10
                    In deiner Abfrage da oben, fragst du das Feld "login.email" in der WHERE-Clausel mit dem Parameter "user_id" ab. Das dürfte nicht gehen.
                    Spar dir die Abfrage der ID und frag die Tabelle mit der email ab.

                    Ich meinte, hast du mal die SQL-Anweisung in PHPmyAdmin probiert?

                    Kommentar

                    Lädt...
                    X