アプリ版:「スタンプのみでお礼する」機能のリリースについて

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;
}
?>

A 回答 (1件)

"syntax error"とは文法上の間違いがあることを指摘しています。


問題の箇所でエラーとなっているのは

if(isset($_POST["c1"]));{ ← ここに";"がある
delete_data($conn, $_POST["c1"]);
}else{   ■ここ
echo "削除するデータが選択されていませんよ";
}

上記の説明どおり、if文が";”の存在のため、予測できない"else"があるとされたためです。もし、書いた通りに入力したのであれば、災難でしたね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!