0

URL を介して渡された変数をフォームの値に事前入力しようとしています。さまざまな解決策を試しましたが、エラーが発生しないこともあり、変数が表示されないこともあります。どんな助けでも大歓迎です、ありがとう!

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>
4

4 に答える 4

1

$_GETを使用して変数に何が得られるかをテストしてvar_dump($_GET)から、次を使用します。

echo isset($_GET["firstname"]) ? $_GET["firstname"] : "";
于 2013-05-23T04:40:00.253 に答える
0

ここでいくつかの問題が見られます... 1 つは、同じ ID を持つ複数の要素があることです (「 」を参照id="selform")。

get 変数をテキスト入力にロードするには、パターンは次のようになります。

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

チェックボックスまたはラジオコントロールの場合、次のようになります

<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"))
于 2013-05-23T05:28:26.700 に答える
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>
于 2013-05-23T04:49:12.687 に答える