PHPBB: Neues Feld im Profil um Datum in die DB zu schreiben

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Hab hier mal die beiden dateien usercp_register.php/usercp_avatar.php geuppt vieleicht kann ja mal einer reinsehen:

usercp_register.txt

usercp_avatar.txt

Grüße Candy
Ramon

Beitrag von Ramon »

Hi,
du kannst ja mal versuchen vor:
function display_avatar_gallery($mode, &$category, &$user_id, &$email, &$current_email, &$coppa, &$username, &$email, &$new_password, &$cur_password, &$password_confirm, &$icq, &$aim, &$msn, &$yim, &$website, &$location, &$user_flag, &$occupation, &$interests, &$referral, &$signature, &$viewemail, &$notifypm, &$popuppm, &$notifyreply, &$user_away, &$user_away_from, &$attachsig, &$allowhtml, &$allowbbcode, &$allowsmilies, &$hideonline, &$style, &$language, &$timezone, &$dateformat, &$allow_mass_pm, &$custom_rank, &$dstime, &$gender, &$birthday, &$realname)
das einzufügen:
$user_away_from = strtotime ("$y_away-$m_away-$d_away 00:00:00-0000");
vieleicht funktionierts :D

Gruß Ramon
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Danke dir @Ramon aber das habe ich auch schon ausprobiert auch mit date() statt mit strtotime() aber beides geht nicht :(

Grüße Candy
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Hi,
also das problem mit dem das es nichtwieder ausgewählt ist nach dem anschauen hat sich erledigt bleibt nurnoch das problem das schon bevor man was eingestellt hat 1 Januar - ausgewählt ist jemand ne idee? :-?

Grüße Candy
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Sonst keiner ne idee?Wenn ich das entferne unter den Drop Downs:

Code: Alles auswählen

$s_d_first_pc = str_replace("value=\"".date("d","$user_first_pc_from")."\">", "value=\"".date("d","$user_first_pc_from")."\" SELECTED>" ,$s_d_first_pc);
ist nichts vorher ausgewählt aber dann ist auch nichts mehr ausgewählt wenn ich etwas gespeichert habe :( :cry:

Candy
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

ich hab schon mal sowas gemacht... das auch funktionierte und ein bischen schöner aussah... soll ich es mal posten?

ah
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Ja das wäre nett von dir :)

Grüße Candy
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

hmm sonst noch irgendjemand ne idee wie ich das problem lösen kann das nicht schon bevor man irgendwas ausgewählt hat und das gespeichert hat 1 Januar in den Drop Downs im profil ausgewählt ist?

Ich bin für wirklich jede idee dankbar!!!!

Grüße Candy
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

okay code für die ausgabe:
$data['startdate'] ist der ursprüngliche wert aus dem feld... als default würde ich den wert von time(); nehmen

Code: Alles auswählen

				$year = date('Y');
				$startdate = getdate($data['startdate']);
				$startdate_select = '<select name="start_day">';
				for ( $i = 1; $i <= 31; $i++ )
				{
					$selected = ( $startdate['mday'] == $i ) ? ' selected="selected"' : '';
					$null = ( strlen($i) == 1 ) ? '0' : '';
					$startdate_select .= '<option value="' . $i . '"' . $selected . '>' . $null . $i . '</option>';
				}
				$startdate_select .= '</select> ';
				$startdate_select .= '<select name="start_month" onChange="check(this.form.start_day,this,this.form.start_year)">';
				for ( $i = 1; $i <= 12; $i++ )
				{
					$selected = ( $startdate['mon'] == $i ) ? ' selected="selected"' : '';
					$startdate_select .= '<option value="' . $i . '"' . $selected . '>' . $lang['months_long'][$i-1] . '</option>';
				}
				$startdate_select .= '</select> ';
				$startdate_select .= '<select name="start_year" onChange="check(this.form.start_day,this.form.start_month,this)">';
				for ( $i = $startdate['year'] - 1; $i <= $year + 1; $i++ )
				{
					$selected = ( $startdate['year'] == $i ) ? ' selected="selected"' : '';
					$startdate_select .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>';
				}
				$startdate_select .= '</select>';
code für erzeugung des timestamps:

Code: Alles auswählen

$startdate = mktime(0, 0, 0, $HTTP_POST_VARS['start_month'], $HTTP_POST_VARS['start_day'], $HTTP_POST_VARS['start_year']);
und dann solltest du noch folgende javascript am ende der templatedatei einfügen:

Code: Alles auswählen

<script type="text/javascript">
<!-- 
//
// 'Date check function' © 2002 by Saerdnaer <saerdnaer@web.de>
//
function check(field, month, year)
{
	month = month.options[month.selectedIndex].value;
	year = year.options[year.selectedIndex].text;
	switch(month)
	{
		case '4':
		case '6':
		case '9':
		case '11':
			days = 30;
			break;
		case '2':
			if ((year / 4) == Math.floor(year / 4))
			{
				days = 29;
			}
			else
			{
				days = 28;
			}
			break;
		default:
			days = 31;
			break;
	}
	if (days < field.length)
	{
		while (days < field.length)
		{
			field.options[field.length-1] = null;
		
		}
	}
 	else if (days > field.length)
	{
		while (days > field.length)
		{
			field.options[field.length] = new Option (field.length+1);
		}
	}
}
check(document.post.start_day, document.post.start_month, document.post.start_year); 
//-->
</script>
du musst natürlich den name des formulars, die namen der felder und den name der variabeln dementsprechend anpassen...

ah
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Hi,
ich habe es jetzt hinbekommen das nicht schon von Anfang an was ausgewählt ist ( Mit dem von dir geposteten Code @saerdnaer komme ich überhaupt nicht zurecht ) ich habe es auch so umgecodet das man das Jahr in ein eingabfeld selbst angeben muss und hab eine frage dazu wenn ein user jetzt in das eingabefeld 200 eingibt statt z.b. 2003 wird trotzdem ein timestamp in die db eingefügt wie kann ich das verhindern also das wenn $user_first_pc ein falsches Datumsformat enthält eine fehlermeldung angezeigt wird nach dem absenden?

Ich habe es mir mal beim birthday Mod angesehen da wird das so gemacht:

Code: Alles auswählen

if ( $birthday <= strlen($lang['Submit_date_format']) )
{
$error = TRUE;
if( isset($error_msg) )$error_msg .= "<br />";
$error_msg .= $lang['Wrong_birthday_format'];
}
wobei $lang['Submit_date_format'] in der lang_main.php so aussieht:

Code: Alles auswählen

$lang['Submit_date_format'] = 'd-m-Y';
kann ich das bei der von dir geposteten lösung @MisterX genauso machen weil das ist scheinbar in einem anderen Datumsformat:

Code: Alles auswählen

$user_first_pc = strtotime ("$y_first_pc -$m_first_pc -$d_first_pc  00:00:00-0000");
müsst ich dann dafür nur d-m-Y in Y-m-d ändern oder wie?

Grüße Candy
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“