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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

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

解決済

4回答

1082閲覧

PHPにおいてif文の使い方。

hayatonbi94

総合スコア6

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

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グッド

1クリップ

投稿2020/08/29 04:46

現在、sqlのカラムデータをphpで取得して表示しています。その際に、
$aryListの変数に値がない(空)の場合、内容を表示させないようにしたいと考えています。
現段階では、「,」が大量にでてしまい困っています。その改善策として、if文を使うのはわかるのですが、値がないところを表示されないようにするにはどうすればよいか教えてください。
よろしくお願いします。,,,,」

PHP

1コード<?php echo htmlspecialchars($aryList['language_html'].',',ENT_QUOTES,'UTF-8'); ?> 2 <?php echo htmlspecialchars($aryList['language_css'].',',ENT_QUOTES,'UTF-8'); ?> 3 <?php echo htmlspecialchars($aryList['language_javasprict'].',',ENT_QUOTES,'UTF-8'); ?> 4 <?php echo htmlspecialchars($aryList['language_ruby'].',',ENT_QUOTES,'UTF-8'); ?> 5 <?php echo htmlspecialchars($aryList['language_python'].',',ENT_QUOTES,'UTF-8'); ?> 6 <?php echo htmlspecialchars($aryList['language_java'].',',ENT_QUOTES,'UTF-8'); ?> 7 <?php echo htmlspecialchars($aryList['language_go'].',',ENT_QUOTES,'UTF-8'); ?> 8 <?php echo htmlspecialchars($aryList['language_sql'].',',ENT_QUOTES,'UTF-8'); ?> 9 <?php echo htmlspecialchars($aryList['language_php'].',',ENT_QUOTES,'UTF-8'); ?> 10 <?php echo htmlspecialchars($aryList['language_c'].',',ENT_QUOTES,'UTF-8'); ?> 11 <?php echo htmlspecialchars($aryList['language_c++'].',',ENT_QUOTES,'UTF-8'); ?>

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

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

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

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

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

guest

回答4

0

$aryList['~~']が存在してもしなくても、
「,」をつけてhtmlspecialchars()で加工して出力しているんだから、そうなります。

$aryList['~~']が存在しない場合にも差し支えないようダミー文字列を詰めるとか、
in_arrayを駆使して丁寧に処理するか。
前者が楽なような気がしますが。
クエリーで取得しているなら、クエリーのSELECT文で工夫してしまえばいいですね。

投稿2020/08/29 05:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hayatonbi94

2020/08/29 05:42

回答ありがとうございます。 ダミー文字列を調べて理解して、その方法も試してみます。
退会済みユーザー

退会済みユーザー

2020/08/30 06:54

MYSQLならIFNULL(expr1, expr2)とするとexpr1がNULLのときにexpr2を返すことができるので、 NULLだったときに特定の文字列を詰めるみたいなときに便利です。
guest

0

(空)の場合

【PHP: empty - Manual】
https://www.php.net/manual/ja/function.empty.php

【PHP isset, empty, is_null の違い早見表 - Qiita】
https://qiita.com/shinichi-takii/items/00aed26f96cf6bb3fe62


値がないところを表示されないようにする

echoしない。

投稿2020/08/29 04:51

kei344

総合スコア69606

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

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

hayatonbi94

2020/08/29 05:04 編集

解答ありがとうございます。 私の説明不足なのですが、 値のないところを表示されないようにする >echoしない。  とありますが、echoはして出さない方法はありますか? echoしなければいけない理由として、1つのechoで5人分のデータを取得しているためです。
kei344

2020/08/29 05:05

> 1つのechoで5人分のデータ 提示のコードではそうなっていません。貼り付けるコードを間違ったりしていませんか?
hayatonbi94

2020/08/29 05:08

