![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPの初心者です。下記のコードはDBに月刊情報を収納させて、$sqlやSQL文でやり取りする構造です。
構造や意味が理解できないコードがありますので、断片的な内容となりますが、どなたか解説をお願いできますでしょうか。質問が多くてすみません。
回答するのに追加情報が必要の場合は教えてください。
よろしくお願い致します。
①コード:
「 $sql .= " from m_magazine ";
if ($para['is_deleted'] == "y") {
$sql .= " where m_magazine.magazine_id is not null ";
} else if ($para['is_deleted'] == "yonly") {
$sql .= " where m_magazine.is_deleted = 'y' ";
} else {
$sql .= " where m_magazine.is_deleted = 'n' ";
}
」
質問:こちらのif文の意味は何でしょうか。
「 else if ($para['is_deleted'] == "yonly") {」の「yonly」の指定はどういう意味でしょうか。
②コード:
「$sql .= " and m_magazine.magazine_id = '" . f_db_escape($para['magazine_id']) . "' ";」
質問:「. 」と「' "」はどういう意味と役割でしょうか。
③コード:「「if ($para['orderby'] == "magazine_title_desc") {
$sql .= " order by m_magazine.magazine_title desc";
} else if ($para['orderby'] == "magazine_title_asc") {
$sql .= " order by m_magazine.magazine_title asc";」
質問:「desc」と「asc」を両方指定する意味は何でしょうか。
④「$sql .= " , m_magazine.magazine_id asc";」はDBからとってきた月刊IDが昇順で並ばせるような指定でしょうか。
⑤コード:
「$data['ct_total'] = 0;
$data['ct_min'] = 1 + ($conf['CT_PER_PAGE'] * ($para[page] -1));
$data['ct_max'] = $conf['CT_PER_PAGE'] * $para[page];
$ret = f_db_select2($sql);
while ($h = mysql_fetch_array($ret)) {
$data['ct_total']++;
if ($data['ct_total'] < $data['ct_min']) continue;
if ($data['ct_max'] < $data['ct_total']) continue;」
質問:$dataはDBのパラメータ(設定値)を見る関数として設定されていますでしょうか。
「['ct_total'] = 0;」はどういう意味でしょうか。
「$data['ct_min'] = 1 + ($conf['CT_PER_PAGE'] * ($para[page] -1));」の式の意味は何でしょうか。
「$conf」は「CT_PER_PAGE」を設定するための関数でしょうか。
「ct_」という記述はどういう文法でしょうか。
['ct_min']と['CT_PER_PAGE']のように小文字と大文字を区別する意味は何でしょうか。
$retはDBからの出力で、$resはDBへの入力という理解でよろしいでしょうか。
⑥「if ($data['list'] == "") $data['list'] = '<tr><td class="bg_cont" colspan="6">データがありません</td></tr>';」の「""」は初期化という理解でよろしいでしょうか。
⑦コード:
「 if ($para['magazine_id'] == "") {
$data['ctl_add'] = 'y';
} else {
$sql = "select * from m_magazine where magazine_id = '%%1%%'";
$ret = f_db_select($sql, $para['magazine_id']);
$data = array_shift($ret);
}」
質問:「$data['ctl_add'] = 'y';」はどういう意味でしょうか。
「%%1%%」という指定はidを「1」からセレクトするという意味でしょうか。
「array_shift」を調べますと、配列から先頭の要素を取り除くとありますが、先頭の要素はこの場合ではIDではなく、どの要素を指しますでしょうか。
「$data['READONLY_magazine_id'] = 'readonly';」は月刊IDを読み出し専用指定という意味でしょうか。 読み出し専用指定にする意味は何でしょうか。
⑧コード:
「 require 'lib/validate_magazine.php';
$err = f_validate_magazine_confirm();
if (count($err) > 0) f_err_exit($err);」
質問:こちらの処理は「エラーはvalidate_magazine.phpを通して、もし1個以上ありましたらvalidate_magazine.phpで設定しましたエラーメッセージを出す」という意味でしょうか。
「f_err_exit」の「exit」は出力という意味でしょうか。
No.1ベストアンサー
- 回答日時:
他人の書いた冗長なコードを一部だけ見ても明確な回答はむずかしいですが
想像してかきます
>①コード
それを$para配列のキー:is_deletedの値が3つあって
「y」・・・削除済みのときはmagazine_idカラムがNULLではないデータを抽出
「yonly」・・・y only?より厳密に削除済みのときはis_deletedカラムが「y」のデータを抽出
それ以外はis_deletedカラムが「n」のデータを抽出しています。
「yonly」は筆者のセンスなので良いとも悪いとも、なんとも言えないですね
>②コード
>質問:「. 」と「' "」はどういう意味と役割でしょうか。
「. 」は文字列の結合です、PHPの一般的な使われ方
「' "」はそこだけ切り取るから意味不明なのであって
「 and m_magazine.magazine_id = '・・・・' 」というSQL文を書くための布石です。
ちなみにf_db_escape()というユーザー関数の内容がわからないのでなんとも言えませんが
書き方がかなり古い、今のPHPでは敬遠される書き方です。
>③コード
>質問:「desc」と「asc」を両方指定する意味は何でしょうか。
パラメータのキーorderbyをみて "magazine_title_desc"をチェックしているので
それ以外のモノがはいっていれば「magazine_title」を利用してソートしないということです。
>④コード
>「$sql .= " , m_magazine.magazine_id asc";」
magazine_idの値で昇順にソートしています。
「,」でつないでいるので、一次ソートが別途あり、あくまで二次ソートしているのでしょう
>⑤コード
全体が俯瞰できないのでなんともいえません
>⑥コード
>「""」は初期化
ちがいます。
$data['list']の値が""と合致する場合という意味です。
ただし演算子「==」はよほどのことがない限り使いません。
最低でも「===」を利用しましょう。
※「==""」でチェックすると、falseや0やNULLといった理論的な空文字もヒットして
比較が厳密にできません。
>⑦コード
>「$data['ctl_add'] = 'y';」はどういう意味でしょうか。
$data['ctl_add']に'y'を代入しているだけです
なぜそうしているかはわかりません。
>「%%1%%」という指定はidを「1」からセレクトするという意味でしょうか。
「magazine_id」の値が「%%1%%」と合致するという条件ですね
筆者の意図はわかりませんがおそらくf_db_select()関数でsprintf的な
置き換えをしてSQL文を実行してるように想像できます
>先頭の要素はこの場合ではIDではなく、どの要素を指しますでしょうか。
質問の意味がわかりません
コード自体は$retにSQL文をした戻り値が配列として返ってきていて
その1行目を$dataに代入しているだけです。
>「$data['READONLY_magazine_id'] = 'readonly';」
そもそもそんな記載がないのでなんとも言えません。
筆者がなんらかの意図をもってreadonly属性をつけているのでしょう
⑧コード
>質問:こちらの処理は「エラーはvalidate_magazine.phpを通して、もし1個以上ありましたら
>validate_magazine.phpで設定しましたエラーメッセージを出す」という意味でしょうか。
これも意味不明
おそらくライブラリ「lib/validate_magazine.php」にエラー処理がかいてあって
f_validate_magazine_confirm()でエラーを$err配列に代入しているのでしょう
f_err_exit()はおそらくデバッグでエラーを表示して終了するというコードが書いてあるのかと
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
PHPで入力フォームでデータを確...
-
phpでcookieがうまく保存されない
-
フォームで戻った際に入力済み...
-
[php初心者]サイトを見てデータ...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
プログラミング言語で、使える...
-
phpのクラスメソッドの定義が長...
-
アマゾンのような評価の星を選...
-
ファイルアップロードに関して...
-
掲示板のセキュリティについて...
-
Q&Aサイトを作成していてURLの...
-
アップロード画像数でCSSを分け...
-
PHP一覧表示した項目にリンクを...
-
PHPのセッション有効期限について
-
php 確認表示画面で値をSESSION...
-
php 完了画面の送信メールのコ...
-
PHPで訪問回数を表示するカウン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
stdClass Objectを連想配列のよ...
-
CSVデータの行数カウントをした...
-
ヒアドキュメントの中のfor文
-
複数行のデータのPOST処理に関して
-
C言語でCSVファイルの行数を読...
-
While文を使って配列の中身を全...
-
行数が30万件ほどあるCSVから、...
-
CSVファイルの最終行のデー...
-
csvの内容を行単位で削除したい
-
バイナリファイルの内容を、そ...
-
doxygenを使用する環境について
-
PHPで、CSVファイルを、指定し...
-
FortranのOPEN文
-
csvファイルを読み込み→上書き...
-
PHPでCSVの一部の行を編集したい
-
ラジオボタンのチェックの付け方。
-
Ethnaでのsection使用法
-
CSVデータを正規表現で抜き出せ...
おすすめ情報