Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array mit serialize zu MySQL

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array mit serialize zu MySQL

    Hallo,

    ich habe folgende Funktion geschrieben, welche folgendes bezwecken soll: Ein Nutzer klickt 'zu Favoriten hinzufügen' -> Die ID des Beitrages wird übergeben (für die Zuordnung in MySql) und der Benutzer wird in einem Array in MySql geschrieben. Der Teil funktioniert auch soweit... Komischerweise speichert er nur insgesamt 2 Benutzer in dem besagten Array in der Datenbank und überschreibt nach dem 2 Eintrag den vorherigen... Des Weiteren ist es nicht möglich den Beitrag "zu den Favoriten" hinzufügen wenn die $username = $username ist nur != $username.

    Hoffe konnte das Problem "einigermaßen" beschreiben und hoffe auf Rückmeldung, denke, dass ich einen denkfehler eingebaut habe... bei dem in_array

    PHP-Code:

      
    public static function favorite($id) {
        global 
    $username

        
    $sql mysql_query("select * from post where id = '$id'");
        
    $row mysql_fetch_object($sql);

        
    $output unserialize($row->favorite);

        if(
    $output 0) {
          foreach(
    $output as $value) {
            if(
    in_array($username, array($value))) {
              
    /* Do nothing */
            
    }

            else {
              
    $array = array($value);
              
    $array[] = $username;

              
    $update serialize($array);

              
    mysql_query("update post set favorite = '$update' where id = '$id'");
            }
          }
        }
        
        else {
          
    $array1 = array();
          
    $array1[] = $username;
        
          
    $update1 serialize($array1);
        
          
    mysql_query("update post set favorite = '$update1' where id = '$id'");
        }
      } 

  • #2
    Zitat von heiti Beitrag anzeigen
    Des Weiteren ist es nicht möglich den Beitrag "zu den Favoriten" hinzufügen wenn die $username = $username ist nur != $username.
    Aha.

    Datenbank normalisieren. Pro "Favorit" ein Eintrag.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Kannst du das etwas genauer definieren?
      Was eine Normalisierung ist, ist mir klar, dennoch verstehe ich nicht wie das für dieses Beispiel umzusetzen ist.
      Pro "Favorit" ein Eintrag - sprich $username wird per array in den Datensatz favorite hinzugefügt.

      Kommentar


      • #4
        Du erstellst eine Tabelle Favorit.
        PostID
        UserID (Oder wie auch immer du die User identifizierst)

        Wenn ein Post als Favorit gekennzeichnet wird, machst du also einfach einen insert mit den entsprechenden IDs. Wenn die Kennzeichnung rückgängig gemacht wird, löschst du den Eintrag einfach.
        Dadurch ist die Handhabung sehr viel einfacher, oder besser gesagt, nicht total beschissen. Zudem kannst du auch für nen spezifischen User einfach herausfinden, welche Posts er als Favorit gekennzeichnet hat und nicht nur anders rum.

        Standardtext für die Datenbankverbindung:
        Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
        Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
        Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #5
          Danke, jetzt habe ich es verstanden!

          Kommentar

          Lädt...
          X