iT邦幫忙

0

php表單預覽複選值出不來

各位前輩,我是位剛自學PHP的菜菜菜鳥,再練習建置一份郵寄問卷名單,
在no1.php採implode處理,可得正確的複選值內容,但在預覽選項的no2.php中相同
的方式處理但複選值內容卻完全出不來,拜了各路搜尋大神仍找不到解答,懇請各位不吝協助這問題,在此先謝過^^
以下為表單內容與PHP檔案內容 請各位了解一下 感恩

<form action="no1.php" method="post" name="form1">
        <p>請選擇興趣:<select name="hobbies[]" size="3" multiple>
        <option value="閱讀">閱讀</option>
        <option value="聽音樂">聽音樂</option>
        <option value="逛街">逛街</option>
        </select></p>
        <p><input type="submit" name="formok" value="完成"> <input type="reset" name="formrestart" value="重新填寫"> <input type="button" name="formreview" value="問卷預覽" target="_blank" onClick="location.href='no2.php?hobbies='+document.form1['hobbies[]'].value"></p>
</form>

no2.php內容

<?php
header("Content-type:text/html;charset=UTF-8");//宣告網頁編碼
$date=date('Y/m/d'.'  '.'G:i:s');//設定填寫時間
if($_GET["hobbies"]==""){
    $_allhobbies=$_GET["hobbies"];
  }else{
    $_allhobbies="我選擇的興趣:".implode(",",$_GET["hobbies"]);
    //巢狀判斷式 結束
}
$message="
年齡興趣調查問卷<br />
<br />
填寫時間:{$date}<br />
$_allhobbies<br />
-------------------------------------------------------------------------------------------------------------<br />
問卷填寫完成<br />
";

 echo "<body bgcolor='#FFFFCC'>"."$message";   
?>
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
weiclin
iT邦高手 4 級 ‧ 2015-01-16 12:19:09
最佳解答

你光是這麼做, 沒辦法建立正確的GET參數:

onClick="location.href='no2.php?hobbies='+document.form1['hobbies[]'].value"

建立好的 url 應該要長成這樣:

<pre class="c" name="code">no2.php?hobbies[]=閱讀&hobbies[]=聽音樂

所以得這樣才行:

<pre class="c" name="code">
<script type="text/javascript">
    function preview() {
        var hobbies = document.form1['hobbies[]'];
        var param = "";
        for (i = 0; i < hobbies.length; ++i) {
            if (hobbies[i].selected) {
                param = param ? param + "&" : "";
                param += "hobbies[]=" + hobbies[i].value;
            }
        }
        location.href = 'no2.php?' + param;
    }
</script>
<form action="no1.php" method="get" name="form1">  
    <p>請選擇興趣:<select name="hobbies[]" size="3" multiple>  
            <option value="閱讀">閱讀</option>  
            <option value="聽音樂">聽音樂</option>  
            <option value="逛街">逛街</option>  
        </select></p>  
    <p>
        <input type="submit" name="formok" value="完成">
        <input type="reset" name="formrestart" value="重新填寫">
        <input type="button" name="formreview" value="問卷預覽" onClick="preview()">
    </p>  
</form> 
vicart iT邦新手 5 級 ‧ 2015-01-16 15:33:52 檢舉

謝謝 weiclin大大說明~~另外想請問,若再form中多加了數各欄位,可在location.href = 'no2.php?' + param;加入欄位其他字串嗎

<pre class="c" name="code"><p>請輸入姓名:<input type="text" name="name" maxlength="8" size="8"><br>
<br>
請選擇年齡:<select name="old" size="1">
        <option value="1 歲 - 10 歲">1 歲 - 10 歲</option>
        <option value="11 歲 - 20 歲">11 歲 - 20 歲</option>
        </select></p>
    <p>請選擇興趣:<select name="hobbies[]" size="3" multiple>
        <option value="閱讀">閱讀</option>
        <option value="聽音樂">聽音樂</option>
        <option value="逛街">逛街</option>
</select></p>
    <p>請填入郵件地址:<input type="text" name="mail" maxlength="30" size="30"></p>
weiclin iT邦高手 4 級 ‧ 2015-01-16 18:11:23 檢舉

可以呀, 你可以把 form 的 method 改成 get, 接著按 submit
瀏覽器就會顯示組合好的 url, 你仿照那樣去做就行了

我要發表回答

立即登入回答