[MySQL] Wert aneinanderreihen



  • Hallo, ich habe in einer tabelle ein feld namens "voter" indem z.b. "user1" steht. Nun benötige ich eine UPDATE-Syntax, die mir in das feld "voter" "user2" reinschreibt, aber das bisherige davor drin lässt. Dazu soll auch noch ein ", " eingefügt werden, sodasss nacher drin steht:

    "user1, user2"

    $db->query("UPDATE bb_polloptions SET voter= [xxx] WHERE ...
    

    Kann mir jemand helfen ?

    Danke und Gruß
    ranger81



  • // DB öffnen, Feld Voter auslesen -> $row['voter']
    // Leere Array erstellen
    $User = array();
    // Feld Voter in Array einlesen
    $User = $unserialize($row['voter']);
    // Neues Arrayelement anhängen - neuer User
    array_push($User,$user2);
    // Wieder zu String umformen
    $StrUser = serialize($User);
    // In die DB schreiben
    


  • vielen dank, aber auf die weise kann ich das leider nicht lösen.

    Eine Anweisung wie z.b. voter=add($user2) würde ich genätigen, da er in mehrere datensätze schreibt, aber voter immer was anderes bereits enthält.



  • Das verstehe ich jetzt nicht, warum du das so nicht lösen kannst ? Kannst du mal ein wenig genauer erklären, was du machen willst, so wie ich es oben gepostet habe, sollte es eigentlich ohne Probleme gehen, denn man hängt ja einfach nur was an, notfalls kann man sich dazu auch noch ne simple Funktion schreiben.



  • Naja also ich versuch ne "who-voted" funktion ins wbb 2.1 zu proggen, das Board aktualisiert standardmäßig die voteanzalhen so:

    $db->query("UPDATE bb".$n."_polloptions SET votes=votes+1 WHERE polloptionid IN ($polloptionsids)");
    

    d.h. er setzt (evtl.) mehrere datensätze anders. aber für jeden datensatz hat ein anderer gevotet, der bisherige eintrag von "voters" ist daher bei jedem anders. Daher komm ich nicht dahinter wie ich das lösen soll mit deinem Codeausschnitt. 😕



  • Ich verstehe deine Frage noch immer nicht ? Füge doch der Tabelle einen weiteren Wert hinzu (TEXT) und schreibe dort dann die Leute rein, die schon abgestimmt haben, also mit serialize() und unserialize() die Array der Benutzer in dieses Feld, verstehe jetzt nicht so recht, warum das nicht klappen sollte ?



  • UPDATE bb_polloptions SET voter=CONCAT(voter,',userx')



  • der sql-gott hat gesprochen 🙂

    vielen dank, genau das hab ich gesucht, funktioniert wunderbar !



  • Für sowas hilft dir immer das Tut. unter www.mysql.de



  • Naja, eigentlich bin ich in SQL nicht so besonders fit :p
    Aber sowas ähnliches hatte vor einiger Zeit schonmal jemand gepostet (also Verwendung des Spaltennamens zur Berechnung direkt im SQL-Befehl) und ich dachte, das würde nicht funktionieren. Da es mich aber interessierte, hab ich's ausprobiert - und siehe da - es funktionierte 😃


Anmelden zum Antworten