部分的に切り取ってしまったため全量張らさせていただきます。見にくくてすみません。 <?php //データベース接続 $dsn = 'mysql:dbname=user;host=localhost'; $user = 'root'; $password = 'パスワード'; $dbh = new PDO($dsn,$user,$password); $sql = "SELECT * FROM user"; $result = $dbh -> query($sql); //クエリー失敗 if(!$result) { echo $dbh->error; exit(); } //レコード件数 $row_cnt = $result->rowCount(); ///連想配列で取得 $sth = $dbh -> query($sql); $aryList = $sth -> fetchAll(PDO::FETCH_ASSOC); ?> ​ ​ <html> <head> <link rel="stylesheet" type="text/css" href="/css/search.css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>ユーザー詳細情報画面</title> </head> <body> <h1>テスト用表示画面</h1> <?php foreach($aryList as $aryList){ ?> <table border="1" width="80%" bordercolor="#green" bgcolor="#f5f5f5"> <tr bgcolor="deepskyblue"> <td>ユーザ名</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['user_name'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>希望する活動場所</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['place'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>使用できるプログラミング言語</td> </tr> <tr> <td> <?php echo htmlspecialchars($aryList['language_html'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_css'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_javasprict'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_ruby'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_python'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_java'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_go'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_sql'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_php'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_c'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['language_c++'].',',ENT_QUOTES,'UTF-8'); ?> </td> </tr> <tr bgcolor="deepskyblue"> <td>実務経験歴</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['work_experience'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>自分の年齢</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['my_age'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>相手の希望年齢</td> </tr> <tr> <td> <?php echo htmlspecialchars($aryList['you_hope_age_dont_worry'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_10s'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_early20s'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_late20s'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_early30s'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_late30s'].',',ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($aryList['you_hope_age_40s'].',',ENT_QUOTES,'UTF-8'); ?> </td> </tr> <tr bgcolor="deepskyblue"> <td>目標</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['target'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>自己紹介</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['self_introduction'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr bgcolor="deepskyblue"> <td>Twitter</td> </tr> <tr> <td><?php echo htmlspecialchars($aryList['twitter'],ENT_QUOTES,'UTF-8'); ?></td> </tr> <br> </table> <?php } ?> </table> </body> </html>
kei344

2020/08/29 05:12

コメントエリアではマークダウンが使えないため、コードはここではなく質問文にコードブロックで追記してください。(決して元のコードを消さないでください) また、「1つのechoで5人分のデータ」がこのコードでもありません。
hayatonbi94

2020/08/29 05:15

了解しました。 >また、「1つのechoで5人分のデータ」がこのコードでもありません。 了解しました。私の認識では5人分のデータを取得しているため、私がそう思う画像を張らさせていただきます。 お手数をおかけします。
kei344

2020/08/29 05:19

最初の時点で「echo 5人分のデータ;」が「1つのechoで5人分のデータ」だと受け取りました。 提示されたコードは「foreachで5人分のデータを1つずつecho」です。 echoごとにifで出す出さないを処理すればよいだけなのでは。
hayatonbi94

2020/08/29 05:35

>最初の時点で「echo 5人分のデータ;」が「1つのechoで5人分のデータ」だと受け取りました。 提示されたコードは「foreachで5人分のデータを1つずつecho」です。 そうです。 そのやり方だとechoごとにifで出す出さないを処理をするのですね!
hayatonbi94

2020/08/29 05:39

すみませんが上記のやり方が分かりません。if文の形などはわかるのですが、出さないときはどのような処理をすればよいかわかりません。
guest

0

そもそも、出力時ではなくDBから取得してきて$aryList定義時に空の場合は$aryListに詰めなければ良いのでは。
出力する項目だけ詰めてforeachで全出力するなり「,」で繋ぎたいならexplode()するなり、出力のコードをシンプルに書く工夫をされたほうが良いかと思います。

配列内の空文字を取り除く機能を使用(または共通機能として作成)しても良いですが、出力時にどうのこうのするより、「出力時に使いたい形にできるだけ整形した状態で取得する」方が良いと思います。
不要なカラムはSELECT句に入れない、フォーマットもSQLで可能ならSQLで行っておく、など、幾らでも工夫できます。

分岐が増えればその分バグ混入の率が上がるので、なるべく分岐を書かなくて済むように組めないか熟考してください。後付けの分岐はどこかで必ずボロが出ます。

投稿2020/08/29 05:14

編集2020/08/29 05:21
m.ts10806

総合スコア80875

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

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

hayatonbi94

2020/08/29 05:59

回答ありがとうございます。 了解しました。分岐が増えない方法も模索します。
guest

0

自己解決

<?php echo htmlspecialchars($aryList['language_css'].' ',ENT_QUOTES,'UTF-8'); ?>

のコードにしたところ問題なく解決できました。

解答してくだりありがとうございました。

投稿2020/09/01 14:13

hayatonbi94

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問