2011-05-16 5 views
6

Ho una forma posta php e un insieme di input:HTML/PHP - valore di ingresso di default

  1. tuo nome
  2. Cognome
  3. My Name

Ogni aspetto di ingresso lo stesso, solo i nomi cambiano:

<input type="text" name="your_name" value="<?php echo get_option('your_name'); ?>" /> 

Come impostare defaul t valori quando value = non è disponibile?

[modifica]

Ok, quindi, di solito mi piacerebbe fare qualcosa di simile:

<input type="text" name="your_name" value="Mike" /> 

Ma in questo caso Ho uno script PHP che prende i dati degli ingressi e li visualizza utilizzando value="<?php echo get_option('your_name'); ?>". Quindi non ho idea di come forzare il mio modulo per visualizzare "Mike" nel mio input.

+4

Non capisco in quali circostanze 'value =' would ** not ** essere disponibile. Puoi chiarire * perché * potrebbe non essere disponibile? –

+0

@David Thomas, ha aggiornato la domanda. – Wordpressor

+0

Ricorda anche di scappare dai personaggi speciali! http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php – Tel

risposta

5

è necessario controllare il ritorno di get_option prima, e sostituire qualcosa se un default non è disponibile

<?php 
    $default = get_option('your_name'); 
    if($default == "") 
    { 
     $default = <whatever your default value is>; 
    } 
?> 
<input type="text" name="your_name" value="<?php echo $default; ?>" /> 

Change get_option per restituire una stringa vuota (o qualcos'altro) se il default non è disponibile.

+0

Puoi usare la mia piccola libreria [ValueResolver] (https://github.com/LapaLabs/ValueResolver) per farlo di più semplicemente –

0

È possibile eseguire un'istruzione di commutazione e impostare il valore predefinito come desiderato.

-2

Impostare alcune variabili all'inizio con le variabili del post.

come

$name_val = ""; 
if(isset($_POST["your_name"]) 
{ 
    $name_val = $_POST["your_name"]; 
} 

<input type="text" name="your_name" value="<?= $name_val?>"> 
+3

C'è un enorme buco XSS in questo. – Quentin

+0

E, per non essere ridicolmente schizzinoso, una linea non terminata di php nell'attributo 'value'. –

+0

@David Thomas, cosa intendi con linea non terminata? –

0

Dal value è il default, basta aggiungere una condizione intorno al vostro get_option -funzione, forse qualcosa di simile:

<input type="text" name="your_name" value="<?php $var = get_option('your_name'); if ($var == '') $var = 'your_default'; echo $var; ?>" /> 
+1

non è la migliore pratica per scrivere tutta la logica all'interno dell'html :) – Teneff

+1

Verissimo, ma stavo solo dimostrando i mezzi per arrivarci. Dovrebbe essere assunto un distacco strutturato dal codice PHP e dall'HTML. – Bjoern

2

È possibile modificare la funzione get_option() essere qualcosa di simile

function get_option($name) { 
    $defaults = array(
     'fist_name' => 'Mike', 
     'fist_name' => 'Wordpressor', 
     'my_name' => 'Dunno' 
    ); 
    // get the value from the $defaults array 
    $val = $defaults[$name]; 

    // but if the same value has already been posted - replace the default one 
    if (isset($_POST[$name])) { 
     $val = $_POST[$name]; 
    } 
    return $val; 
} 
0

Sono d'accordo h Teneff ma vorrei romperlo.

Nel index.php avrei il seguente nella parte superiore del documento

<? 
$defaultText = include 'default_text.php'; 
?> 

in cui i moduli sono sarebbe:

<form method="post" action=""> 
<input id="names"><? echo $defaultText; ?> </input> 
</form> 

allora avrei un file separato su il livello principale chiamato "default_text.php."

<? 
$Name = <<<EOD Name EOD; 
return $Name; 
?> 
0
<input type="text" name="your_name" value="<?php echo empty(get_option('your_name')) ? "TheDefaultValue" : get_option('your_name'); ?>" /> 
0

si potrebbe usare la mia piccola biblioteca ValueResolver in questo caso, ad esempio:

$default = ValueResolver::resolve(get_option('your_name'), '<whatever your default value is>'); 

e non dimenticare di usare namespace use LapaLabs\ValueResolver\Resolver\ValueResolver;

Ci sono anche possibilità di typecasting, ad esempio se il valore della variabile deve essere integer, quindi utilizzare questo:

$id = ValueResolver::toInteger('6 apples', 1); // returns 6 
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value) 

Controllare il docs per ulteriori esempi

0

Questo è come ho risolto questo problema in mio problema che credo sia simile, quando viene letto $ _POST il valore viene popolato dal valore di $ _POST altro definisce un default di Mike

value="<?php if (isset($_POST['name'])) echo $_POST['name']; else echo "Mike"?>" > 

Spero che questo aiuti qualcuno ONEDAY

0

è sufficiente utilizzare un operatore ternario. è abbastanza facile provare questo

$default = 'Mike'; 

$your_name = get_option('your_name'); 

$condition = !empty($your_name) ? $your_name : $default; 

<input type="text" name="your_name" value="<?php echo $condition; ?>" />