質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

1回答

1018閲覧

真偽値の切り替えについて

ms_msng

総合スコア0

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/06/08 09:53

前提・実現したいこと

checkboxがcheckedかそうでないかでtrue,falseで評価し、SQLを併用することでスタイリングをするなどの処理を行いたい

発生している問題・エラーメッセージ

以前の環境ではカラムに対してBOOLの設定をすることが出来たが、昨日XAMPPを使い始めたところtinyintというものに変わってしまい、すっかり扱いが分からなくなってしまいました。エラーメッセージは無いようです。 Todoアプリを試作しています。SQLを使った処理でTodoを追加することは可能でした。 formでidを送信した後に行う処理も全て実行されません。

該当のソースコード

function getPdoInstance() { try { $pdo = new PDO( DSN, DB_USER, DB_PASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_EMULATE_PREPARES => false ] ); return $pdo; } catch (PDOException $e) { echo $e->getMessage(); exit; } } function h($str) { return htmlspecialchars($str,ENT_QUOTES,'utf-8'); } function addTodo($pdo) { $title = trim(filter_input(INPUT_POST,'title')); if($title === '') { return; } $stmt = $pdo->prepare("INSERT INTO mytodos (title) VALUES (:title)"); $stmt->bindValue('title',$title,PDO::PARAM_STR); $stmt->execute(); } function toggleTodo($pdo) { $id = filter_input(INPUT_POST,'id'); if (empty($id)) { return; } $stmt = $pdo->prepare("UPDATE mytodos SET is_done = NOT is_done WHERE id = :id"); $stmt->bindValue('id', $id, PDO::PARAM_INT); $stmt->execute(); } function deleteTodo($pdo) { $id = filter_input(INPUT_POST, 'id'); if (empty($id)) { return; } $stmt = $pdo->prepare("DELETE FROM mytodos WHERE id = :id"); $stmt->bindValue('id', $id, PDO::PARAM_INT); $stmt->execute(); } function getTodos($pdo) { $stmt = $pdo->query("SELECT * FROM mytodos ORDER BY id DESC"); $todos = $stmt->fetchAll(); return $todos; } $pdo = getPdoInstance(); if($_SERVER['REQUEST_METHOD'] === 'POST') { $action = filter_input(INPUT_GET,'action'); switch ($action) { case 'add': addTodo($pdo); break; case 'toggle': toggleTodo($pdo); break; case 'delete': deleteTodo($pdo); break; } header('Location: '.SITE_URL); exit; } $todos = getTodos($pdo); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>MyTodo</title> <link rel="stylesheet" href="css/styles.css"> </head> <body> <h1>MyTodo</h1> <form action="?action=add" method="post"> <input type="text" name="title" placeholder="Type new todo."> </form> <ul> <?php foreach($todos as $todo): ?> <li> <form action="?action=toggle" method="post"> <input type="checkbox" <?= $todo->is_done ? 'checked': '' ; ?>> <input type="hidden" name="id" value="<?= h($todo->id); ?>"> </form> <span class="<?= $todo->is_done? 'done': ''; ?>"> <?= h($todo->title); ?> </span> <form action="?action=delete" method="post"> <input type="hidden" name="id" value="<?= h($todo->id); ?>"> <span>x</span> </form> </li> <?php endforeach; ?> </ul> </body> </html>

試したこと

データベースを確認し、カラム名が間違っていないか。
基本的な文法事項
このコードは模写なのですが、大元の方のソースコードとの照らし合わせ。
以上のことを試しました。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

直接的な解決にはならないと思いますが、MySQLではboolean型は0か1で表現されるので、文字列でtrueやfalseを入れるとエラーになります。

私の理解不足なら申し訳ないのですが、関数toggleTodoのprepare文のNOTの使い方がよく分からないです。入れるなら0かFALSEだと思うのですが、違うのでしょうか。

投稿2021/06/11 01:38

f.k

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問