2014-11-20 42 views
1

我想回顯複選框名稱,但是我無法回顯複選框的名稱,因爲如果複選框或單選按鈕已被選中,所有出現的都是'1'。PHP會話回聲複選框和單選按鈕

有誰知道我可以如何更改我的代碼,以便如果用戶選擇他們是素食主義者和花生過敏,「素食,花生過敏」顯示在我的網頁上,而不是數字「1」項目。

我還喜歡坐在貴賓區的費用被迴應爲「是」或「否」。

這裏是我我的預訂頁面上的複選框和單選按鈕的相關代碼:

<?php 
session_start(); 
if (isset($_POST['submit'])) { 
    $_SESSION['vege'] = isset($_POST['vege']); 
} 

if (isset($_POST['submit'])) { 
    $_SESSION['vegan'] = isset($_POST['vegan']); 
} 

if (isset($_POST['submit'])) { 
    $_SESSION['peanut'] = isset($_POST['peanut']); 
} 

if (isset($_POST['submit'])) { 
    $_SESSION['gluten'] = isset($_POST['gluten']); 
} 

if (isset($_POST['submit'])) { 
    $_SESSION['vip'] = isset($_POST['vip']); 
} 
?> 
... 
<strong>Dietary Requirements:</strong> 
Vegetarian <input type="checkbox" name="vege" value="Vegetarian" <?php if(isset($_POST['vege'])) echo "checked='checked'"; ?>> 
Vegan <input type="checkbox" name="vegan" value="Vegan" <?php if(isset($_POST['vegan'])) echo "checked='checked'"; ?>> 
Peanut Allergy <input type="checkbox" name="peanut" value="Peanut Allergy" <?php if(isset($_POST['peanut'])) echo "checked='checked'"; ?>> 
Gluten Allergy <input type="checkbox" name="gluten" value="Gluten Allergy" <?php if(isset($_POST['gluten'])) echo "checked='checked'"; ?>> 

<strong> VIP area* : </strong> <br><br> 
Yes (+£5) <input type="radio" name="vip" <?php if (isset($vip) && $vip=="Yes") echo "checked";?> value="Yes"> 
<br><span id="vip" class="error"><?php echo $vipErr;?></span><br> 
No <input type="radio" name="vip" <?php if (isset($vip) && $vip=="No") echo "checked";?> value="No"> 

這是我目前使用PHP其回聲「1」的時候,用戶對我的感謝選擇你的頁面:

<b>Dietary Requirements: </b><?php echo $_SESSION['vege'];?><?php echo $_SESSION['vegan'];?><?php echo $_SESSION['peanut'];?><?php echo $_SESSION['gluten'];?> 
<b>VIP Area Costs: </b>£<?php echo $_SESSION['vip'];?> 

回答

0

你沒有賦值給會話數組!因爲你使用isset()作爲賦值!然後你分配1,因爲isset返回1,因爲它們已經設置!

那麼試試這個:

<?php 

    session_start(); 

    if (!empty($_POST['vege'])) 
     $_SESSION['vege'] = $_POST['vege']; 

    if (!empty($_POST['vegan'])) 
     $_SESSION['vegan'] = $_POST['vegan']; 

    if (!empty($_POST['peanut'])) 
     $_SESSION['peanut'] = $_POST['peanut'];  

    if (!empty($_POST['gluten'])) 
     $_SESSION['gluten'] = $_POST['gluten']; 

    if (!empty($_POST['vip'])) 
     $_SESSION['vip'] = $_POST['vip']; 


?> 

編輯:

如果回聲會議索引檢查,如果他們這樣設置:

<b>Dietary Requirements: </b> 
    <?php 

     if(isset($_SESSION['vege'])) 
      echo $_SESSION['vege']; 

     if(isset($_SESSION['vegan'])) 
      echo $_SESSION['vegan']; 

     if(isset($_SESSION['peanut'])) 
      echo $_SESSION['peanut']; 

     if(isset($_SESSION['gluten'])) 
      echo $_SESSION['gluten']; 


    ?> 
    <b>VIP Area Costs: </b>£<?php if(isset($_SESSION['vip'])) echo $_SESSION['vip'];?> 
+0

此工作正常,但是,如果我點擊提交沒有選中複選框,然後我的表單驗證後,我的屏幕上出現錯誤,因爲沒有選擇。有沒有辦法繞過這個?感謝您的建議,無論 – Oscar 2014-11-20 17:26:24

+0

請發佈錯誤!此外,HTML表格會很好; D – Rizier123 2014-11-20 17:27:14

+0

@JamesPatterson在回聲之前檢查會話索引是否已設置! – Rizier123 2014-11-20 17:31:34

0

基本上你的錯誤顯示的是從isset布爾( )功能。 如果你想echo值只是使用
$_SESSION['vegan'] = isset($_POST['vegan']) ? $_POST['vegan']:"";

代碼是什麼意思?
$x = $trueOrFalse ? $valueIfTrue : $valueIfFalse;

當然的執行一些消毒
$_SESSION['vegan'] = htmlspecialchars($_POST['vegan']);

永遠不要ECHO PURE用戶輸入!永遠消毒!通過不消毒用戶輸入,您可以輕鬆地運行自定義外部腳本,因爲任何HTML標記都可以注入頁面,例如<script>

爲什麼要檢查您的POST['submit']變量5次? 你只需要檢查一次。

if (isset($_POST['submit'])) { 
    $_SESSION['vege'] = isset($_POST['vege']) ? $_POST['vege']; 
    $_SESSION['vegan'] = isset($_POST['vegan']) ? $_POST['vegan']; 
    $_SESSION['peanut'] = isset($_POST['peanut']) ? $_POST['peanut']; 
    $_SESSION['gluten'] = isset($_POST['gluten']) ? $_POST['gluten']; 
    $_SESSION['vip']  = isset($_POST['vip']) ? $_POST['vip']; 
} 
+0

感謝您的回覆,我已經實現了你的建議,但它只是拋出一個錯誤我的預訂頁面打開時有一個未定義的索引 – Oscar 2014-11-20 17:29:35

+0

我添加了一個編輯,它可能需要檢查,你會看到我的修復會解決你的問題,但基本上你試圖回顯一個變量沒有設置,因爲現在你不檢查它是否設置() – 2014-11-20 17:30:36

+0

這樣做而不是'$ _SESSION ['vegan'] = isset($ _ POST ['vegan'])?$ _POST ['vegan']:「」 ;' – 2014-11-20 17:38:07