表单处理 PHP PDO
Form handling PHP PDO
我正在尝试学习 PDO 的形式。
问题是什么都没有提交。什么都没有保存,我没有收到任何错误。
我有一个 class (ABB)。在那个 class 中,我有一个名为 "spara_abb" 的函数(以及脚本中使用的几个函数)。
问题:
- 有什么方法可以使这段代码正常工作吗?
- 这是解决这个问题的正确方法吗?
有什么建议吗?
形式:
<?php
if (isset($_POST["submit"])){
$save_abb = $abb->spara_abb($_POST['ident']);
}
?>
<!-- FORM START - Create new ABB -->
<form action="abb_ny.php?amne_id=<?php echo $_GET['amne_id']; ?>&abb_arskurs=<?php echo $_GET['abb_arskurs']; ?>" method="post" enctype="multipart/form-data" id="sky-form1" class="sky-form">
<input type='Hidden' name='lid' value='<? echo $_SESSION['lid']; ?>'>
<input type='Hidden' name='datum' value='<? echo date('Y-m-d'); ?>'>
<input type='Hidden' name='ident' value='<? echo $abb->skapa_ident($_GET['amne_id']); ?>'>
<input type='Hidden' name='amne_id' value='<? echo $_GET['amne_id']; ?>'>
<input type='Hidden' name='arskurs' value='<? echo $_GET['abb_arskurs']; ?>'>
<input type='Hidden' name='aktiv' value='1'>
<header>Skapa ny ABB</header>
<fieldset>
<section>
<label class="label">Arbetsomrade</label>
<label class="input">
<i class="icon-append fa fa-tag"></i>
<input type="text" name="arbetsomrade" id="arbetsomrade" placeholder="Arbetsområde">
</label>
</section>
<label class="label">Syfte</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="syfte" placeholder="Syfte"></textarea>
</label>
</section>
<label class="label">Overgripande mal</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="overgripande_mal" placeholder="Övergripande mål"></textarea>
</label>
</section>
<label class="label">Undervisning</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="undervisning" placeholder="Undervisning"></textarea>
</label>
</section>
<label class="label">Redovisningsform</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="redovisningsform" placeholder="Redovisningsform"></textarea>
</label>
</section>
</fieldset>
<footer>
<button type="submit" name="Spara" value="Spara" class="btn-u">Save ABB</button>
</footer>
</form>
<!-- END FORM -->
从我的 class ABB 调用的函数:
# Save ABB
public function spara_abb($ident) {
// Does IDENT exist?
$abb_existerar = $this->abb_existerar($ident);
try{
if ($abb_existerar === true){
$query2 = $this->db->prepare("
UPDATE `abb` SET `arbetsomrade` = :arbetsomrade,`syfte` = :syfte,
`overgripande_mal` = :overgripande_mal, `undervisning` = :undervisning,
`redovisningsform` = :redovisningsform, `lid` = :lid, `datum` = :datum,
`aktiv` = :aktiv
WHERE (`ident`=:ident)");
$query2->bindParam(':ident', $ident, PDO::PARAM_STR);
$query2->bindParam(':arskurs', $arskurs, PDO::PARAM_STR);
$query2->bindParam(':amne_id', $amne_id, PDO::PARAM_INT);
$query2->bindParam(':arbetsomrade', $arbetsomrade, PDO::PARAM_STR);
$query2->bindParam(':syfte', $syfte, PDO::PARAM_STR);
$query2->bindParam(':overgripande_mal', $overgripande_mal, PDO::PARAM_STR);
$query2->bindParam(':undervisning', $undervisning, PDO::PARAM_STR);
$query2->bindParam(':redovisningsform', $redovisningsform, PDO::PARAM_STR);
$query2->bindParam(':lid', $lid, PDO::PARAM_INT);
$query2->bindParam(':datum', $datum, PDO::PARAM_STR);
$query2->bindParam(':aktiv', $aktiv, PDO::PARAM_INT);
$query2->execute();
}else {
$query2 = $this->db->prepare("
INSERT INTO `abb`
(ident, arskurs, amne_id, arbetsomrade, syfte, overgripande_mal, undervisning, redovisningsform,lid,datum,aktiv) VALUES (:ident, :arskurs, :arbetsomrade, :syfte, :overgripande_mal, :undervisning,
:redovisningsform, :lid, :datum, :aktiv) ");
$query2->bindParam(':ident', $ident, PDO::PARAM_STR);
$query2->bindParam(':arskurs', $arskurs, PDO::PARAM_STR);
$query2->bindParam(':amne_id', $amne_id, PDO::PARAM_INT);
$query2->bindParam(':arbetsomrade', $arbetsomrade, PDO::PARAM_STR);
$query2->bindParam(':syfte', $syfte, PDO::PARAM_STR);
$query2->bindParam(':overgripande_mal', $overgripande_mal, PDO::PARAM_STR);
$query2->bindParam(':undervisning', $undervisning, PDO::PARAM_STR);
$query2->bindParam(':redovisningsform', $redovisningsform, PDO::PARAM_STR);
$query2->bindParam(':lid', $lid, PDO::PARAM_INT);
$query2->bindParam(':datum', $datum, PDO::PARAM_STR);
$query2->bindParam(':aktiv', $aktiv, PDO::PARAM_INT);
$query2->execute();
}
}catch(PDOException $e){
die($e->getMessage());
}
} // END save ABB
您可以将所有表单变量添加到一个数组中,然后像这样将其发送到函数:
$array = Array(':ident' => array($_POST['ident'], PDO::PARAM_INT),
':lid' => array($_POST['lid'], PDO::PARAM_INT),
':datum' => array($_POST['datum'], PDO::PARAM_STR),
':amne_id' => array($_POST['amne_id'], PDO::PARAM_INT));
$save_abb = $abb->spara_abb($array);
现在 class 你可以这样做:
# Save ABB
public function spara_abb($array) {
// Does IDENT exist?
$abb_existerar = $this->abb_existerar($array);
try{
if ($abb_existerar === true){
$query2 = $this->db->prepare("
UPDATE `abb` SET `arbetsomrade` = :arbetsomrade,`syfte` = :syfte,
`overgripande_mal` = :overgripande_mal, `undervisning` = :undervisning,
`redovisningsform` = :redovisningsform, `lid` = :lid, `datum` = :datum,
`aktiv` = :aktiv
WHERE (`ident`=:ident)");
foreach($array as $key => $val){
$query2->bindParam($key,$val[0],$val[1]);
}
$query2->execute();
....
....
这样你就可以将所有变量传递给 class。我建议确保所有变量都存在于函数 isset() 中,例如:
$idnent = isset($_POST['ident'])? $_POST['ident'] : '';
编辑: 使用var_dump($array);
打印所有数组,看看这是否是您想要的。
我正在尝试学习 PDO 的形式。 问题是什么都没有提交。什么都没有保存,我没有收到任何错误。
我有一个 class (ABB)。在那个 class 中,我有一个名为 "spara_abb" 的函数(以及脚本中使用的几个函数)。
问题:
- 有什么方法可以使这段代码正常工作吗?
- 这是解决这个问题的正确方法吗?
有什么建议吗?
形式:
<?php
if (isset($_POST["submit"])){
$save_abb = $abb->spara_abb($_POST['ident']);
}
?>
<!-- FORM START - Create new ABB -->
<form action="abb_ny.php?amne_id=<?php echo $_GET['amne_id']; ?>&abb_arskurs=<?php echo $_GET['abb_arskurs']; ?>" method="post" enctype="multipart/form-data" id="sky-form1" class="sky-form">
<input type='Hidden' name='lid' value='<? echo $_SESSION['lid']; ?>'>
<input type='Hidden' name='datum' value='<? echo date('Y-m-d'); ?>'>
<input type='Hidden' name='ident' value='<? echo $abb->skapa_ident($_GET['amne_id']); ?>'>
<input type='Hidden' name='amne_id' value='<? echo $_GET['amne_id']; ?>'>
<input type='Hidden' name='arskurs' value='<? echo $_GET['abb_arskurs']; ?>'>
<input type='Hidden' name='aktiv' value='1'>
<header>Skapa ny ABB</header>
<fieldset>
<section>
<label class="label">Arbetsomrade</label>
<label class="input">
<i class="icon-append fa fa-tag"></i>
<input type="text" name="arbetsomrade" id="arbetsomrade" placeholder="Arbetsområde">
</label>
</section>
<label class="label">Syfte</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="syfte" placeholder="Syfte"></textarea>
</label>
</section>
<label class="label">Overgripande mal</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="overgripande_mal" placeholder="Övergripande mål"></textarea>
</label>
</section>
<label class="label">Undervisning</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="undervisning" placeholder="Undervisning"></textarea>
</label>
</section>
<label class="label">Redovisningsform</label>
<section>
<label class="textarea">
<i class="icon-append fa fa-comment"></i>
<textarea rows="5" name="redovisningsform" placeholder="Redovisningsform"></textarea>
</label>
</section>
</fieldset>
<footer>
<button type="submit" name="Spara" value="Spara" class="btn-u">Save ABB</button>
</footer>
</form>
<!-- END FORM -->
从我的 class ABB 调用的函数:
# Save ABB
public function spara_abb($ident) {
// Does IDENT exist?
$abb_existerar = $this->abb_existerar($ident);
try{
if ($abb_existerar === true){
$query2 = $this->db->prepare("
UPDATE `abb` SET `arbetsomrade` = :arbetsomrade,`syfte` = :syfte,
`overgripande_mal` = :overgripande_mal, `undervisning` = :undervisning,
`redovisningsform` = :redovisningsform, `lid` = :lid, `datum` = :datum,
`aktiv` = :aktiv
WHERE (`ident`=:ident)");
$query2->bindParam(':ident', $ident, PDO::PARAM_STR);
$query2->bindParam(':arskurs', $arskurs, PDO::PARAM_STR);
$query2->bindParam(':amne_id', $amne_id, PDO::PARAM_INT);
$query2->bindParam(':arbetsomrade', $arbetsomrade, PDO::PARAM_STR);
$query2->bindParam(':syfte', $syfte, PDO::PARAM_STR);
$query2->bindParam(':overgripande_mal', $overgripande_mal, PDO::PARAM_STR);
$query2->bindParam(':undervisning', $undervisning, PDO::PARAM_STR);
$query2->bindParam(':redovisningsform', $redovisningsform, PDO::PARAM_STR);
$query2->bindParam(':lid', $lid, PDO::PARAM_INT);
$query2->bindParam(':datum', $datum, PDO::PARAM_STR);
$query2->bindParam(':aktiv', $aktiv, PDO::PARAM_INT);
$query2->execute();
}else {
$query2 = $this->db->prepare("
INSERT INTO `abb`
(ident, arskurs, amne_id, arbetsomrade, syfte, overgripande_mal, undervisning, redovisningsform,lid,datum,aktiv) VALUES (:ident, :arskurs, :arbetsomrade, :syfte, :overgripande_mal, :undervisning,
:redovisningsform, :lid, :datum, :aktiv) ");
$query2->bindParam(':ident', $ident, PDO::PARAM_STR);
$query2->bindParam(':arskurs', $arskurs, PDO::PARAM_STR);
$query2->bindParam(':amne_id', $amne_id, PDO::PARAM_INT);
$query2->bindParam(':arbetsomrade', $arbetsomrade, PDO::PARAM_STR);
$query2->bindParam(':syfte', $syfte, PDO::PARAM_STR);
$query2->bindParam(':overgripande_mal', $overgripande_mal, PDO::PARAM_STR);
$query2->bindParam(':undervisning', $undervisning, PDO::PARAM_STR);
$query2->bindParam(':redovisningsform', $redovisningsform, PDO::PARAM_STR);
$query2->bindParam(':lid', $lid, PDO::PARAM_INT);
$query2->bindParam(':datum', $datum, PDO::PARAM_STR);
$query2->bindParam(':aktiv', $aktiv, PDO::PARAM_INT);
$query2->execute();
}
}catch(PDOException $e){
die($e->getMessage());
}
} // END save ABB
您可以将所有表单变量添加到一个数组中,然后像这样将其发送到函数:
$array = Array(':ident' => array($_POST['ident'], PDO::PARAM_INT),
':lid' => array($_POST['lid'], PDO::PARAM_INT),
':datum' => array($_POST['datum'], PDO::PARAM_STR),
':amne_id' => array($_POST['amne_id'], PDO::PARAM_INT));
$save_abb = $abb->spara_abb($array);
现在 class 你可以这样做:
# Save ABB
public function spara_abb($array) {
// Does IDENT exist?
$abb_existerar = $this->abb_existerar($array);
try{
if ($abb_existerar === true){
$query2 = $this->db->prepare("
UPDATE `abb` SET `arbetsomrade` = :arbetsomrade,`syfte` = :syfte,
`overgripande_mal` = :overgripande_mal, `undervisning` = :undervisning,
`redovisningsform` = :redovisningsform, `lid` = :lid, `datum` = :datum,
`aktiv` = :aktiv
WHERE (`ident`=:ident)");
foreach($array as $key => $val){
$query2->bindParam($key,$val[0],$val[1]);
}
$query2->execute();
....
....
这样你就可以将所有变量传递给 class。我建议确保所有变量都存在于函数 isset() 中,例如:
$idnent = isset($_POST['ident'])? $_POST['ident'] : '';
编辑: 使用var_dump($array);
打印所有数组,看看这是否是您想要的。