Kleine Hilfestellung (array mit DB abgleichen)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Kleine Hilfestellung (array mit DB abgleichen)

Beitrag 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
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag 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?
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Benutzeravatar
Faser
Ehemaliges Teammitglied
Beiträge: 1651
Registriert: 20.09.2001 02:00
Kontaktdaten:

Beitrag 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...
QUADRATDESIGN. Eine runde Sache.
Besuchen Sie unsere Agentur für Webdesign unter http://quadratdesign.de
Antworten

Zurück zu „Coding & Technik“