自己を過大評価した瞬間から、思考の硬直が始まる。
投稿者: Hisa
PHP PDO MySQLの検索結果のキャスト
PHP PDO MySQLでセレクトした数値結果から判別するプログラムで、=== で厳密型チェックしてる場合、MySQLがTINYINTのフィールドを読み込む際、環境によって(Windows or Linux, PHP7 or PHP8)はうまく読み込めなくなったのでキャストしてみると解決しました。
< コード例 >
SQL
$SQL = <<<EOM SELECT IS_MAILHTML FROM m_user_aviation WHERE ID = :USERID EOM;
これはだめ
// パラメータセット // $stmt = $dbh->prepare($SQL); $stmt->bindvalue(':USERID', $userid, PDO::PARAM_STR); $stmt->execute(); // 格納 // //$array = array(); $mailtype= ""; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //var_dump ($row["IS_MAILHTML"]) ; $mailtype = $row["IS_MAILHTML"] === 1 ? "html" : "text"; }
これでオーケー
// パラメータセット // $stmt = $dbh->prepare($SQL); $stmt->bindvalue(':USERID', $userid, PDO::PARAM_STR); $stmt->execute(); // 格納 // //$array = array(); $mailtype= ""; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //var_dump ($row["IS_MAILHTML"]) ; $mailtype = (int)$row["IS_MAILHTML"] === 1 ? "html" : "text"; // 必ずintにキャスト }
|
Tabulator topCalc 集計行
Tabulatorで集計行を配置してみました。
カラム設定の公式ドキュメントはこちら
Column Calcuculationのドキュメントはこちら
< コード例 >
カラムのプロパティのtopCalcで合計、平均、件数とかをセットします。
// 飛行中数 //
{
title: "Active",
field: "active_count",
width: 40,
hozAlign: "right",
topCalc: "sum",
formatter: function (cell, formatterParams, onRendered) {
//console.log(cell.getValue())
if (cell.getValue() <= 0) {
return ""
}
else {
return cell.getValue()
}
}
},
{field: "id", visible: false}
]
< 画面例 >
件数列と合計列を上に配置
アインシュタイン・明日
昨日から学び、今日を生き、明日へ期待しよう。
大隈重信・無駄
男性だけが活躍する社会は国力の半分を無駄にしている。
|
大隈重信・道
道が窮まったかのようで他に道があるのは世の常である。時のある限り、人のある限り、道が窮まるという理由はないのである。
|
ジョンレノン・愛の量
結局、あなたが受け取る愛はあなたが与える愛に等しい。
|
スティーブジョブズ・旅の過程
旅の過程にこそ価値がある。
Tabulator tickCross のチェックボックス
TabulatorでtickCrossのチェックボックスを使ってみました。
< コード例 >
状態が変化した時、即サーバーに送信して保存しています。
カラムの設定
// 通知設定チェック //
{
title: "N",
field: "IS_NOTIFY",
width: 20,
hozAlign: "center",
formatter: "tickCross",
editor: "tickCross", editorParams: {
trueValue: 1, // Onの値
falseValue: 0, // Offの値
tristate: false, // 中立状態なし
indeterminateValue: "n/a",
elementAttributes: {
maxlength: "10", //set the maximum character length of the input element to 10 characters
}
},
cellEdited: function (cell) {
//cell - cell component
// 追加中の場合、何もしない //
if (isAddingNow) {
return false
}
// データ列名 field //
const fieldName = cell.getField()
console.log("--- cell.getField()")
console.log(fieldName)
// cellの値 //
const cellval = cell.getData()[fieldName]
console.log("--- cellval")
console.log(cellval)
// テーブルのid //
const tableId = cell.getData()["ID_BOOK"]
// サーバーに送信して保存する 他の列と共通の関数を使う //
const updtres = postACellData(fieldName, cellval, tableId)
if (updtres === "Success") {
toastr.success("Notify check was updated")
}
else {
toastr.error("Update error occured !!")
}
},
},
サーバー送信共通処理
/**
* セルフィールド値更新
* @param {type} fieldname
* @param {type} value
* @param {type} id
* @returns {.ajax@call;exec.result|res.result}
*/
const postACellData = (fieldname, value, id) => {
console.log(fieldname, value, id)
// -C セル値更新リクエスト
const ajax = new MyAjax("update/UpdateABookField.php", {
field: fieldname,
value: value,
id: id
})
const res = ajax.exec()
return res["result"]
}
サーバー側
<?php /** * Tabulator セル値更新 * UpdateABookField.php * * 2023-01-06 tanulator aviation用 * */ header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); header("Content-type: application/json"); ini_set('default_charset', 'UTF-8'); ini_set('display_errors', 0); //ini_set("memory_limit", "200M"); ini_set("memory_limit", "-1"); date_default_timezone_set('Asia/Tokyo'); /* * **************************************************** */ $SQL = <<<EOM UPDATE h_book SET ##FIELD## = :VALUE, TM_UPDT = CURRENT_TIMESTAMP WHERE ID = :ID EOM; // == リクエストパラメータ == // $field = $_POST["field"] ? $_POST["field"] : $_GET["field"]; $value = $_POST["value"] ? $_POST["value"] : $_GET["value"]; $id = $_POST["id"] ? $_POST["id"] : $_GET["id"]; if (!$field) { $field = "DT_DEP"; } if (!$value) { $value = "2023-01-01"; } if (!$id) { $id = 296; } $res = array(); try { // 接続定義 // $connect_db = "mysql:dbname=????????;host=localhost;charset=utf8;"; $connect_user = '????????'; $connect_passwd = '????????'; //データベース接続 // $dbh = new PDO( $connect_db, $connect_user, $connect_passwd ); $sql = str_replace("##FIELD##", $field, $SQL); // パラメータセット // $stmt = $dbh->prepare($sql); $stmt->bindvalue(':VALUE', $value, PDO::PARAM_STR); $stmt->bindvalue(':ID', $id, PDO::PARAM_INT); $stmt->execute(); $res["result"] = "Success"; } catch (PDOException $e) { //var_dump($e->getMessage()); $res["result"] = "Fail"; } // 切断 $dbh = null; echo json_encode($res);
< 画面例 >
Windows10 で PHP8.1のcurlが動かないエラーの解消
Windows10でXAMPでインストールしたPHP8.1でCurlがどうしても動かないので、調べて何とか動くようになりました。
ここで教えていただきました。
調べると沢山ヒットしたので試したところ、
php.iniのextensionの設定、dllのコピー等、
どれもだめだったところ、環境変数のPathにPHPのパスを記述することで解決してます。
< phpinfoで確認 >
< 環境変数 path >
|
|
コメントを投稿するにはログインしてください。