bassquaeler 0 Posted January 13, 2008 Share Posted January 13, 2008 Hi, bin gerade dabei Checkboxen als Typ für die Userfelder einzubauen. Allerdings steh ich grad mal wieder aufm Schlauch. Ich hab keine Ahnung wie bzw wo bei i|Friends die Post-Variablen aufbereitet und übergeben werden. Da bei den Usereingaben für ein Userfeld mit mehreren Checkboxen ein Array übergeben wird muss ich den ja vorher "Imploden". Bitte um einen kurzen Tip. Danke! - Editiert von k00ni am 26.01.2008, 20:02 - Quote Link to post Share on other sites
k00ni 0 Posted January 13, 2008 Share Posted January 13, 2008 Welche Post-Variablen meinst du? Ich glaube, da wird auch noch eine Anpassung im Backend + die Einführung einer neuen Userfeldart nötig (Tabelle). Grüße Quote Link to post Share on other sites
bassquaeler 0 Posted January 13, 2008 Author Share Posted January 13, 2008 Den Userfeld Typ "Checkbox" hab ich in der Config hinzugefügt und alle Dateien zum Editieren und Anzeigen erweitert. Wird im Prinzip richtig angezeigt, allerdings bring ich den Array der vom Formular gepostet wird nicht in die Tabelle "friends_user_profile_userfields_user" in das Feld "value". Ich müsst ja erstmal ein if(is_array($_POST['checkboxname'])) $checkboxname=implode(', ',$_POST['checkboxname']); auf den Array anwenden bevor er in die Tabelle schreiben wird. Aber wie gesagt, ich bekomms net hin weil ich den Aufbau der Funktionen irgendwie noch net ganz check. Und ich hab auch keine Ahnung wie ich mich verständlicher Ausdrücken soll. :ugly: Quote Link to post Share on other sites
k00ni 0 Posted January 13, 2008 Share Posted January 13, 2008 Komm denn Fehlermeldungen? Poste mal die Stelle, wo du die Behandlung des Arrays hast. Quote Link to post Share on other sites
bassquaeler 0 Posted January 13, 2008 Author Share Posted January 13, 2008 Ne, da kommt keine Fehlermeldung weil ich den Array ja noch nicht behandel. Weiß ja net wo ich den Code dazu einfügen sollte. Und die Funktion die die Formular Werte normal in die Tabelle insertiert schreibt einfach garkeinen Wert in dieses Feld rein. Is ja klar, ein Array wird ja nicht ins Tabellenfeld geschrieben, deswegen müsst ich den erstmal zu nem durch Kommata getrennten Wert implodieren. Quote Link to post Share on other sites
k00ni 0 Posted January 13, 2008 Share Posted January 13, 2008 Also hier wird die Aktualisierung vorgenommen: 0) { while ($A_friends_all_userfields = mysql_fetch_array ($Res_friends_all_userfields)) { if ($_POST [$A_friends_all_userfields ['id']] != '') change_userfield_value ($A_friends_all_userfields ['id'], $_POST [$A_friends_all_userfields ['id']], $user ['id']); } header ('Location: change_extended_user_details.php'); } ?> Zu finden, in der Datei: change_extended_user_details.php. Der Ablauf ist folgender: Es werden alle Userfelder ausgewählt, die vorhanden sind. Dann werden diese Schritt für Schritt durchgegangen. Dann wird geprüft, ob eine übergebene Variable, welche die ID des aktuellen Userfeldes, wo die Schleife gerade ist, ungleich 0 ist. Wenn ja, dann wird der Wert dieser in die Tabelle eingetragen. Und hier musst du ansetzen. Schreibe in die if-Anweisung einfach eine Abfrage, ob der Inhalt ein Array ist. Wenn ja, tu dies mit dem Checkboxen, wenn nicht, dann könnte er es so machen, wie bisher. Ich muss gestehen, dass ich lange Zeit (3 Monate) schon nicht mehr in Friends gewerkelt habe und deshalb auch nicht gleich alles weiß. Quote Link to post Share on other sites
bassquaeler 0 Posted January 13, 2008 Author Share Posted January 13, 2008 Also tatsächlich ist das genau die Stelle an der ich schonmal versucht hab anzusetzen. Irgendwie komm ich trotzdem nicht weiter. Da steht ja überall $A_friends_all_userfields ['id']. Irgendwie is das zu abstrakt für mich grad. Da merkt man halt dass ich kein richtiger Programmierer bin. Bei puser wars damals einfacher das umzusetzen, da hatte jede Variable nen eigenen Namen. Quote Link to post Share on other sites
k00ni 0 Posted January 13, 2008 Share Posted January 13, 2008 Also die ID hat folgenden Zweck. Ich lasse in der Übersicht alle Userfelder nicht per Namen identifizieren und ausgeben, sondern anhand der ID. Schaue dir mal die HTML-Ausgabe der Seite an, wo man die Userfelder als User ändern kann. Wie heißen die einzelnen Userfelder? Da dürfte überall eine Zahl stehen. Und damit kann ich diese Felder besser durchlaufen. Ich könnte auch den Namen nehmen, aber ich hatte damals halt die ID genommen. Was hast du denn bisher probiert? Poste ruhig mal Code. So ohne Code ist mir das auch zu abstrakt und meine Glaskugel ist derzeit in der Reinigung. Quote Link to post Share on other sites
bassquaeler 0 Posted January 13, 2008 Author Share Posted January 13, 2008 Uff, jetz hab ichs endlich. Wenn man noch gewisse Kleinigkeiten übersieht sucht man sich immer nen Wolf. *g* Datei: change_extended_user_details.php // Ermittelt alle Userfelder. $Res_friends_all_userfields = get_all_userfields ($user ['id']); // Aktualisiert ein Userfeld mit dem Wert eines Users. if ($_POST ['I_update'] == 1 AND mysql_num_rows ($Res_friends_all_userfields) > 0) { while ($A_friends_all_userfields = mysql_fetch_array ($Res_friends_all_userfields)) { if(is_array($_POST [$A_friends_all_userfields ['id']])) { change_userfield_value ($A_friends_all_userfields ['id'], implode(', ',$_POST [$A_friends_all_userfields ['id']]), $user ['id']); } elseif ($_POST [$A_friends_all_userfields ['id']] != '') change_userfield_value ($A_friends_all_userfields ['id'], $_POST [$A_friends_all_userfields ['id']], $user ['id']); } header ('Location: change_extended_user_details.php'); } Datei: change_extended_user_details.tpl // Userfeld ist vom Typ Checkbox if ($A_friends_all_userfields ['type'] == 'checkbox') { $A_friends_userfield_values = explode (',', $A_friends_all_userfields['content']); for ($I_counter=0; $I_counter '.$A_friends_userfield_values [$I_counter].''; } else { echo ' '.$A_friends_userfield_values [$I_counter].''; } } } Und eben noch die Config und paar Kleinigkeiten geändert, aber es geht... danke. Quote Link to post Share on other sites
k00ni 0 Posted January 13, 2008 Share Posted January 13, 2008 Kein Problem. Danke für das Posten des Quellcodes. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.