2014-03-28 33 views
0

這是我的PHP腳本,它爲每一行列出了所有我的標記(來自MySQL數據庫),並帶有兩個單選按鈕(啓用和禁用)。我如何將更改(如果啓用或禁用某些內容)保存到MySQL數據庫中?無論我啓用還是禁用圖書,都應該保存值1或2.如何在MySQL中一次存儲多個單選按鈕?

<?php 
$result = mysqli_query($mysqli,"SELECT * FROM tags ORDER BY id ASC"); 
while($row = mysqli_fetch_array($result)) { 
if($row['enabled'] == 1) { 
echo '<input type="radio" name="' . $row['id'] . '" value="1" checked>Enable' . 
    '<input type="radio" name="' . $row['id'] . '" value="2">Disable '; 
} else { 
echo '<input type="radio" name="' . $row['id'] . '" value="1">Enable' . 
    '<input type="radio" name="' . $row['id'] . '" value="2" checked>Disable '; 
} 
echo $row['tagname'] . "<br />"; 
} 
?> 

謝謝。我希望你明白我的問題! :-)

+0

在哪裏你現有的代碼試圖插入到數據庫中嗎? – AD7six

+0

你在尋找UPDATE查詢嗎? –

回答

1

我會解釋引述/* */我的代碼,因爲我走的更遠:

<?php 

/* ESTABLISH YOUR CONNECTION */ 

$mysqli=mysqli_connect("Host","Username","Password","Database"); /* JUST REPLACE THE NECESSARY HOST, USERNAME, PASSWORD AND DATABASE */ 

if(mysqli_connect_errno()){ 

echo "Error".mysqli_connect_error(); 
} 

if(isset($_POST['submit'])){ /* IF FORM HAS BEEN SUBMITTED */ 

/* STORE THE SUBMITTED POST DATA */ 

$counter=$_POST['hiddencounter']; 
$radio=$_POST['radio']; 
$id=$_POST['id']; 

for($x=0;$x<=$counter;$x++){ /* FOR LOOP BASED ON THE HIDDEN COUNTER */ 

mysqli_query($mysqli,"UPDATE tags SET enabled='$radio[$x]' WHERE id='$id[$x]'"); /* UPDATE THE enabled COLUMN WITH THE CORRESPONDING SUBMITTED RADION BUTTON */ 

} /* END OF FOR LOOP */ 

} /* END OF ISSET */ 

$result = mysqli_query($mysqli,"SELECT * FROM tags ORDER BY id ASC"); 

echo "<form action='' method='POST'>"; /* SUBMIT ON PAGE ITSELF */ 

$counter=0; /* WILL SET AS YOUR COUNTER FOR ARRAY PURPOSES */ 

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

if($row['enabled'] == 1) { 
echo "<input type='radio' name='radio[$counter]' value='1' checked> Enable <input type='radio' name='radio[$counter]' value='2'> Disable "; /* STORE THE RADIO BUTTON'S VALUE IN AN ARRAY */ 
} 

else { 
echo "<input type='radio' name='radio[$counter]' value='1'> Enable <input type='radio' name='radio[$counter]' value='2' checked> Disable "; /* STORE THE RADIO BUTTON'S VALUE IN AN ARRAY */ 
} 

echo "<input type='hidden' name='id[$counter]' value='$row[id]'>"; /* STORE THE ID IN AN ARRAY */ 

$counter=$counter+1; 
echo $row['tagname'] . "<br />"; 
} /* END OF WHILE LOOP */ 

echo "<input type='hidden' name='hiddencounter' value='$counter'>"; /* STORE THE TOTAL COUNT IN THE LOOP */ 
echo "<input type='submit' name='submit' value='Update'>"; 
echo "</form>"; 

?> 
+0

謝謝!你的代碼做到了訣竅。祝你們週末愉快! – amadeo

+0

沒問題!你也一樣!週末愉快! –

+0

而且,sql注入的可能性和隨後的xss攻擊漏洞確實比比皆是。好:使用mysqlI不好:不使用預準備語句。 – AD7six

0

你不應該保存單選按鈕,而是保存狀態。如果可以啓用或禁用狀態(或:啓用,是或否),則可以將其存儲在名爲'enabled'的字段中,該字段爲布爾類型,即在MySQL中爲BOOL

如果您想保留其他國家的可能性,可以將其存儲在名爲'state'的字段中,該字段的類型爲INTENUM

BOOL:https://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html(它是TINYINT的別名(1)

ENUM:https://dev.mysql.com/doc/refman/5.0/en/enum.html

+0

我確實希望有可能存儲其他狀態,現在我的字段類型爲I NT,但我的主要問題是如何保存對MySQL的更改。我應該如何編寫代碼?我的意思是,如果我有100個標籤?我應該使用一些數組的東西? – amadeo

+0

我假設每個標籤都是數據庫中的一行?在這種情況下,您可能會有一個名爲'Tags'的表,其中包含兩個名爲'Name'和'State'的列,其中後者包含該標記的狀態。不要在單個字段中創建故事數組。 – GolezTrol

相關問題