Seite 1 von 1

Kleine Hilfestellung (array mit DB abgleichen)

Verfasst: 23.10.2003 15:13
von Faser
Hallo allerseits!

Passt jetzt vielleicht nicht ganz hier rein, aber ich poste es trotzdem mal:

Und zwar wollte ich in der phpBB-Administration unter User -> Einstellungen einen Block hinzufügen, indem man die Benutzergruppen für den User mit einfachen Checkboxen markieren kann.

Die Gruppen, denen der User bereits angehört, werden auch markiert und alles wird angezeigt, wie es soll.

Allerdings weiß ich nicht, wie ich die Daten nun wieder in die DB speichern soll.

Ich habe ja jetzt ein Array, indem jeweils nur die ID's der markierten Gruppen enthalten sind (z.B., wenn die Gruppen mit den IDs 1 und 3 markiert sind, steht im Array

Code: Alles auswählen

Array (     [0] => 1     [1] => 3 )
Soweit ist auch alles klar. Jetzt müssen die Daten nur noch in die phpbb_user_group. Die hat die Spalten
group_id | user_id | user_pending
Wie kann ich nun das Array mit der Tabelle abgleichen??

Vielen Dank für Antworten
Faser

Verfasst: 23.10.2003 16:03
von D@ve
Ich würde über eine Schleife die einzelnen Werte in einen query-String schreiben in etwa so:

Code: Alles auswählen

$queryString = "INSERT INTO phpbb_user_group VALUES ";
$data = $deinArray;
$anzahl = count($data);

for($i = 0; $i < $anzahl, $i++)
{
    $queryString .= "(". ($data[$i][0]) . ", " . ($data[$i][1]) . ") ";
}

$queryString .= ";";
$result = mysqlquery($queryString);
Habs jetzt nicht genau überprüft ob das Syntax-mäßig alles stimmt (bin mit Arrays nicht so fit). Vom Prinzip solltes aber funktionieren. Ist zumindestens ein Ansatz...

Gruß, D.VE

Verfasst: 23.10.2003 17:29
von Faser
Joah, allerdings habe ich dann nur die Funktion, wenn der User vorher noch nicht in der Gruppe war...

Was mache ich, wenn ein User in der Gruppe "bleibt", oder wenn er gelöscht werden soll?

Verfasst: 23.10.2003 20:19
von Pyramide
Die unsaubere Lösung wäre, einfach den "duplicate key" Fehler zu ignorieren. Eine bessere Lösung wäre, vor dem Einfügen alle Einträge des Users in der Tabelle zu löschen (so mache ich es in der KB). Eine andere, kompliziertere Möglichkeit wäre, vorher ein Select auszuführen und dann mit PHP-Funktionen wie [php:foreach], [php:in_array], [php:array_diff] oder [php:array_intersect] nur die geänderten Einträge zu löschen/einzufügen.

Verfasst: 23.10.2003 20:22
von Faser
Ja, ich hatte schon mal angefangen mit in_array und Co...

Allerdings stimmt ja: Man kann ja einfach vorher alle Einträge des Users löschen ;-)

Vielen Dank, dann werd' ich jetzt wohl mal weiter machen...