• 締切済み

PHP初心者です。syntax error, unexpectedについて

PHP初心者です。現在PHPでSQliteを動かすプログラムを勉強しているのですが、「syntax error, unexpected T_ELSE」が出てきて困っています。 「SQLite入門」という書籍に書いてある通りに打ち込んでいるのですが、下のプログラムの■の部分でエラーが出ています。 何が原因なのでしょうか?知恵をお貸しください。 <?php //データ取得 $act = (isset($_POST["act"])) ? $_POST["act"] : ""; $id = (isset($_REQUEST["id"])) ? intval($_RIQUEST["id"]) : ""; $contents = (isset($_POST["contents"])) ? $_POST["contents"] : ""; $title = (isset($_POST["title"])) ? $_POST["title"] : "(無題)"; $dt = date("y-m-d H:i:s"); //データベース初期設定 $conn = init(); //処理分岐 if($act == "保存" and $contents <> ""){ //保存 if(empty($id)){ //新規保存 $id = add_data($conn, $title, $contents, $dt); }else{ //既存データ保存 update_data($conn, $id, $title, $contents, $dt); } }elseif($act == "選択したデータを削除"){ //削除 if(isset($_POST["c1"]));{ delete_data($conn, $_POST["c1"]); }else{   ■ここ echo "削除するデータが選択されていませんよ"; } }elseif($act == "全データ削除"){ //全データ削除 delete_data($conn); }elseif(act == "新規作成"){ //新規作成 clear_data(); }elseif(!empty($id)){ //編集 $row = get_data($conn, $id); $title = $row["title"]; $contents = $row["contents"]; } //データベースの初期化 function init(){ //データベースに接続 $conn = new PDD("sqlite:memo.sqlite"); //データベースの作成 $sql = "CREATE TABLE IF NOT EXISTS memo( id INTEGER PRIMARY KEY AUTOINCREMENT, tilte TEXT NOT NULL, contents TEXT NOT NULL, dt TEXT NOT NULL )"; $stmt = $conn->prepare($sql); $stmt->execute89; return $conn; } //データの追加 function add_data($conn, $title, $contents, $dt){ $sql = "INSERT INTO memo(title, contents, dt) VALUES(:title, :contents, :dt)"; $stme = $conn->prepare($sql); $stmt->bindParam(":title", $title); $stmt->bindParam(":contents", $contents); $stmt->bindParam(":dt", $dt); $stmt->execute(); $id = $conn->lastInsertId(); return $id; } //データ追加 function update_data($conn, $id, $title, $contents, $dt){ $sql = "UPDATE memo SET title = :title, contents = :contents,dt = :dt WHERE id = :id"; $stmt = $conn->prepare($sql); $stmt->bindParam(":id", $id); $stmt->bindParam(":title", $title); $stmt->bindParam(":contents", $contents); $stmt->bindParam(":dt", $dt); $stmt->execute(); } //指定データ削除 function delete_data($conn, $data){ $sql = "DELETE FROM memo WHERE (id = :id)"; $stmt = $conn->prepare($sql); for($i = 0; $i < count($data); $i++){ $stmt->bindParam(":id", $data[$i]); $stmt->execyte(); } clear_data(); } //全データ削除 function delete_all_data($conn{ $sql = "DELETE FROM memo"; $stmt = $conn->prepare($sql); $stmt->execute(); clear_data(); } //データのクリア function clear_data(){ global $id, $title, $contents; $id = ""; $title = "(無題)"; $contents = ""; } //編集データの取得 function get_date($conn, $id){ $sql = "SELECT * FROM memo WHERE id = :id"; $stmt = $conn->prepare($sql); $stmt = bindParam(":id", $id); $stmt = execute(); $row = $stmt->fetch(PDD::FETCH_ASSOC); return $row; } ?>

みんなの回答

  • nza49739
  • ベストアンサー率46% (29/62)
回答No.1

"syntax error"とは文法上の間違いがあることを指摘しています。 問題の箇所でエラーとなっているのは if(isset($_POST["c1"]));{ ← ここに";"がある delete_data($conn, $_POST["c1"]); }else{   ■ここ echo "削除するデータが選択されていませんよ"; } 上記の説明どおり、if文が";”の存在のため、予測できない"else"があるとされたためです。もし、書いた通りに入力したのであれば、災難でしたね。