2014-01-17 83 views
1

我是新來的HTML/PHP,我找不到正確的術語,讓谷歌向我展示我認爲是相當簡單的。html:訪問選項後面在頁

我希望能夠從form1中選擇選項以在form2中列出選項。 然後我想在form3中使用form1和form2中的選定選項,但是當我選擇option2時,我失去了原來的選擇。我在這裏提供了一張圖來幫助解釋:http://imgur.com/c2Tx88O

我可能這樣做完全錯誤。建議將不勝感激。

<form name='form1' action='./results.php'> 
    <b>Data Origin:</b><br> 
    <input type="radio" name="origin" value="SEQ" onclick=submit() selected >Barcode Sequencing 
    <input type="radio" name="origin" value="MIC" onclick=submit() >Microscopy 
</form> 

<form name='form2' action='./results.php'> 
    <b>Select a Site:</b><br> 
    <?php 
     foreach($_GET as $key=>$value){ 
       $$key = $value; 
       $origin = $value; 
     } 

     $sites = glob("analyses/$origin/*"); 

     foreach ($sites as $site){ 
      $site = preg_replace("/analyses\/$origin\//i", '', $site); 
      print "<input name=\"site\" type=\"radio\" value=\"$site\" onclick=\"submit()\">$site\n"; 

     } 
    ?> 
</form> 

<?php 
    foreach($_GET as $key=>$value){ 
     $$key = $value; 
     $site_code = $value; 
     print "<b>site: $site_code</b>"; 

     $arr = array('phylum', 'class', 'order', 'family', 'genus', 'species'); 
     print "<br><select id='setit' name='url'> 
     <option value=\"\">Choose Taxonomy level...</option>"; 

     foreach ($arr as $value){ 
      print "<option value='analyses//$site_code/$value.html'>$value</option>\n"; 
     } 
     print "<input type='button' value='go' onclick=\"window.open(setit.options[setit.selectedIndex].value)\">"; 

    } 
?> 
+0

可能重複[動態鏈接的選擇框(HTTP ://stackoverflow.com/questions/12737113/dynamic-chained-select-box) –

+0

感謝您的鏈接,他們沒有接近我正在搜索的條款。作爲一個對ajax一無所知的人,這是絕對必要的嗎?在實施它之前我需要設置任何東西嗎?我從維基百科發現你需要啓用javascript,並且從經驗中知道我們的計算機默認情況下已禁用它。 – Daniel

+0

@Mabeuf請看下面的答案。 –

回答

1

爲了從初一到第二結轉的信息,使用此

<input type="hidden" name="origin" value="<?php if(isset($_GET['origin'])) echo $_GET['origin']; ?>" /> 

您可以用鼠標右鍵後「選擇網站」的地方,就像這樣

<form name='form2' action='./results.php'> 
    <b>Select a Site:</b><br> 
    <input type="hidden" name="origin" value="<?php if(isset($_GET['origin'])) echo $_GET['origin']; ?>" /> 

此外,而不是做所有這一切都得到$origin

foreach($_GET as $key=>$value){ 
    $$key = $value; 
    $origin = $value; 
} 

你可以簡單地調用這個

$origin = $_GET['origin']; 

但你必須檢查它是否設置第一,像這樣:

if(isset($_GET['origin']){ 
    $origin = $_GET['origin']; 
+0

謝謝,這是現在的工作。我非常感謝他們的幫助,特別是晚上10點,現在我可以回家了...... – Daniel

+0

@Mabeuf沒問題! –

0

每當您提交表單時,它都會刷新頁面,並丟失以前請求中的數據。爲了解決這個問題,您需要使用持久存儲方法(如會話)來存儲和訪問先前請求中的數據。

例子:(這將是在某個地方results.php腳本)

session_start(); // This needs to be at the start of your script 

$_SESSION['form1'] = $_POST['form1']; // Put the result of form one in here 
// etc... 

與形式的腳本,你需要再次調用session_start(),然後你就可以在$_SESSION訪問數組中以前的數據。