Ankündigung

Einklappen
Keine Ankündigung bisher.

PN System

Einklappen

Neue Werbung 2019

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

  • PN System

    Hallöchen,
    ich habe ein Problemchen, ich hätte gerne für meine Homepage ein Pn- Sytem und habe mich im www schon umgesehen, da ich noch am Anfang von php stehe, habe aber da hab ich nichts gutes geschweigedenn brauchbares gefunden.
    Vielleicht könnt ihr mir weiter helfen?
    Wie man so einen Code erstellt oder ihr kennt ein gutes Tutorial?
    Würde mich wirklich sehr über Hilfe freuen.

    LG Baronesse


  • #2
    Hallo!

    Nunja als erstes würde ich mit den Grundlagen PHP und Mysql beginnen. Dann mal ein kleineres bzw. einfacheres Script wie ein Gästebuch Script schreiben. So ein PN-System kann man auf verschiedene Weisen realisieren,das fängt beim Tabellenlayout bzw. der Tabellenanzahl an. Ich mache das mit zwei Tabellen,andere wieder nur mit einer!

    Dir hier was coden wird keiner,aber du kannst damit beginnen zu lernen und wenn bei der Umsetzung Probleme auftauchen dann hier wieder fragen,dann wird dir sicher auch geholfen!
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #3
      Es steht ja schon eniges mit PHP und MySQL^^, die Homepage ist gerade im Umbau, deswegen ist noch nichts online.
      So eine ungefähre Idee habe ich da auch.
      Ich würde das mit eienr Tabelle machen. Habe mich wie gesagt in Sachen Tutorial mal umgesehen, denn ich glaube so ganz alleine bekomme ich das nicht auf die Reihe, so ehlrich bin ich dann schon.
      Hatte mal damit angefangen, aber ich glaube da sind einfach nur Fehler drin und... joa.
      Es funktioniert nicht so wirklich

      Kommentar


      • #4
        Hallo Baronesse,
        Wie sieht deine Ungefäre Idee denn aus ich denke hier kann dir keiner Helfen wenn du uns nichtmal sagen kannst was du gemacht hast (vll. auch Online was zeigen) und was du für Funktionen brauchst. Eine Idee wäre eine Liste mit Funktionen des PN Systems was du selbst kannst und wo du Hilfe brauchst.

        Lg Unbass

        Kommentar


        • #5
          Also, das beste, meiner Ansicht nach ist nur eine MySQL Tabelle.

          mit folgenden Spalten:

          Zielperson Absender Text

          In der zeile Zieperson schreibst du einfach aus einem Formular den Namen der Zielperson rein.

          In der Zeile Absender lässt du den Loginname schreiben, mit den sich der User angemeldet hat.

          In der Zeile Text kommt aben der Text rein.

          So, und dann nur noch die Abfrage.

          Code:
          $loginname= $_SESSION["username"]
          $abfrage = "SELECT zielperson, absender, text FROM pm WHERE zielperson = '$loginname'";
          $ergebnis= mysql_query ($abfrage);
          $row = mysql_fetch_object ($ergebnis);
          Und dann lässt du einfach alle Ergebnisse ausgeben, wo die Zeile Zielperson gleich ist mit dem Loginname.

          Kommentar


          • #6
            Den Loginnamen in der Datei zu speichern ist keine gute Idee. Angenommen der Name wird mal geändert (z.B. durch Admin weil der Name gegen Recht oder Sitte verstößt) dann sind alle Nachrichten AN oder VON ihm "weg".

            Bedeutet du solltest immer nur die UserID speichern. Da diese eindeutig ist und nie geändert wird (zumindest sollte das nie der Fall sein ). Das trägt übrigens zur [WIKI]Normalisierung[/WIKI] der Datenbank bei.

            Also eine Tabelle:
            Code:
            id        int (auto_increment)
            user_id   int
            from_id   int
            time      datetime oder timestamp
            subject   varchar
            text      text
            Also wenn eine Nachricht geschrieben wird musst du den Namen an den geschickt wird in der Datenbank suchen, die UserID vom Empfänger auslesen und dann kannst du die Nachricht speichern. Mit user_id der Empfänger ID, from_id ist die ID vom User der gerade die Nachricht schreibt, der Rest sollte klar sein.

            Zum auslesen kannst du dann alle Nachrichten anzeigen bei dem user_id gleich der ID des Users ist der seine Nachrichten ausliest.

            Kommentar


            • #7
              Naja, ich würde es so machen:
              Code:
              absender_id | empfänger_id | absender_gelöscht | empfänger_gelöscht | betreff | text | datum | (ip)
              IP um bei Drohungen oder sonstigem Strafanzeige stellen zu können
              Natürlich würde ich sie nicht so benennen (vor allem wegen den Umlauten und weil alles deutsch ist =)).

              SilentSight

              PS: Flor1an war wohl schneller xD

              Kommentar


              • #8
                Wofür sind absender_gelöscht bzw. empfänger_gelöscht?

                *edit* ich glaub ich verstehe hat sich geklärt.

                Kommentar


                • #9
                  Ich hatte ja auch die Idee das in einer Tabelle zu machen. Nur hatte ich eben dann Probleme damit das eingang und ausgang zu trennen und auch getrennt löschen zu können. Darum habe ich das dann über zwei Tabellen gelöst,was auch nicht schlimm ist. Viele Wege führen nache Rom!
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  http://www.lit-web.de

                  Kommentar


                  • #10
                    Zitat von Flor1an Beitrag anzeigen
                    Wofür sind absender_gelöscht bzw. empfänger_gelöscht?
                    Na um Nachrichten als gelöscht zu markieren. Wenn ich dir eine Nachricht schreibe und sie aus meinem Postausgang lösche, wird sie sonst auch bei die gelöscht...

                    Zitat von litterauspirna Beitrag anzeigen
                    Ich hatte ja auch die Idee das in einer Tabelle zu machen. Nur hatte ich eben dann Probleme damit das eingang und ausgang zu trennen und auch getrennt löschen zu können. Darum habe ich das dann über zwei Tabellen gelöst,was auch nicht schlimm ist. Viele Wege führen nache Rom!
                    Der Weg mit 2 Tabellen klingt aber nicht wirklich nach einem guten Weg . Da hast du ja alles doppelt gespeichert...
                    Create your own quiz show.

                    Kommentar


                    • #11
                      Naja wo ist das Problem Ein-/Ausgang zu trennen? Eingang musst du UserID mit der EmpfängerID vergleichen, beim Ausgang die UserID mit der AbsenderID. Das getrennte löschen kannst du lösen in dem du zwei Flags in der Tabelle hast. Wie oben schon gesagt empfänger_gelöscht/absender_gelöscht. Wenn jetzt eine Flag gesetzt ist und der andere die Nachricht löscht kannst du sie komplett löschen. Oder halt im System behalten jenachdem.

                      Zwei Tabellen würden doppelten Content verursachen, das verstößt so gesehen gegen DB Normalisierung und ist im hinblick auf das DRY Prinzip auch nicht schön.

                      Kommentar


                      • #12
                        Naja aber ich ahbe dann eine Nachricht in der Tabelle absender und empfenger text. Natürlich in id_s. Wenn ich jetzt einem User eine Nachricht schreibe und die gleich bevor er sie gelesen hat aus meinem Postausgang löschen will dann kann er sie ja nicht lesen weil sie weg ist!

                        Oder ich bin grad zu blöd das richtig nachvollziehen zu können!
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        http://www.lit-web.de

                        Kommentar


                        • #13
                          Nein, du hast folgende Felder:
                          Code:
                          id
                          empfänger_id
                          empfänger_gelöscht
                          absender_id
                          absender_gelöscht
                          betreff
                          text
                          Angenommen du bist User 1, ich bin User 2. Du schickst mir eine Nachricht. Diese wird dann wie folgt gespeichert:
                          Code:
                          empfänger_id = 2 (ich)
                          empfänger_gelöscht = 0
                          absender_id = 1
                          absender_gelöscht = 0
                          Bei dir werden jetzt im Postausgang folgende Nachrichten ausgelesen:
                          Code:
                          SELECT * FROM pn WHERE absender_id = 1 AND absender_gelöscht = 0
                          Wenn du sie löschst setzt du einfach absender_gelöscht = 1, jetzt wird sie bei dir nicht mehr angezeigt.

                          Das gleiche natürlich für den Empfänger.

                          Kommentar


                          • #14
                            Na nun verstehe ich das,man ich Hirnie und ich habe so kompliziert gedacht,wie öfters mal. Danke dir viel mals für die kleine Erklärung,ich mach im Prinzip nur ein Update.

                            Aber da werden ja dann unheimlich viele Datensätze gespeichert.

                            Wenn man dann die Tabelle bereinigen will,macht man das dann zum Beispiel so wenn man bei den Fedlern empfänger_gelöscht und absender glöscht eine 1 hat das diese dann komplett aus der Tabelle gelöscht werden?

                            Wenn das so gehen würde dann programmiere ich mein pn system natürlich noch mal um!

                            Man müsste ja auch noch ein Feld mit rein bringen als gelesen,das es dann wie hier im Forum angezeigt wird wie viele ungelesene PNs man hat!

                            mfg der litter
                            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                            http://www.lit-web.de

                            Kommentar


                            • #15
                              Ja so ein Feld kannst du noch einbauen wenn du möchtest. Das löschen würde ich direkt machen wenn der User die Nachricht löscht.

                              PHP-Code:
                              <?php
                              function delete_message($id$empfaenger true) {
                                  
                              $query "SELECT * FROM pn WHERE id = '$id'";
                                  
                              $result mysql_fetch_assoc(mysql_query($query));
                                  
                              // wenn beide Flags auf 0 sind -> nur updaten
                                  
                              if ($result['empfänger_gelöscht'] == AND $result['absender_gelöscht'] == 0) {
                                      if (
                              $empfaenger$tmp 'empfaenger';
                                      else 
                              $tmp 'absender';        
                                      
                              $query "UPDATE pn SET ".$tmp."_gelöscht = 1 WHERE id = '$id'";
                                      
                              mysql_query($query);
                                      return;
                                  }
                                  
                              // da das andere Flag schon auf 1 ist, kann die Nachricht komplett gelöscht werden
                                  
                              $query "DELETE FROM pn WHERE id = '$id'";
                                  
                              mysql_query($query);
                                  return;
                              }
                              So in etwa könnte das aussehen. Mit ö/ä etc. musst du halt dann aufpassen. Geht hier ja nur um die Theorie. Und beim löschen musst du dann eben angeben ob es sich um den $empfänger oder nicht handelt, also true oder false übergeben.

                              Kommentar

                              Lädt...
                              X