【发布时间】:2016-02-14 13:19:17
【问题描述】:
我正在尝试为帐户持有人创建一个表单,以使用他们的个人资料中的 INSERT、UPDATE 和 DELETE 技能。但是它只适用于数组中的技能,但数组只包含用户已经分配给他们的技能。 IE。如果我使用SQL insert to the DB 向用户添加技能,然后测试它工作正常的功能。无论他们是否拥有这项技能,我怎样才能让我的代码结构正常工作?
(我已经将大量代码复制到这个问题中,因为之前的问题收到了更多代码的请求)。
PHP 代码:
$User = (int)$_SESSION["UserID"];
$skillresult = $con->query("SELECT userskills.`SkillID`, `Description`, `Experience`
FROM `User`
INNER JOIN `userskills` ON User.`UserId` = userskills.`UserId`
LEFT OUTER JOIN `Skills` ON userskills.`SkillID` = Skills.`SkillID`
WHERE user.`UserID` ='$User'")
or die(mysqli_error($con));
$skills_array = array();
while($r=mysqli_fetch_array($skillresult))
{
$skills_array[$r['SkillID']] = $r['Description'];
}
print_r($skills_array);
if(isset($_POST['Update']))
{
$default = 0;
foreach($skills_array AS $skills_id=>$skills_name)
{
if (isset($_POST[$skills_name]))
{
if (empty($_POST[$skills_name.'exp']))
{
$exp = $default;
}
else
{
$exp = $_POST[$skills_name.'exp'];
}
$sql = $con->query("SELECT count(`UserID`) as total FROM `userskills` WHERE `UserID` = '$User' AND `SkillID` = ".$skills_id)
or die(mysqli_error($con));
if ($row1 = mysqli_fetch_assoc($sql))
{
$sql = $con->query("UPDATE `userskills` SET `Experience` = '$exp' WHERE `UserID` = '$User' AND `SkillID` = ".$skills_id)
or die(mysqli_error($con));
//If the checkbox is not checked it will check to see if skill is already a skill assigned to the user. If they are it will delete it. If not it will ignore.
}
else
{
$sql = $con->query("INSERT INTO `userskills` ( `UserID`, `SkillID`, `Experience`) VALUES ('$User', '$skills_id', '$exp')")
or die(mysqli_error($con));
}
}
else
{
$sql = $con->query("DELETE FROM `userskills` WHERE `UserID` = '$User' AND `SkillID` = ".$skills_id)
or die(mysqli_error($con));
}
}
header('Location: Account.php');
die();
}
else
{
echo 'Incorrect password please try again.';
}
}
HTML+PHP 代码:
<div class="container">
<h1 class="page-header"></h1>
<div class="row">
<form id="form1" name="form1" method="post" enctype="multipart/form-data" class="form-horizontal" role="form">
<div class="col-md-8 col-sm-6 col-xs-12 personal-info">
<h3>Personal Info:</h3>
<div class="form-group">
<h3>Skills:</h3>
<?php
$result1 = $con->query("SELECT skills.`SkillID`, skills.`Description`, COUNT(userskills.`SkillID`) AS SkillUserHas, MAX(`Experience`) AS Experience
FROM `skills`
LEFT OUTER JOIN `userskills`
ON skills.`SkillID` = userskills.`SkillID` AND userskills.`UserID` = '$User'
GROUP BY skills.`SkillID`, skills.`Description`
ORDER BY FIELD(skills.`SkillID`, 1, 7, 9, 3, 4, 5, 6, 8)")
or die(mysqli_error($con));
?>
<table class="table table-striped">
<thead>
<tr>
<th>Skill(s)</th>
<th>Experience (Years)</th>
</tr>
</thead>
<tbody>
<?php
while ($skillrow = $result1->fetch_assoc())
{
echo '<tr>';
echo '<td><label>';
echo '<input type="checkbox" name="'.$skillrow['Description'].'" id="CheckboxGroup1_'.$skillrow['SkillID'].'" class="skillselect" value="yes" '.(($skillrow['SkillUserHas'] > 0) ? 'checked' : '').'>';
echo $skillrow['Description'].'</label></td>';
echo '<td><input type="number" name="'.$skillrow['Description'].'exp" class="expnumber" placeholder="Enter Experience in years." value="'.$skillrow['Experience'].'"></td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
</form>
</div>
</div>
【问题讨论】: