2013-04-11 6 views
0

Я создаю форму, в которой пользователь устанавливает уровни доступа к именам пользователей в базе данных, форма показывает флажок и имя пользователя.PHP Check Checkbox

Это форму внизу. Он заполняется с использованием базы данных.

<?php 
require '../Pages/Database Actions/Database_Connect.php'; 
$result = mysql_query("SELECT * FROM members"); 
$row = mysql_fetch_array($result); 
$row_num = mysql_num_rows($result); 

echo '<table class="setuseraccess_title"><tr><td class="comitttiemembers_title"><h3 align="center">User Access Levels</h3></td></tr></table><br />'; 
echo'<form class="setuseraccess" action="index.php?page=member-profile" method="post"><table>'; 

for ($val = 0; $val < $row_num; $val++) 
{ 
    echo '<tr><td><input type=\'checkbox\' name=\'SetAccess\' value=\''.$row['username'].'\' /></td> 
     <td>'.$row['username'].'</td><td>'.$row['accesslevel'].'</td></tr>'; 
    $row = mysql_fetch_array($result); 
} 

echo '<tr><td colspan="3"><br /><select name="useraccesslevel"> 
<option value="0">Access Level 0</option> 
<option value="1">Access Level 1</option> 
<option value="2">Access Level 2</option> 
<option value="3">Access Level 3</option> 
<option value="4">Access Level 4</option> 
<option value="5">Access Level 5</option> 
</select><br /></td></tr>'; 
echo'<tr><td colspan="3"><br /><input class="member-buttons" type="submit" name="mb" value="Set Access" /><br /></td></tr></table></form>'; 
?> 

Как я могу обновить уровни доступа пользователей в базе данных? Также я не уверен, что мое значение флажка должно быть именем пользователя игроков. что было бы лучшим способом сделать это?

-Edit- Извините, что не отправил страницу действий.

<?php 
if(isset($_POST['useraccesslevel'])) 
{ 
    $Alevel = trim($_POST['useraccesslevel']); 
    echo $Alevel; 

    $result = mysql_query("SELECT * FROM members"); 
    $row = mysql_fetch_array($result); 
    $row_num = mysql_num_rows($result); 

    for ($val = 0; $val < $row_num; $val++) 
    { 
     if(isset($_POST[$row['username']])) 
     { 
      $sql="UPDATE `wohsa`.`members` SET `accesslevel` = '" + $Alevel + "' WHERE `members`.`username` = '" + $_POST[$row['username']] + "';"; 
      $result1=mysql_query($sql); 
     } 
    } 
} 
?> 

что страница действия, где я попытка обновить значения в базе данных

---- EDIT 2 ---- Я сделал это, и это хорошо работает! Благодаря dianuj, который получил меня в нужном месте :)

+1

с запросом на обновление, что вы пробовали? где вы застряли? – 2013-04-11 19:48:44

+0

обновленный вопрос со страницей действий – NoLiver92

+0

Что не так с тем, что вы уже закодировали? Есть ли ошибка? – showdev

ответ

1

первую очередь вы должны исправить имя checkbox Ань array из checbox

for ($val = 0; $val < $row_num; $val++) 
{ 
echo '<tr><td><input type=\'checkbox\' name=\'SetAccess[]\' value=\''.$row['username'].'\' /></td> 
    <td>'.$row['username'].'</td><td>'.$row['accesslevel'].'</td></tr>'; 
$row = mysql_fetch_array($result); 
} 

когда вы отправите form у вас есть доступ к значениям или иды каждого использования в $_REQUEST[SetAcces][index] и запустить update запрос в цикле длине $_REQUEST[SetAcces][index]

update table set role..... where userid ='your $_REQUEST value' 

не полный функционал б ут дать представление надеюсь, что это помогает

+0

Я не использовал запрос и массивы, как это раньше, и я не совсем уверен, как получить флажки, используя это объявление, как получить длину его – NoLiver92

+0

там вам нужно работать :) дорогая, мы здесь, чтобы помочь, но кормление будет имеют плохое воздействие на вас, у вас мало борьбы, это не большая задача, но если вы сделали это сами, то в будущем вы не столкнетесь с этими проблемами, получайте удовольствие от ура. –

0
<?php 

if(isset($_POST['mb'])){ 

$usernames = array(); 
foreach($_POST['SetAccess'] as $key=>$value) 
$usernames[] = "'".$value."'"; 

$accesslevel = $_POST['useraccesslevel'] 

mysql_query("UPDATE `members` SET `accesslevel` = '".$accesslevel."' WHERE `username` IN (".implode(",",$usernames).")"); 


} 
?> 

Вы можете добавить свои собственные дополнительные проверки и фильтрации.

+0

Начнем с того, что это уязвимость в SQL-инъекции и вы никогда не должны этого делать, если не хотите, чтобы ваш сайт был взломан. –

+0

на данный момент он находится за закрытыми дверями, у него будут предварительные предписания, чтобы предотвратить это до того, как я выложу его в Интернете – NoLiver92