2013-07-25 44 views
1

在這種情況下,我有一個表單中的4個單選按鈕。在之前的步驟中,用戶可以選擇包括被選擇的不同無線電的選項(如A,B,C,D)。例如:選擇A並選擇無線電1,依此類推。這種選擇是保存在MySQL作爲Php/mysql:在php數組中處理空的sql結果

// If B: 

Customer Prod Group Chosen 
12345 1 1  0 
12345 2 1  1 
12345 3 1  0 
12345 4 1  0 

對於其他一些怪異的IT系統以後使用,我需要保存選定爲0非。 稍後用戶可以再次訪問此頁面。然後我檢查數據庫,將正確的收音機標記爲checked


問題

用戶不能進行初始選擇。

由於用戶不得做出選擇(A,B ...)我在使用時,它返回一個空結果的SQL查詢的麻煩(未發現的選擇)。在這種情況下,我將sql結果保存到$p,然後檢查它是1還是0 /空。

<input type="button" <?= empty($p[0])?'':'checked';?> /> 
<input type="button" <?= empty($p[1])?'':'checked';?> /> 
<input type="button" <?= empty($p[2])?'':'checked';?> /> 
<input type="button" <?= empty($p[3])?'':'checked';?> /> 

這會導致前3個無線電被檢查。

任何想法如何解決這個問題? 我不知何故需要檢查是否sql條目是1(選擇),0(未選擇)或根本不存在。

的SQL僅僅是一個簡單的查詢:

$sql = " 
SELECT chosen 
FROM choices 
WHERE group = 1 
AND customer = 12345"; 

編輯

var_dump($result)說布爾(假)。這是正常的嗎?

+0

發佈相關sql –

+0

@de_nuit添加並編輯了一下。 – Xavio

+0

$ sql =「SELECT'selected' FROM'choices' WHERE'group' = 1 AND'customer' = 12345」; 組和客戶INT字段? –

回答

0

在SQL首先,簡單的查詢:

$group = 1; 
$customer = 12345; 

// @de_nuit we have the same idea :-D 
$sql = "SELECT `chosen` FROM `choices` WHERE `group` = '".$group."' AND `customer` = '".$customer."'"; 
$result = mysql_query($sql); 

$p = array(); 
while($row = mysqli_fetch_array($result)) 
{ 
    $p[$row['prod']] = true; 
} 

也許簡單地說就是創建一個小的功能?

function emptyCheck($p, $trick){ 
    // Your syntax to check 
    if(isset($p[$trick])){ 
     if($p[$trick] == true){ echo "checked"; } 
    } 
} 

然後使用:現在

<input type="button" <?=emptyCheck($p,0)?> /> 

,它的老方法,閱讀更多的信息:Why shouldn't I use mysql_* functions in PHP?

+0

如果根本沒有選擇(空sql結果),是不是會觸發偏移錯誤? – Xavio

+0

啊,這最終做到了。只需要將true/false添加到函數變量中,以檢查它是否被選中的「yes」或「no」按鈕。 – Xavio

0

如何

<input type="button" <?=(empty($p[0]) || $empty === '0')?'':'checked';?> /> 

(檢查它是否是空的,或者如果它的值是0 - 不進行檢查。)

,或者如果它是一個1它只是檢查:

編輯

if($p[0]) { 
?> 
    <input type="button" <?=($p[0] === '1') ? 'checked':'';?> /> 
<? 
}else { 
    <input type="button" /> 
} 
?> 

(檢查它的值是否爲1-檢查)

+0

我之前使用過第二個,但是由於空sql結果有時沒有任何$ p [x],所以觸發了偏移錯誤。 – Xavio

+0

在輸出輸入按鈕之前檢查數組是否存在,然後參見編輯 – JohnnyFaldo

+0

根據[documentation](http://php.net/manual/en/function.empty.php),'0'被認爲是'empty' – harryg

0
$sql = "SELECT `chosen` FROM `choices` WHERE `group` = '1' AND `customer` = 12345"; 

你必須加上引號的字符串。

如果您使用的變量:

$sql = "SELECT `chosen` FROM `choices` WHERE `group` = '".$group."' AND `customer` = ".$customer; 

編輯:

你可能有一個請求mysql_query();某處。添加一個die方法。你可以看看你的請求是否拋出任何錯誤。如果是的話,將它們發佈到您的答案

$query = mysql_query($sql) or die(mysql_error()); 
+0

我試過了在外部數據庫管理器(Sequel Pro)中不返回任何內容的查詢,並且只是說0結果,沒有錯誤。我想這應該清除任何錯誤。 – Xavio