0

カスタムCMSを構築していて、データベース内の既存の情報を編集することになっているスクリプトを作成しました。

以前に別のデータベースのコードを使用したことがあり、問題なく機能しましたが、新しいデータベースを参照するようにインデックス名を変更したため、機能しなくなりました。

情報は「編集」ボタンのあるページに表示され、選択した情報をテキストボックスに表示するhtmlフォームにユーザーをリンクします。

フォームに情報を表示するのに問題はありませんが、送信ボタンを押すとコードはそれを実行せず、情報は更新されず、エラーメッセージも表示されません。

だから私はこれのどこかに問題があるとかなり確信しています...(コメントを無視してください)

    if (isset($_GET['edittimeslot']))
    {   
       $timeslotid = $_GET['timeslotid']; 

       try
       {
          $sql = "SELECT timeslotid, Time FROM timeslots WHERE timeslotid = timeslotid" ;
          //echo $sql;
          $data = $pdo->query($sql);
          $timeslots = $data->fetch();
          //print_r($acts);
       }
       catch(PDOException $e)
       {
          echo "this didnt work" .$e->getMessage()  ;
       }

       $pagetitle = 'Edit your date here';
       $timeslotid = $timeslots['timeslotid'];
       $time = $timeslots['Time'];
       $button = 'Edit timeslot';
       include 'timeslot.form.php';
       exit();
    }


     // is all of the requested feilds appropiate
    if (isset($_POST['submit']) && $_POST['submit'] == 'Edit timeslot')
    {       
       // get the form data that was posted ready to insert into the stage database
       $timeslotid = $_POST['timeslotid'];
       $time= htmlspecialchars($_POST['time']);

       try
       {
           // prepare the query to insert data into stages table
           $sql = "UPDATE timeslots 
                                    SET Time = :Time,
                                    WHERE timeslotid = :timeslotid";

           $stmt = $pdo->prepare($sql);
           $stmt->bindParam(':Time', $time);
           $stmt->bindParam(':timeslotid', $timeslotid);
           $stmt->execute();
        }
        catch(PDOException $e)
        {
           //error message goes here if the insert fails
        }
  }

HTML:

        <!doctype html>
<head>
    <style type="text/css">
        .container {
            width: 800px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
<div class="container">
<h1><?php echo $pagetitle;?></h1>


<form action='.' method='post'>
    <!-- stage name -->
    <p><label for='time'> What is the timeslots you would like to add? 00:00-00:00 </label></p>
    <p><input type='text' name='time' id='time' value='<?php echo $time;?>'> </p>
    <p><input type='submit' name='submit' value='<?php echo $button;?>'></p>
</form>

</div>
</body>
4

2 に答える 2

0

私がすぐに目にするのは、次の行です。

$timeslotid = $_POST['timeslotid'];

そのフォーム フィールドはフォームのどこにありますか? どこにも見当たりません。また、実行を変数に割り当て、それを var_dump して、TRUE または FALSE が返されるかどうかを確認してみてください。

$success = $stmt->execute();
var_dump($success);

さらに、DB 列の名前がす​​べて小文字のtimeではなくTimeであることを確認してください。

于 2013-01-28T06:15:53.960 に答える