2013-08-22 47 views
1

我有一個HTML表單,並使用get方法如何變量匹配我的HTML表格到PHP

我想輸入的數據,如果用戶選擇鞋期權價值shoes_sales.txt,並輸入所有休息到clothes_sales.txt。不幸的是,這些數據並未出現在我的.txt中。

這是HTML表單:

<li class="form-line" id="id_16"> 
    <label class="form-label-left" id="label_16" for="input_16"> Select choice </label> 
    <div id="cid_16" class="form-input"> 
    <select class="form-dropdown" style="width:150px" id="input_16" name="q16_selectFrom16"> 
     <option value="Shoes"> Shoes </option> 
     <option value="Clothes"> Clothes </option> 

    </select> 
    </div> 
</li> 

這是PHP嘗試檢索表單值:

<?php 
    header("Location: thankforsumbitting.html"); 

    if ($_GET['variable1'] == "shoes") { 
    $handle = fopen("shoes_sales.txt", "a"); 
    } 
    else { 
    $handle = fopen("clothes_sales.txt", "a"); 
    } 
    foreach($_GET as $variable => $value) { 
    fwrite($handle, $variable."=".$value."\r\n"); 
    } 
    fclose($handle); 
    exit; 
?> 
+2

把'header'重定向末;它可能會在用戶開始寫文本文件之前重定向用戶。 – andrewsi

+2

我認爲這個'header(「Location:thankforsumbitting.html」);'即使在腳本嘗試寫入文件之前也會立即重定向。嘗試拿出或使用'回聲「謝謝你」;'。雖然這沒有經過測試,我現在沒有時間進行測試。嘗試把它放在'fclose($ handle);'而不是,但是這可能會導致'headers already sent'錯誤消息。 –

+0

@andrewsi你在11秒內擊敗了我! –

回答

1

給你

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <title>Hello!</title> 
</head> 

<body> 

<?php 

    if($_GET['q16_selectFrom16']) 
    { 
    if ($_GET['q16_selectFrom16'] == "Shoes") { 
    $handle = fopen("shoes_sales.txt", "a"); 
    } 
    else { 
    $handle = fopen("clothes_sales.txt", "a"); 
    } 
    foreach($_GET as $variable => $value) { 
    echo $variable; 

    $fwrite = fwrite($handle, $variable."=".$value."\r\n"); 
    if ($fwrite === false) { 
      header("Location: thankforsumbitting.html"); 
     }else 
     { 
      echo "Erorr"; 
     } 
    } 
    fclose($handle); 
    exit; 
    } 
?> 
<form action="" method="get"> 
<li class="form-line" id="id_16"> 
    <label class="form-label-left" id="label_16" for="input_16"> Select choice </label> 
    <div id="cid_16" class="form-input"> 
    <select class="form-dropdown" style="width:150px" id="input_16" name="q16_selectFrom16"> 
     <option value="Shoes"> Shoes </option> 
     <option value="Clothes"> Clothes </option> 
    </select> 
    <input type="submit" value="sss" /> 
    </div> 
</li> 
</form> 
</body> 

</html> 
2

$_GET變量的值不符合目前name屬性:

$_GET['variable1'] 

應該是

$_GET['q16_selectFrom16'] 

你也檢查== "shoes"== "clothes",而你在你的option價值觀使用大寫字母。

1

在代碼的開始使用的是

header("Location: thankforsumbitting.html"); 

將其附加在文件的末尾,所以每一個代碼行重定向之前執行。

更改此:

if ($_GET['variable1'] == "shoes") 

if ($_GET['q16_selectFrom16'] == "shoes") 

,並在選項值標記改變文字,從

<option value="Shoes"> Shoes </option> 
<option value="Clothes"> Clothes </option> 

<option value="shoes"> Shoes </option> 
<option value="clothes"> Clothes </option> 
區分大小寫的

。這可能不是問題,但它是更好的方法。