2017-06-06 23 views
0

私は、複数のレコード(ユーザー名)を表示し、それぞれに「チェックボックス」を持つフォームを持っています。ユーザーが[送信]ボタンをクリックすると、選択したレコードから情報を取得します。ここでは...私が持っているものである

<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
function jqCheckAll3(id, pID) 
{ 
    $("#" + pID + " :checkbox").attr('checked', $('#' + id).is(':checked')); 
} 
// End --> 
</script> 
<form name='myForm' action='adminprocess.php' method='POST'> 
<table id='left' style='margin-bottom:5px;'> 
<tr> 
<th class='sortable'>Username</th><th class='sortable'>Name</th> 
<th class='sortable'>Email</th><th class='sortable'>Level</th><th>Department</th><th class='sortable'>Registered</th><th> 
<input type="checkbox" id="checkL" onclick="jqCheckAll3(this.id, 'left');"/></th> 
</tr> 
<?php 
while($row = $result->fetch()) 
{ 
    $regdate = $row['regdate']; 
    $reg = date("j M, y, g:i a", $regdate);  
    echo "<tr><td><a href='".$config['WEB_ROOT']."admin/index.php?id=6&usertoedit=".$username."'>".$username."</a></td>\n"; 

    echo "<td>".$fname." ".$lname."</td>\n"; 
    echo "<td>".$Uemail."</td>\n"; 
    echo "<td>"; 
    ?> 
    <select name="ulevel" id="ulevel"> 
     <option value="8">Supervisor</option> 
     <option value="6">Regular user</option> 
     <option value="5">Reports Only</option> 
    </select> 

    <?PHP 
    echo "</td>\n"; 
    echo "<td>\n\t"; 
    ?> 
    <select name="departmentid" id="departmentid"> 
     <option value="1">North East</option> 
     <option value="2">South</option> 
     <option value="3">Central</option> 
    </select> 
    <?PHP 
    echo "</td>\n"; 
    echo "<td>".$reg."</td>\n"; 
    echo "echo "</td>\n"; 
echo "<td>".$reg."</td>\n"; 
echo "</td><td><input name='user_name[]' type='checkbox' value='".$row['username']."' />"; 
echo "</td>\n</tr>"; 
    echo "</td>\n</tr>"; 
} 
?> 
</table> 
<input type="hidden" name="activateusers" value="1"> 
<input type="submit" value="Activate Selected Users"> 
<br> 
</form> 

と私のadminprocess.phpはこのようになります...

function procActivateUsers(){ 
    global $session, $database, $mailer; 
    $config = $database->getConfigs(); 
    /* Account edit attempt */ 

    foreach($_POST['user_name'] as $username) { 
     $sql = $database->connection->prepare("UPDATE ".TBL_USERS." SET USERLEVEL = '".$_POST['ulevel']."', DEPTID = '".$_POST['departmentid']."' WHERE username = '$username'"); 
     $sql->execute(); 
     $req_user_info = $database->getUserInfo($username); 
     $email = $req_user_info['email']; 
     $mailer->adminActivated($username,$email,$config); 
    } 
    header("Location: ../admin/index.php?id=3"); 
    } 

は、私はすべてのことをやって、現時点では消毒または何か他のものを心配しないでください前。 > ulevel = 6 - - >のDepartmentID = 3、

ユーザー2 - > ulevel = 4 - >のDepartmentID = 1

任意の助け

をありがとう

ユーザー1:だけのようなものを取得する必要があり

+0

私たちはここには見えないループが(HTML形式で)ありますか?そうでなければあなたの質問はあまり意味がないからです。 – Jeff

+0

oops ...私のコピー&ペーストのスキルはそれほど良くはありません...私はループを表示するために質問を編集しました。 –

+0

ループのたびに文を準備するべきではありません。ループの前に一度準備し、 'bindParam'を使用して変数にバインドし、ループ内で' execute() 'を呼び出します。 – Barmar

答えて

0

<select>フィールドには配列スタイルの名前を使用する必要があります。すべての選択肢の配列が得られます。

ユーザー名を角かっこで囲むことができます。ユーザー名はチェックボックスに関連付けられます。また、それらに一意のIDを付ける必要があります。ユーザー名もそこに入れることができます(ただし、これらの要素には最初にIDが必要ですか?)。

?> 
<select name="ulevel[<?php echo $row['username'];?>]" id="ulevel-<?php echo $row['username'];?>"> 
    <option value="8">Supervisor</option> 
    <option value="6">Regular user</option> 
    <option value="5">Reports Only</option> 
</select> 

<?PHP 
echo "</td>\n"; 
echo "<td>\n\t"; 
?> 
<select name="departmentid[<?php echo $row['username'];?>]" id="departmentid-<?php echo $row['username'];?>"> 
    <option value="1">North East</option> 
    <option value="2">South</option> 
    <option value="3">Central</option> 
</select> 

そして、PHPコードで、あなたが行うことができます:

$sql = $database->connection->prepare("UPDATE ".TBL_USERS." SET USERLEVEL = :ulevel, DEPTID = :departmentid WHERE username = :username"); 
$sql->bindParam($ulevel, $deptid, $username); 
foreach ($_POST['user_name'] as $username) { 
    $ulevel = $_POST['ulevel'][$username]; 
    $deptid = $_POST]['departmentid'][$username]; 
    $sql->execute(); 
    $req_user_info = $database->getUserInfo($username); 
    $email = $req_user_info['email']; 
    $mailer->adminActivated($username,$email,$config); 
} 

あなたはユーザーテーブルのIDフィールドを持っている場合、私は「あなたがドンとしてあなたは、代わりに、ユーザー名のことを使用することをお勧め特殊文字からの潜在的な問題を心配する必要があります(上記では、ユーザー名にHTMLで特殊なエンコーディングが必要な文字は含まれていないと仮定しています)。

関連する問題