2010-01-18 70 views
0

好吧,我有這個下拉填充一個Mysql數據庫。在更改下拉菜單時,整個頁面會填充來自數據庫的信息。那麼當我提交這個表單時(我們在這個頁面上有兩個表單),我希望它返回到我剛剛在下拉菜單中選擇的同一個客戶機。現在,我正在使用一個會話將其恢復並選擇與之前相同的客戶端,但on change事件並未插入,並從所選人員的數據庫中選擇信息。由於PHP下拉粘貼並提交表格

session_start(); 

$current = isset($_SESSION['ClientNamefour']) ? $_SESSION['ClientNamefour'] : 0; 

$options4=""; 

while ($row = mysql_fetch_array($result)) { 

    $id=$row["Client_Code"]; 
    $thing=$row["Client_Full_Name"]; 
    $value="$id, $thing"; 
    // insert SELECTED="SELECTED" if the current $id matches $current 
    $options4.="<OPTION VALUE=\"$value\" ".($id == $current ? ' SELECTED="SELECTED"' : '').">".$thing; 
} 


?> 

<FORM name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 

<SELECT NAME="ClientNamefour" OnChange="this.form.submit()"> 

    <OPTION VALUE=0>Client 
    <?php echo $options4?> 

    </SELECT> 
</FORM> 


    session_start(); 
// Do the redirect 
    $_SESSION['ClientNamefour'] = $_POST['txtclientcode']; 



header("Location: http://endeavor/php/financialoasistest.php"); 

回答

0

好吧,那裏面有不少問題,但一般的代碼結構旁白:

  1. 你設置從不會存在一個崗位價值的會話變量。 (根據您的代碼,它應該是$_POST['ClientNamefour'])。

  2. 由於某種原因,您打電話給session_start()兩次。 (只是在開始的時候調用一次。)

+0

重定向也是在HTML內容輸出用戶代理之後。 – 2010-01-18 20:19:56

+0

session_start()的原因是兩次,因爲代碼駐留在兩個不同的頁面上。一個流程頁面,一個是實際的網站。 POST確實存在於頁面上。如何使onchange在會話返回時工作? – Eric 2010-01-18 20:20:55

+0

如果出現這種情況,您需要將上面的代碼重新格式化爲兩段,並添加(相關的)缺失位 - 很難分辨出當前的情況,並且無法調試我們無法看到的代碼。 :-) – 2010-01-18 20:25:04

0

如果進程頁上設置$_SESSON['ClientNamefour'] = $_POST['ClientNamefour'],這樣的事情應該建設爲<select>的選項時做的。

while ($row = mysql_fetch_array($result)) 
{ 
    $id = $row["Client_Code"]; 
    $key = "$id, $thing"; 
    $value = $row["Client_Full_Name"]; 

    $selected = ($id == @$_SESSION['ClientNamefour']) ? ' selected' : ''; 

    echo "<option value=\"{$key}\"{$selected}>{$value}</option>"; 
} 

編輯:看在middaparka的回答您的意見,我更新了這一點。我也假設你的所有代碼都在一個頁面上。