Jump to content
Sign in to follow this  
bassquaeler

[Feature angenommen] Userfeld Typ Checkbox

Recommended Posts

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 -

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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ß.

Share this post


Link to post
Share on other sites

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. :-o

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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. :-D

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...