ilch Forum » Ilch Clan 1.1 » Allgemein » Geburtsdatum als Auswahlbox

Geschlossen
  1. #1
    User Pic
    Nenolam Mitglied
    Registriert seit
    28.01.2012
    Beitrge
    19
    Beitragswertungen
    0 Beitragspunkte
    Ich habe das Inputfeld für das Geburtsdatum in aufgeteilt in 3 select boxen mit den namen day, month und year.

    <label style="float:left; width:35%;">{_lang_birthday}</label>
    <select style="margin-bottom:2px; width:50px" name="day" />{_list_day@<option%1 value="%2">%3</option>}</select>
    <select style="margin-bottom:2px; width:150px" name="month" />{_list_month@<option%1 value="%2">%3</option>}</select>
    <select style="margin-bottom:2px; width:100px" name="year" />{_list_year@<option%1 value="%2">%3</option>}</select>


    In der dazugehörigen .php habe ich die habe ich folgende Zeilen geschrieben:

    if ( empty ($_POST['submit']) || !$csrfCheck ) {
      $design->header();
    	$abf = 'SELECT email,wohnort,homepage,aim,msn,icq,yahoo,avatar,status,staat,gebdatum,sig,opt_pm_popup,opt_pm,opt_mail,geschlecht,spezrank FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
    	$erg = db_query($abf);
    	if ( db_num_rows($erg) > 0 ) {
    	  $row = db_fetch_assoc($erg);
    
    		$tpl = new tpl ('user/profil_edit');
    		  $t = explode('-',$row['gebdatum']);
    		    $row['day'] = '<option></option>'.arlistee ( $t[0] , set_day() , $tpl , 'day' );
    		    $t['month'] = '<option></option>'.arlistee ( $t[1] , set_month() , $tpl , 'month' );
    		    $row['year'] = '<option></option>'.arlistee ( $t[2] , set_year() , $tpl , 'year' );


    Die Funktionen set_day usw.. sehen so aus:

    function set_year () {
      $ar = array ('' => '',
    		'0000' => '',
    		'2015' => '2015',
    		'2014' => '2014',
    		'2013' => '2013',
    		'2012' => '2012',
    		'2011' => '2011',
                    ...
    		'1951' => '1951',
    		'1950' => '1950'	
    	);
    	return ($ar);
    }


    Weiter unten werden die Werte korrekt in Datenbank übernommen. Habe das auch schon geprüft.

    Mein Problem ist nur das, dass im Auswahlfeld "month" der richtige Monat ausgewählt wird, so wie er in der Datenbank steht und in den Auswahlfeldern "day" und "year" immer neu eingetragen werden muss.

    Sprich die Ausgabe für die beiden Felder passt nicht. Kann das am "$t = explode" liegen?


    verwendete ilch Version: 1.1 P
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beitrge
    7.509
    Beitragswertungen
    1165 Beitragspunkte
    Warum hast Du $row['day'], $row['year'] aber $t['month'] ... wie werden diese Variablen an das Template übergeben?

    Noch ein kleiner Tip bzw. Vereinfachung, damit nicht ellenlange Listen für die Arrays geschrieben werden müssen:

    function set_day () {
    	$arDay = array_combine(range(1,31),range(1,31));
    	return ($arDay);
    }
    
    function set_month () {
    	$arMonth = array_combine(range(1,12),range(1,12));
    	return ($arMonth);
    }
    
    function set_year () {
    	$firstYear = 1950;
    	$aktYear = date("Y");
    	$arYear = array_combine(range($firstYear,$aktYear),range($firstYear,$aktYear));
        return ($arYear);
    }
    rules :: doku :: faq :: linkus
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Nenolam Mitglied
    Registriert seit
    28.01.2012
    Beitrge
    19
    Beitragswertungen
    0 Beitragspunkte
    Verzeihung ich beim Erstellen des Threads noch was probiert daher $t['month'].
    Heist eigendlich auch $row['month'].

    Bei set_month habe ich die Monate als Titel ins Array geschrieben nicht als Werte.

    Die Variablen werden übergeben. Sprich ich kann in den Auswahlboxen die Inhalte der einzelnen Arrays auswählen und in die Datenbank übertragen.

    Nur in der Ausgabe wird mir nur der Monat im der Auswahlbox für den Monat angezeigt.

    z.B. Habe ich zuvor das Datum 21.Juli.1974 ausgewählt, wird in die Datenbank 1974-07-21 eingetragen. Bei der Ausgabe wird in row['day'] nix angezeigt, in row[month] wird Juli angezeigt und in row[year] wird nix angezeigt.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beitrge
    7.509
    Beitragswertungen
    1165 Beitragspunkte
    Das Geburtstagsformat ist YYYY-MM-DD somit ist $t[0] = Jahr, $t[1] = Monat und $t[2] = Tag. Das müsstest Du tauschen!
    rules :: doku :: faq :: linkus
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Nenolam Mitglied
    Registriert seit
    28.01.2012
    Beitrge
    19
    Beitragswertungen
    0 Beitragspunkte
    Mensch du bist super zwinker
    Wollte eben schreiben dass es mir aufgefallen damit ich die beiden Werte vertauscht habe.

    Wirklich ärgerlich rätsel schon seit knapp 1 Stunde was ich falsch mache.

    Vielen Dank für deine Unterstützung und den Tip hab deine Funktionen für Tag und Jahr übernommen.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beitrge
    7.509
    Beitragswertungen
    1165 Beitragspunkte
    Mir ist es auch erst nach dem dritten Mal Code durchsuchen aufgefallen. lcheln
    Schön das es nun funktioniert.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    DonnyBresko Mitglied
    Registriert seit
    10.01.2014
    Beitrge
    30
    Beitragswertungen
    1 Beitragspunkte
    Find ich super lcheln sollte man vlt als download zur verfügung stellen lachen

    mal schauen ob ich das hin bekommen lcheln
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    DonnyBresko Mitglied
    Registriert seit
    10.01.2014
    Beitrge
    30
    Beitragswertungen
    1 Beitragspunkte
    Ich würde das Thema gerne nochmal aufgreifen.

    habe es jetzt einigermasen hin bekommen das es soweit alles ohne fehler funkioniert.

    Aber wenn ich im Profil Edit das Datum auswähle und speichere wird dieses nicht im eigentlichem Profil angezeigt.

    Keine Ahnung Warum ?! grumml


    Hier sind erstmal die Relevanten bereiche meines Codes:

    profil_edit.php:
    defined ('main') or die ( 'no direct access' );
    
    
    $title = $allgAr['title'].' :: Users :: Profil';
    $hmenu  = $extented_forum_menu.'<a class="smalfont" href="?user">Users</a><b> &raquo; </b> Profil'.$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1);
    
    <!-- ################### -->
    <!-- Beginn der funktion -->
    <!-- ################### -->
    
    function set_day () {
        $arDay = array_combine(range(1,31),range(1,31));
        return ($arDay);
    }
     
    function set_month () {
        $arMonth = array_combine(range(1,12),range(1,12));
        return ($arMonth);
    }
     
    function set_year () {
        $firstYear = 1950;
        $aktYear = date("Y");
        $arYear = array_combine(range($firstYear,$aktYear),range($firstYear,$aktYear));
        return ($arYear);
    }
    
    <!-- ################# -->
    <!-- Ende der funktion -->
    <!-- ################# -->
    
    if ( $_SESSION['authright'] <= -1 ) {
    
        $csrfCheck = chk_antispam('user_profile_edit', true);
        
    if ( empty ($_POST['submit']) || !$csrfCheck ) {
      $design->header();
    	$abf = 'SELECT email,wohnort,homepage,aim,msn,icq,yahoo,avatar,status,staat,gebdatum,sig,opt_pm_popup,opt_pm,opt_mail,geschlecht,spezrank FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
    	$erg = db_query($abf);
    	if ( db_num_rows($erg) > 0 ) {
    	  $row = db_fetch_assoc($erg);
    
    		$tpl = new tpl ('user/profil_edit');
    
    <!-- #################### -->
    <!-- Beginn der Variablen -->
    <!-- #################### -->
    
    		$t = explode('-',$row['gebdatum']);
    			$row['year'] = '<option></option>'.arlistee ( $t[0] , set_year() , $tpl , 'year' );
    			$row['month'] = '<option></option>'.arlistee ( $t[1] , set_month() , $tpl , 'month' );
                $row['day'] = '<option></option>'.arlistee ( $t[2] , set_day() , $tpl , 'day' );
                
    <!-- ################## -->
    <!-- Ende der Variablen -->
    <!-- ################## -->
    
    
    		$row['staat'] = '<option></option>'.arliste ( $row['staat'] , get_nationality_array() , $tpl , 'staat' );
        $row['geschlecht0'] = ( $row['geschlecht'] < 1 ? 'checked' : '' );
        $row['geschlecht1'] = ( $row['geschlecht'] == 1 ? 'checked' : '' );
        $row['geschlecht2'] = ( $row['geschlecht'] == 2 ? 'checked' : '' );
        if ( $row['status'] == 1 ) { $row['status1'] = 'checked'; $row['status0'] = ''; } else { $row['status1'] = ''; $row['status0'] = 'checked'; }
        if ( $row['opt_mail'] == 1 ) { $row['opt_mail1'] = 'checked'; $row['opt_mail0'] = ''; } else { $row['opt_mail1'] = ''; $row['opt_mail0'] = 'checked'; }
        if ( $row['opt_pm'] == 1 ) { $row['opt_pm1'] = 'checked'; $row['opt_pm0'] = ''; } else { $row['opt_pm1'] = ''; $row['opt_pm0'] = 'checked'; }
        if ( $row['opt_pm_popup'] == 1 ) { $row['opt_pm_popup1'] = 'checked'; $row['opt_pm_popup0'] = ''; } else { $row['opt_pm_popup1'] = ''; $row['opt_pm_popup0'] = 'checked'; }
    
        $row['avatarbild'] = ( file_exists ( $row['avatar'] ) ? '<img src="'.$row['avatar'].'" alt=""><br />' : '' );
        $row['Fabreite'] = $allgAr['Fabreite'];
        $row['Fahohe'] = $allgAr['Fahohe'];
        $row['Fasize'] = $allgAr['Fasize'];
        $row['forum_max_sig'] = $allgAr['forum_max_sig'];
        $row['uid'] = $_SESSION['authid'];
        $row['forum_usergallery'] = $allgAr['forum_usergallery'];
        $row['antispam'] = get_antispam('user_profile_edit', 0, true);
        $tpl->set_ar_out($row,0);
        if ($allgAr['forum_avatar_upload']) $tpl->out(1);
        $tpl->set_ar_out($row,2);
    		profilefields_change ( $_SESSION['authid'] );
    		$tpl->out(3);
    
      } else {
        $tpl = new tpl ( 'user/login.htm' );
        $tpl->set_out('WDLINK','index.php',0);
    	}
    
    } elseif ($csrfCheck) {  # submit


    und hier meine profil_edit.htm:
    <tr class="Cmite">
                            <td width="100" align="left" valign="middle">
                              <img src="include/images/icons/flag_green.png" width="16" height="16" alt="" align="left"> 
                              <strong>{_lang_state}</strong>
                            </td>
                            <td align="left" valign="top">
                              <select  name="staat">{_list_staat@<option%1 value="%2">%3</option>}</select>
                            </td>
                          </tr>
    					  
    					  <!-- Start gnderter Bereich -->
    					  
    					  <tr class="Cnorm">
                            <td width="100" align="left" valign="middle">
                              <img src="include/images/icons/cake.png" width="16" height="16" alt="" align="left"> 
                              <strong>{_lang_birthday}</strong>
                            </td>
                            <td align="left" valign="top">
    						  <select style="margin-bottom:2px; width:75px" name="year" />{_list_year@<option%1 value="%2">%3</option>}</select>
    						  <select style="margin-bottom:2px; width:75px" name="month" />{_list_month@<option%1 value="%2">%3</option>}</select>
                              <select style="margin-bottom:2px; width:50px" name="day" />{_list_day@<option%1 value="%2">%3</option>}</select>
                            </td>
                          </tr>
    					  
    					  <!-- Ende gnderter Bereich -->
    					  
                          <tr class="Cnorm">
                            <td width="100" align="left" valign="middle">
                              <img src="include/images/icons/vcard.png" width="16" height="16" alt="" align="left"> 
                              <strong>{_lang_sex}</strong>
                            </td>


    Ich wäre euch sehr verbunden wenn Ihr mir sagen könntet wo hier mein fehler liegt.

    Wie gesagt:
    Auswahlboxen werden angezeigt und die Variablen aus der php können auch ausgewählt werden, werden danach nur nicht übernommen.

    Keine Fehlermeldung

    Danke für eure hilfe.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurck zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten