2013-05-23 4 views
0

Я пытаюсь предварительно заполнить свои значения формы переменными, проходящими через URL. Я пробовал много разных решений, иногда я не получаю ошибку, переменная просто не делает объявиться. Любая помощь приветствуется, спасибо!PHP GET Variable в HTML-форме

URL Пример: website.com/?firstname=john

Код:

<html> 

<script type="text/javascript"> 
    function writeform(){ 
     selobj = document.getElementById('selform'); 
     newobj = document.getElementById('newform'); 
     p = document.getElementById('menu').selectedIndex + 1; 
     a = document.getElementById('menu2').selectedIndex + 1; 
     if((p < 14 && (a == 1 || a == 2 || a == 3 ||a == 4)) { // write the 1st form 
     txt = 'Person 1: '+'<input type="text"/><br/>'; 
     txt += 'Person 2: '+'<input type="text"/>'; 
     } else { 
      document.getElementById('div1').style.display='block'; 
     } 
     // if(p==2 && a==1){ // write the 2nd form 
     // txt ='Name: '+'<input type="text"/><br/>'; 
     // txt+='Addr: '+'<input type="text"/>';} 
     newobj.innerHTML=txt;selobj.style.display='block'; 
    } 
</script> 

<div style="width: 400px; float:left;"> <?php echo $_GET["firstname"]; ?></div> 
<div style="width: 400px; float: left;"> <!-- Primary Div--> 

    <p style="font-size: 16px; font-weight: bold;">Select Something</p> 
    <div class="fancy3"> 
     <table style="width:350px; height=350px"> 
     <tr> 
      <td> 
       <select id="menu" size="14"> 
        <option selected="selected"><b>--- Common Options ---</b></option> 
        <option></option> //NY 
       </select> 
       <br/> 
       <p style="font-size: 16px; font-weight: bold;">Range</p> 
       <div class="fancy3"> 
        <table style="width:350px; height=350px"> 
         <tr> 
          <td> 
           <select id="menu2" size="4"> 
            <option selected="selected">1</option> 
            <option>2</option> 
            <option>3</option> 
            <option>4</option> 
           </select> 
           <br/> 
          </td> 
          <td> 
           <div id="selform" style="display:none"> 
            <fieldset> 
             <div id="newform"></div> 
            </fieldset> 
           </div> 
          </td> 
         </tr> 
        </table> 
       </div> 
       <br/> 
       <button onclick="writeform();">Search</button></td> 
       <td> 
        <div id="selform" style="display:none"> 
         <fieldset> 
          <div id="newform"></div> 
         </fieldset> 
        </div> 
       </td> 
      </tr> 
     </table> 
    </div> 

</div> <!-- Primary Div closing tag--> 


<!-- of Field-Specific Forms--> 
<div id="div1" style="display:none;"> 

    <form action="http://site1.com/upload" method="get"> 
     First Name: <input name="fname" type="text" value="" /> 
     Last Name: <input name="lname" type="text" /> 
     Address: <input name="address" type="text" /> 
     Zip Code: <input name="zip" type="text" /> 
     State: <input name="state" type="text" /> 
     <input type="submit" /> 
    </form> 
</div> 

<div id="div1" style="display:none;"> 

    <?php 
     $firstname = $_GET["firstname"]; 
    ?> 

    <form action="http://site1.com/upload" method="get"> 
     First Name: <input name="fname" type="text" value="<?php $firstname = $_GET["firstname"]; echo "$firstname"; ?>" /> 
     Last Name: <input name="lname" type="text" /> 
     Address: <input name="address" type="text" /> 
     Zip Code: <input name="zip" type="text" /> 
     State: <input name="state" type="text" /> 
     <input type="submit" /> 
    </form> 
</div> 

<?php $firstname = $_GET["firstname"]; echo "$firstname"; ?> 

</html> 
+1

Вы можете очистить ваш код. У вас есть проблемы с CSS 'height = 350px' и случайные элементы, которые не имеют значений. – djthoms

+0

Дополнительный совет для этого беспорядка, который вы вставили здесь. После того как вы определили переменную $ firstname = $ _GET ['firstname'], вы можете использовать ее до тех пор, пока скрипт не прекратит выполнение. Определение $ firstname с тем же значением 3 раза не имеет смысла. – Eduard

ответ

1

Испытание, что вы получите в $_GET переменной с помощью var_dump($_GET), а затем использовать:

echo isset($_GET["firstname"]) ? $_GET["firstname"] : ""; 
0

Вы ошиблись, поэтому URL не соответствует

<script type="text/javascript"> 



function writeform(){ 
    selobj=document.getElementById('selform'); 
    newobj=document.getElementById('newform'); 
    p=document.getElementById('menu').selectedIndex+1; 
    a=document.getElementById('menu2').selectedIndex+1; 
    if((p<14 && (a==1 || a==2 || a==3 ||a==4)){ // write the 1st form 
     txt ='Person 1: '+'<input type="text"/><br/>'; 
     txt+='Person 2: '+'<input type="text"/>';} else { 
     document.getElementById('div1').style.display='block'; 
     } 
    // if(p==2 && a==1){ // write the 2nd form 
    // txt ='Name: '+'<input type="text"/><br/>'; 
    // txt+='Addr: '+'<input type="text"/>';} 
    newobj.innerHTML=txt;selobj.style.display='block';} 

    </script> 

    <body> 
     <form action="http://site1.com/upload" method="get"> 
     <?php echo $_GET["firstname"]; ?> 

    <p style="font-size: 16px; font-weight: bold;">Select Something</p> 
    <div class="fancy3"><table style="width:350px; height=350px"> 
     <tr><td><select id="menu" size="14"> 
     <option selected="selected"><b>--- Common Options ---</b></option> 
     <option></option> //NY 
     </select><br/> 

     <p style="font-size: 16px; font-weight: bold;">Range</p> 
     <div class="fancy3"><table style="width:350px; height=350px"> 
     <tr><td><select id="menu2" size="4"> 
     <option selected="selected">1</option> 
     <option>2</option> 
     <option>3</option> 
     <option>4</option></select><br/> 
     </td> 
     <td><div id="selform" style="display:none"> 
     <fieldset><div id="newform"></div></fieldset></div> 
     </td></tr></table></div> 
     <br/> 
     <button onclick="writeform();">Search</button></td> 
     <td><div id="selform" style="display:none"> 
     <fieldset><div id="newform"></div></fieldset></div> 
     </td></tr></table></div> 

     </div> <!-- Primary Div closing tag--> 


     <!-- of Field-Specific Forms--> 
     <div id="div1" style="display:none;"> 

     <form action="http://site1.com/upload" method="get"> 
    First Name: <input name="fname" type="text" value="" /> 
    Last Name: <input name="lname" type="text" /> 
    Address: <input name="address" type="text" /> 
    Zip Code: <input name="zip" type="text" /> 
    State: <input name="state" type="text" /> 
    <input type="submit" /> 
    </form> 
     </div> 

    <div id="div1" style="display:none;"> 

    <?php 
    $firstname = $_GET["firstname"]; 
    ?> 


    First Name: <input name="fname" type="text" value="<?php $firstname = $_GET["firstname"]; echo "$firstname"; ?>" /> 
    Last Name: <input name="lname" type="text" /> 
    Address: <input name="address" type="text" /> 
    Zip Code: <input name="zip" type="text" /> 
    State: <input name="state" type="text" /> 
    <input type="submit" /> 
    </form> 
     </div> 

    <?php $firstname = $_GET["firstname"]; echo "$firstname"; ?> 
</body>  
</html> 
+0

Объясните этот код. Переполнение стека НЕ ​​является Ответы Yahoo. –

+0

Что вы здесь делали? –

+0

Этот пользователь не начал

после , он начал неправильным образом, поэтому URL не отображается – SagarPPanchal

1

Сначала используйте print_r($_GET) в начале файла, чтобы проверить, у вас есть переданные параметры.

Тогда вам может понадобиться очистить этот беспорядок, потому что определение $ firstname 3 раза с тем же значением, что и для его эха, не имеет смысла.

Во-вторых, вы действительно хотели бы изменить эти URL действия, как я уверен, что это не так:

<form action="http://site1.com/upload" method="get"> 

В-третьих, ваши имена входных сигналов имя = «имя_файла» тем временем с помощью ПгвЬЫате в $ _GET. Не совсем уверен, если вы когда-нибудь свяжете эти два, но что бы то ни было.

Некоторые советы:

  • научиться писать код достаточно более читаемый, чем это.

  • перейдите на страницу jQuery.com и выполните некоторые исследования, так как это действительно поможет вам написать меньше, сделать больше.

  • CSS не использует знак равенства (=) в качестве средства определения стоимости, которое в вашем случае равно height=350px, если оно должно быть height: 350px;.
  • Дайте элементам некоторые идентификаторы или классы и используйте некоторые .css-файлы, он очистит ваш код больше, чем вы можете себе представить.
0

Пара проблем, которые я вижу здесь ... для одного вы имеете несколько элементов с одним и тем же идентификатором (см. id="selform").

Чтобы загрузить получить переменную в ввода текста картина выглядит так:

<input type='text' name='fieldname' value='<?= isset($_GET['field'])?$_GET['field']:"") ?>'/> 

для CheckBox или радиоуправления оно как этот

<input type='checkbox' name='fieldname' value='myval' <?= isset($_GET['field']) && $_GET['field'] == 'myval'?"checked=\"checked\"":"") /> 

для некоторых коробок это вы делаете это:

<select name='fieldname'> 
    <option value='myval' <?= isset($_GET['field']) && $_GET['field'] == 'myval'?"selected=\"selected\":"" ?>>My Val Label</option> 
    <option value='myval2' <?= isset($_GET['field']) && $_GET['field'] == 'myval2'?"selected=\"selected\":"" ?>>My Val2 Label</option> 
</select> 

Вот отличная функция выбора блока, которая позволит вам более кратко выводить выберите в свой код (я найти чек с каждым элементом немного утомительной)

function showSelect($name, $options, $selected, $attr = array()){ 
    $str = "<select name='".$name.'"'; 
    foreach($attr as $name=>$val){ 
     $str.= " ".$name."='".$val."'"; 
    } 
    $str.=">"; 
    foreach($options as $k=>$val){ 
     $str.= "<option value='".$val."'".($val==$selected?" selected='selected'":"").">".$k.'</option>'; 
    } 
    $str.="</select>"; 
} 

и вы можете использовать его, как это ...

$days = array(); 
for($d = 1; $x<=31; $x++){ 
    $days[(string)$d] = (string)$d; 
} 

echo showSelect("formDays", $days, $_POST["formDays"], array("id"=>"formDays")) 
+0

Спасибо за помощь! Я знаю, что мой код беспорядок, я новичок, и любая помощь приветствуется. Что именно делает этот «мой путь»? Или это просто лучшая практика? Кроме работы! Lol – Xenno

+0

для флажка и выбора реализаций просто устанавливает выбранный или проверенный атрибут по соответствующему параметру в зависимости от того, что поставлено в сообщении, а не когда оно установлено. Верните шаблон. например, в вашем коде элемент menu2 всегда выбирается для первого варианта. Это произойдет независимо от того, что пользователь разместил. Функция, которая у меня есть, является просто сокращением для создания элемента select для вас, я считаю его более читаемым, а затем методом сравнения isset. – Orangepill