Paco: Array in mySQL-Datenbank unserializen und durchsuchen

Hallo allerseits!
Ich bastel an einem kleinen Projektverwaltungstool, dabei werden verschiedene Benutzer verschiedenen Projekten zugewiesen. Ich habe das bisher prinzipell folgendermaßen realisiert:

Ich habe eine Tabelle (dispo) mit den Feldern Projektname, technik, Grafik und eine andere Tabelle mit angelegten Benutzern. Weise ich jetzt beispielsweise mehrere Benutzer dem Bereich technik von Projekt1 zu, so schreibe ich diese alle in ein array, serialize das und schreibe es in die Datenbank.
Soweit funktioniert alles gut und die Ausgabe mache ich mittels

    while ($link = mysql_fetch_object($sql)) {  
        $id = $link->id;  
        $projekt = htmlentities($link -> projekt, ENT_QUOTES, 'UTF-8');  
        $technik_arr = unserialize(($link -> technik));  
        $grafik_arr = unserialize(($link -> grafik));  
  
    echo '<td>' . $projekt . '</td>';  
    echo '<td>' . $technik_arr[0] . '<br />' . $technik_arr[1] . '<br />' . $technik_arr[2] . '<br />' . $technik_arr[3];  
    echo '<td>' . $grafik_arr[0] . '<br />' . $grafik_arr[1] . '<br />' . $grafik_arr[2] . '<br />' . $grafik_arr[3];

So weit so gut, außer natürlich, daß die Anzahl der Array-Felder undynamisch ist, aber das ist jetzt erstmal nicht so schlimm.

Jetzt möchte ich aber das ganze andersrum sortieren. Also nach Benutzer sortiert ausgeben, in welchem Projekt derjenige involviert ist.
Habe gerade einen furchtbaren Knoten im Hirn, wie das hinbekomme in einer Schleife die Arrays nach einem Benutzernamen zu durchsuchen und das jeweilige Projekt auszugeben, noch dazu wo ich die komplette Liste aller möglichen Benutzer ja aus einer anderen Tabelle beziehe.
Ist meine Herangehensweise mit den Arrays eine ziemlich ungeschickte welche? Hat jemand einen kleinen Gedankenanschubs für mich oder eine alternative Herangehensweise?

Wäre extrem dankbar,

Paco

  1. Hallo,

    Ich habe eine Tabelle (dispo) mit den Feldern Projektname, technik, Grafik und eine andere Tabelle mit angelegten Benutzern. Weise ich jetzt beispielsweise mehrere Benutzer dem Bereich technik von Projekt1 zu, so schreibe ich diese alle in ein array, serialize das und schreibe es in die Datenbank.

    warum verwendest Du überhaupt ein relationales Datenbankmanagementsystem?

    Soweit funktioniert alles gut und die Ausgabe mache ich mittels

    [...]

    Jetzt möchte ich aber das ganze andersrum sortieren. Also nach Benutzer sortiert ausgeben, in welchem Projekt derjenige involviert ist.

    sowas gibt Dein [...] (zensiert) Datenbankdesign nicht her. Mit einer normalen n-m-Beziehung und drei Tabellen kriegst Du das kinderleicht mit SQL:

      
    SELECT  
        b.benutzer,  
        p.projekt  
    FROM  
        projekte p  
    INNER JOIN  
        projekt_mitarbeiter pm  
    ON  
       <geeignete Join-Bedingung>  
    INNER JOIN  
        benutzer b  
    ON  
       <geeignete Join-Bedingung>  
    ORDER BY  
       b.benutzer,  
       p.projekt  
    
    

    Ist meine Herangehensweise mit den Arrays eine ziemlich ungeschickte welche?

    Ich kann mir nur wenig schlimmeres vorstellen.

    Hat jemand einen kleinen Gedankenanschubs für mich oder eine alternative Herangehensweise?

    eine angemessene Datenmodellierung sollte zu den nötigen Tabellenstrukturen führen. Der Wikipedia-Artikel Normalisierung (Datenbank) könnte Dir dabei als Ausgangspunkt dienen, zu lernen, wie man mit relationalen Datenbankmanagementsystemen sinnvoll umgeht.

    Freundliche Grüße

    Vinzenz