Also ich versuch hier gerade krampfhaft ein formular zu basten, das mit hilfe eines arrays erst checkboxen erstellt, und diese dann bei "sumbit" updatet. Vom Prinzip her funktionierts, nur nicht ganz so wie ich will.
Die alten haken, die schon drin waren und drin gelassen werden, werden immer gelöscht, statt beibehalten zu werden, sobald man sumbit clickt.
Hier mal der schnipsel vom script:
----------------------------------------
if (isset($_POST['submit'])) {
$positions = $_POST['positions'];
$id = $_POST['id'];
$memname = $_POST['memname'];
$memavpath = $_POST['memavpath'];
$pid = $_POST['pid'];
$memboardid = $_POST['memboardid'];
$sql = @mysql_query("UPDATE staffmember
SET memname='$memname', pid='$pid', memboardid='$memboardid', memavpath='$memavpath' WHERE ID='$id'");
if ($sql) {
echo('<p>Members details updated.</p>');
}
else
{
echo('<p>Error updating member details: ' .
mysql_error() . '</p>');
}
$ok1 = @mysql_query("DELETE FROM stafflookup
WHERE StaffID='$id'");
if ($positions == "") $positions = array();
foreach ($positions as $pID) {
$ok2 = @mysql_query("INSERT IGNORE INTO stafflookup (StaffID,CID)
VALUES ('$id','$pID')");
echo sql;
if (!$ok2) {
echo("<p>Error inserting member into position $pID: " .
mysql_error() . '</p>');
}
}
} else {
$id=$_GET['id'];
$details=@mysql_query("SELECT * FROM staffmember WHERE ID='$id'");
if (!$details) {
die('<p>Error fetching staff position details: ' .
mysql_error() . '</p>');
}
$detail = mysql_fetch_array($details);
$id = $detail['ID'];
$memname = $detail['memname'];
$memavpath = $detail['memavpath'];
$pid = $detail['pid'];
$memboardid = $detail['memboardid'];
$memname = htmlspecialchars($detail['memname']);
$memavpath = htmlspecialchars($detail['memavpath']);
// Get lists of positions for the checkboxes.
$positions = mysql_query('SELECT ID, catname FROM staffcats');
print("<form action='staff.php?do=editmember' method='post'>
<p>Edit Staff Member: <b>ID $id</b><br>
<br>
<br>
Name: <input class='bginput' type='text' name='memname' value='$memname' size='50' maxlength='255'><br>
<br>
Avatar: <input class='bginput' type='text' name='memavpath' value='$memavpath' size='50' maxlength='255'><br>
<br>
User ID: <input class='bginput' type='text' name='memboardid' value='$memboardid' size='50' maxlength='255'><br>
<p>In categories:<br>");
while ($position = mysql_fetch_array($positions)) {
$posid = $position['ID'];
$cname = htmlspecialchars($position['catname']);
// Check if the member is in this position
$result = @mysql_query(
"SELECT * FROM stafflookup
WHERE StaffID='$id' AND CID='$posid'");
if (!$result) {
die('<p>Error fetching member position details: ' .
mysql_error() . '</p>');
}
if (mysql_num_rows($result)) {
echo("<input type='checkbox' checked name='postions[]' value='$posid' />$cname<br />\n");
} else {
echo("<input type='checkbox' name='positions[]' value='$posid' />$cname<br />\n");
}
}
print(" <input type='hidden' name='id' value='$id'>
<input class='input2' type='submit' name='submit' value='SUBMIT'></p>
</form>");
}
}
-------------------------
Kann mir jemand helfen, wie ich das hinbekomme, dass nur die positionen gelöscht werden, die nicht gecheckt sind, und nicht - so wie momentan - sämtliche vorher gecheckte positionen rausgenommen werden?
Wäre über hilfe mega dankbar.