首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表单处理PDO

表单处理PDO
EN

Stack Overflow用户
提问于 2015-03-15 11:09:42
回答 1查看 182关注 0票数 0

我在玩一个表格试图学习PDO。问题是什么都没有提交。没有任何东西被保存,我也没有收到任何错误。

我有一堂课(ABB)。在该类中,我有一个名为"spara_abb“的函数(以及脚本中使用的几个函数)。

问题:

  • 是否有任何方法来完成此代码的工作?
  • 这是解决这个问题的正确方法吗?

有什么建议吗?

表单:

代码语言:javascript
复制
<?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 -->

我们班调用的函数ABB:

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-15 13:37:23

您可以在数组中添加所有表单变量,并将其发送到如下所示的函数:

代码语言:javascript
复制
$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);

在课堂上,你可以做这样的事情:

代码语言:javascript
复制
# 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();
  ....
  ....

这样,就可以将所有变量传递给类。我建议确保所有变量都与isset()函数一起存在,例如:

代码语言:javascript
复制
$idnent = isset($_POST['ident'])? $_POST['ident'] : '';

编辑: Use var_dump($array);

打印所有数组并查看这是否是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29059932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档