[PHP] Mysql-Felder-Werte als Text?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von smo_0chy, 23. Dezember 2008 .

Schlagworte:
  1. 23. Dezember 2008
    Mysql-Felder-Werte als Text?

    Guten Morgen

    Sitze grad schon wieder ewig an einem Problem...
    Und zwar würde ich gerne in einer Tabelle alle Werte in einem der Felder als eine art Text zusammenfassen.
    Etwa so:
    ID | Nickname | ...
    1 | ............... | ...
    2 | ............... | ...
    3 | ............... | ...
    4 | ............... | ...
    5 | ............... | ...
    ....
    Und diese IDs dann später als ganzen Text in eine andere Tabelle schreiben...
    etwa so: 1|2|3|4|5...

    Ist das irgentwie möglich?
    Habe es bis jetzt so versucht: (Was aber nicht richtig funktioniert)
    PHP:
    <? php
        $connectionid  
    mysql_connect  ( "localhost" "**********" "**********" );
        if (!
    mysql_select_db  ( "obpe" $connectionid )) {  
            echo 
    "<span class='error'>Keine Verbindung zur Datenbank!</span>" ;
        }
            
    $queryuser  mysql_query ( "SELECT ID FROM 1freunde" );
                if (
    mysql_num_rows  ( $queryuser ) >  0 ) {
                    while (
    $zeileuser  mysql_fetch_array ( $queryuser )) {
                        
    $i ++;
                        
    $userid [ $i ] =  $zeileuser [ 'ID' ];
                    }
                        
    $insert  $userid . '|' //???? :\
                        
    $testsave  mysql_query ( "UPDATE t2guuser SET Freunde = ' $insert ' WHERE ID = '1'" $connectionid );
                            if (
    $testsave  ==  true ) {
                                echo 
    'Passt ;)' ;
                            } else {
                                echo 
    mysql_error ();
                                die();
                                
                            }
                } else {
                    echo 
    'Keine Freunde! ;)' ;
                }
    ?>
    Hoffe jmd kann mir da weiterhelfen oder hat vll sogar einen ganz anderen, bessern Lösungsvorschlag...
    Vielen, vielen Dank schonmal
     
  2. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Morgen,

    1. Ich würde am Anfang "$i=0;" einfügen.
    In der while-Schleife inkrementierst Du das "i", ohne wirklich einen Startwert zu haben. Naja, es könnte ja funktionieren, aber stell Dir vor, später erweiterst Du das Script und setzt anfangs den Wert von "i" auf zB 100.
    Dann hast Du ein Array mit 100 leeren Felder vorne und keinen Peil warum

    2. Die while-Schleife passt nicht wirklich. Erstmal (falls i wirklich 0 ist) beginnst Du beim Arrayindex 1 und nicht bei 0 (da Du zuerst i inkrementierst).
    Dann fügst Du praktisch alle IDs nacheinander ein, aber ohne Trennstriche.
    Dafür willst Du dann bei "insert" eine einzige Pipe setzen, jedoch fügst Du dem Array $userid einen String an oO

    Ich würde dafür implode verwenden.
    Also alle IDs per while in ein Array einlesen und mit zB ...
    PHP:
    $idsImploded  implode ( "|" $userIds );
    ... zusammenführen.
     
  3. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Was möchtest du denn damit erreichen? Möchtest du irgendeine Verknüpfung zwischen Tabellen erstellen?
    Oder möchtest du nur einen besseren Lösungsvorschlag, um dieses Trennzeichen rein zu bekommen?

    Du könntest deine whileschleife auch so aufbauen:

    PHP:
    $i  0

    while(...)
    {
       
    $ids  .=  $zeileuser [ 'ID' ] .  "|" ;
       
    $i ++;
    }
    Dann baust du dir dein String ids zusammen, musst aber vielleicht noch etwas überarbeiten
    Wenn du aber tatsächlich Tabellen verknüpfen möchtest, würde ich mich noch mal ein bisschen mehr mit SQL beschäftigen, Stichwort Normalisierung.

    PS.: if ($testsave == true) kann man auch so schreiben if ($testsave)
     
  4. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Danke soweit an alle, werd das alles mal austesten
    Nunja der Gedanke war das es mehrere Datensätze gibt die unterschiedliche Benutzer beinhalten, ich aber trozdem die Möglichkeit haben wollte bequem diese Benutzerlisten zu editieren...
    So dachte ich das jeder Benutzer eine eigene Tabelle bekommt in der die jeweiligen Benutzer des zu bearbeitenden Datensatzes hineinkommen. So kann er recht schnell und benutzerfreundlich für den Augenblick die Benutzerliste editieren und das Serverseitig und nicht mit spielereien wie javascript etc...(das wollt/will ich nicht)...
    Und wenn er fertig ist wird die editierte Benutzerliste in irgendeiner art und weise abgespeichert, so dass sie aber später jederzeit wieder abgerufen werden könnte und eigenständig die Benutzer in die tabelle zum editieren einfügt.

    Das abrufen und einfügen der BenutzerIDs über die Schreibweise 1|3|... habe ich gelöst in dem ich die einzelnen Zahlen durch das | getrennt in ein array gebe und die restlichen daten wie Nickanem etc aus der usertabelle abrufe... was auch gut funktioniert...
    Aber das Problem ist wie gesagt das abspeichern dieser editierten Benutzerliste in dieser Schreibweise!

    Vll hat jmd ja ne noch besser Idee das oben Erzählte umzusetzten... Ich bin gespannt

    PS: Ja natürlich...ich könnte jedem Datensatz seine eigene Tabelle zuteilen in der die verschiedenen Benutzer aufgelistet sind, aber das is quatsch, da es recht viele Datensätze sind!
     
  5. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Hi,

    ich verstehe Deine Sachlage ehrlich gesagt noch nicht wirklich - bin anscheinend zu blöd ^^.
    Wäre nett, wenn Du das ganze nochmal (evtl an einem Beispiel) erklären würdest.

    Also Du hast eine Tabelle, in dieser sind viele Datensätze - auch von verschiedenen Usern.
    Und Du willst die praktisch "sortieren", sodass nicht alle User durcheinander darin vorkommen?
    (wohl nicht xD)
     
  6. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Nich ganz
    User haben die Möglichkeit Events zu veröffentlichen und diese so zu präsentieren das nur gewisse Benutzer dieses Event sehn dürfen!
    Dh jedes Event bekommt ein Feld mit dem Namen "User". Darin stehen eben diese IDs in einer bestimmten Schreibweise. So kann ich ganz einfach abfragen wer alles dieses Event sehn darf... (WHERE User LIKE "% ID|%") osä!
    Und natürlich kann es passieren das sich etwas ändert und man Benutzer von dieser Liste entfernen oder hinzufügen möchte! Dann lade ich einfach diese IDs in eine eigene Tabelle (die davor logischerweise geleert wurde) und gebe dem Verfasser die Möglichkeit schnell und einfach Benutzer mit einem klick zu entfernen bzw hinzuzufügen... Soweit müsste es ja verständlich sein, hoffe ich!
    Dann wenn er die Auswahl bestätigt werden die IDs der Benutzer in dieser Tabelle wieder in dieser bestimmten Schreibweise abgespeichert, (so dass man sie jederzeit wieder richtig abrufen könnte,) und die tabelle wird wieder geleert, damit eine andere benutzerliste zum späteren editieren eingelesen werden könnte...
     
  7. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Aha, also eine klassische n:m-Relation?
    Viele verschiedene User können in vielen verschiedenen Userprofilen als zugriffsberechtigt eingetragen sein.
    Ich würde, auch wenn es Dir nicht so gefällt, doch eine dritte Tabelle anlegen:


    PHP:
    //table #1 - userProfile

    userId  userName  | < etc >
    -------+----------+---------
    1            Sn0w      foobar
    2            MrX       foobar2
    PHP:
    //table #2 - eventProfile

    eventId  eventName  | < etc >
    --------+-----------+---------
    1           b - day     foobar
    2           x
    - mas     foobar2
    PHP:
    //table #3 - eventAccess

    eventId  userId  ( edit natürlich ID  nicht NAME  ^^)
    --------+----------
    1           1    
    1           2     
    2           1
    In dem Beispiel hätte Sn0w Zugang zu den Profilen von b-day & x-mas, MrX allerdings nur zu b-day.
    Ich denke, soviel Speicher frisst die dritte Tabelle auch nicht - wenn Du die Datentypen richtig anpasst (die eventId mus ja sicher kein Integer bis ~2Mrd sein.
     
  8. 23. Dezember 2008
    AW: Mysql-Felder-Werte als Text?

    Auch ne sehr geile Idee...
    Dank dir Sn0wm4n, muss mir nur überlegen wie ich das am besten umsetzte...!
    Auf der Home-Page werden nämlich verschiedene Events angezeigt...zB die letzten 5 neuen Events etc!
    Und die sind dann natürlich nur sichtbar für die ausgewählten Benutzer!
    Aber danke für den Tipp soweit
    Hast 'ne Bw
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.