Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: [PHP] Inputfeld sperren wenn Wert vorhanden
AUTOR BEITRAG
böse und gehässig

RANG Prophet of Clanintern

#1 - 29.08 19:41

Also ich möchte ein Input Feld (Profil ändern) auf readonly setzen sofern ein Wert eingetragen ist.

Hier der Code aus der entsprechenden PHP Datei

PHP-code:
<?php $design->header();
    
$abf 'SELECT email,wohnort,homepage,dmw,msn,icq,xfire,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) > ) {
      
$row db_fetch_assoc($erg);
        
$tpl = new tpl ('user/profil_edit');
        
$row['staat'] = '<option></option>'.arliste $row['staat'] , get_nationality_array() , $tpl 'staat' );
    
$row['geschlecht0'] = ( $row['geschlecht'] < 'checked' '' );
    
$row['geschlecht1'] = ( $row['geschlecht'] == 'checked' '' );
    
$row['geschlecht2'] = ( $row['geschlecht'] == 'checked' '' );
    if ( 
$row['status'] == ) { $row['status1'] = 'checked'$row['status0'] = ''; } else { $row['status1'] = ''$row['status0'] = 'checked'; }
    if ( 
$row['opt_mail'] == ) { $row['opt_mail1'] = 'checked'$row['opt_mail0'] = ''; } else { $row['opt_mail1'] = ''$row['opt_mail0'] = 'checked'; }
    if ( 
$row['opt_pm'] == ) { $row['opt_pm1'] = 'checked'$row['opt_pm0'] = ''; } else { $row['opt_pm1'] = ''$row['opt_pm0'] = 'checked'; }
    if ( 
$row['opt_pm_popup'] == ) { $row['opt_pm_popup1'] = 'checked'$row['opt_pm_popup0'] = ''; } else { $row['opt_pm_popup1'] = ''$row['opt_pm_popup0'] = 'checked'; }
    if ( 
is_numeric($row['dmw']) ) { $ro ='readonly'; } else { $ro =''; }
    
$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'];    
    
    
$tpl->set_ar_out($row,0);
    if (
$allgAr['forum_avatar_upload']) $tpl->out(1);
    
$tpl->set_ar_out($row,2);
        
profilefields_change $_SESSION['authid'] );
        
$ar = array ( 'ro' => $ro); 
    
$tpl->out(3); ?>




und hier die Zeile in der Template Datei
code:
<label style="float:left; width:35%;">{_lang_dmwid}</label><input style="margin-bottom:2px;" name="dmw" value="{dmw}" {ro} /><br style="clear:both;" />


So, es geht um das Feld DMW und ich weiß das ich das Feld mit is_numeric testen (die DMW ID besteht nur aus Zahlen daher is_numeric) kann.
Nur wie krieg ich es hin das das Input Feld readonly ist sobald etwas eingetragen ist.

Der Hintergrund ist der, das ich dabei bin eine Tunierseite zu erstellen und angemeldete Teilnehmer ihre einmal eingetragene DMW ID nicht ändern können sollen.
Warum? Nun das soll es Cheatern erschweren und Fakeaccounts unterbinden.
vaest´ark // patrick *circle of confusion*

RANG Master of Clanintern

#2 - 30.08 08:58

Nunja, is_numeric gibt auch true zurück, wenn in der Variablen die 0 steht. Du müsstest prüfen, ob
$var > 0 && is_numeric($var) === true

Ansonsten ist is_numeric eigentlich für dich die falsche Funktion, du könntest dir allerdings zu Nutze machen das PHP keine festen Variablentypen kennt.

$var = "string";
echo $var+0;

$var = 4;
echo $var+0;

$var = "5";
echo $var+0;

und dann einfach
if($var > 0)...

Es gibt zwar noch is_int(), aber das erzeugt wieder den Overhead eines Funktionsaufrufs.


<input.... readonly="readonly" />