Как сохранить корректные данные в форме

Тема в разделе "PHP", создана пользователем verfaa, 4 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    373
    Симпатии:
    41
    Допустим есть форма со множеством полей. При заполнении полей юзер допустил ошибки при заполнении. Как сохранить корректные данные при повторном выводе формы чтобы юзеру не пришлось заполнять их заново?
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    выводи в значения этих полей уже введенные данные -- или есть какието еще варианты ?


    PHP:
    <input type="text"  name="pole1" value="<?php echo $_POST['pole1'];?>" id="pole1">
    с другими инпутами - по аналогии

    [/php]
     
  3. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    373
    Симпатии:
    41
    Дело в том, что поля у меня описаны внутри функции примерно так:
    Код:
    function sama_forma()
    {
    
    	echo "<form method='post' name='register_form' target='_top'>"; 
    	
    	echo "*Ваше имя: <input name='youname' type='text' size='25' maxlength='30' /> <br /><br />";
    	
    	echo "*Ваш возраст: <input name='vozrast' type='text' size='15' maxlength='15' />";	
    	
    	echo "<input name='hidden' type='hidden' value='i' />";
    	
    	echo "<input name='knopka' type='submit' />";
    	echo "</form>";
    
    }
    
    и применение <?php ?> внутри функции сразу вызывает ошибку.
    Без <?php ?> тоже ошибку выдаёт.

    Ещё один вариант я нашёл в книге "Стивен Хольцнер - PHP в примерах (Включая версию 6)" на 209-й странице, там примерно такой код описан
    Код:
    function sama_forma()
    {
        $you_name = isset ($_REQUEST["youname"]) ?
    	$_REQUEST["youname"] : "";
    	$you_vozrast = isset ($_REQUEST["vozrast"]) ?
    	$_REQUEST["vozrast"] : "";
    	echo "<form method='post' name='register_form' target='_top'>"; 
    	
    	echo "*Ваше имя: <input name='youname' type='text' size='25' maxlength='30' 
    .........
    
    Примерно, т.к. она отсканена в очень плохом качестве, многие символы заменились другими
     
  4. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    Если ты форму выводишь с помощью php изначально, то зачем тебе в ней еще какие-то <? ?
    PHP:
    echo "<input type=\"text\" name=\"pole1\" value=\"".$_POST['pole1']."\" id=\"pole1\">";
     
  5. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    что-то намудрено с кавычками глаз сломаешь
    PHP:
    function sama_forma()
    {
        echo 
    "<form method='post' name='register_form' target='_top'>"
        echo 
    "*Ваше имя: <input name='youname' value='".$_POST['youname']."' type='text' size='25' maxlength='30' /> <br /><br />";
        echo 
    "*Ваш возраст: <input name='vozrast' value='".$_POST['vozrast']."' type='text' size='15' maxlength='15' />";    
        echo 
    "<input name='hidden' type='hidden' value='i' />";
        echo 
    "<input name='knopka' type='submit' />";
        echo 
    "</form>";
    }
     
  6. rushter

    rushter Писатель

    Регистр.:
    7 янв 2009
    Сообщения:
    9
    Симпатии:
    1
    Конкатенация строк тут не к чему.Такой вариант будет работать быстрее.
    PHP:
    function sama_forma() 

        echo 
    "<form method='post' name='register_form' target='_top'>";  
        echo 
    "*Ваше имя: <input name='youname' value='{$_POST['youname']}' type='text' size='25' maxlength='30' /> <br /><br />"
        echo 
    "*Ваш возраст: <input name='vozrast' value='{$_POST['vozrast']}' type='text' size='15' maxlength='15' />";     
        echo 
    "<input name='hidden' type='hidden' value='i' />"
        echo 
    "<input name='knopka' type='submit' />"
        echo 
    "</form>"
     
  7. phantom_nsd

    phantom_nsd Писатель

    Регистр.:
    16 сен 2009
    Сообщения:
    7
    Симпатии:
    1
    Если хотите проверить данные на правильность, то перед выводом функцией echo сделайте соответсвующую валидацию и приведите данные к корректной форме.
    PHP:
    function sama_forma()  
    {   
        
    $age $name '';
        
    //проверка
        
    if(preg_match("/^[\w]+$/i"$_POST['youname'])){
            
    $name $_POST['youname'];
        }
        if(
    preg_match("/^[\d]+$/i"$_POST['vozrast'])){
            
    $age $_POST['vozrast'];
        }
        echo 
    "<form method='post' name='register_form' target='_top'>";   
        echo 
    "*Ваше имя: <input name='youname' value='$age' type='text' size='25' maxlength='30' /> <br />";  
        echo 
    "*Ваш возраст: <input name='vozrast' value='$name' type='text' size='15' maxlength='15' />";      
        echo 
    "<input name='hidden' type='hidden' value='i' />";  
        echo 
    "<input name='knopka' type='submit' />";  
        echo 
    "</form>";  
    }
     
Статус темы:
Закрыта.