下記の表現をした際に、必ずif文がelseの方に流れてしまいます。
そこで条件式をいろいろ書き換え試したところ、
if($_SESSION['user_id'] = $employee_id)
↓
if($_SESSION['user_id'] == $employee_id)
に書き換えた際にだけ、elseに流れず、
==の関係が成り立ちます。
その際に変更しているのは、条件式だけで他のコードを変更していません。
どのように変更すれば、正しく条件式が機能しますか?
<?php
$sql = "SELECT * FROM thread_detail WHERE thread_id = $id";
$date = mysql_query($sql,$link);
$logs = array();
while ($post = mysql_fetch_assoc($date)) {
$logs[] =
array($post['thread_detail_id'], $post['parent_thread_detail'], '<a href="thread.php?id='.$post['thread_id'].'&res='.$post['thread_detail_id'].'">'.$post['post_date'],$post['employee_id'].'</a>', $post['body'],'<a href="thread.php?id='.$post['thread_id'].'&edit='.$post['thread_detail_id'].'">編集</a>', '<a href="remove_thread.php?id='.$post['thread_id'].'&delete='.$post['thread_detail_id'].'"'.'onclick="return confirm(\'本当に削除しますか?\');">削除</a>');
}
foreach ($logs as list($no, $oya, $create_date, $employee_id, $kiji, $edit, $delete)) {
if ($oya > 0) { continue; }
if($_SESSION['user_id'] == $employee_id) {
print $create_date. $employee_id .'<br>'. $kiji . $edit . $delete . '<br>';
} else {
print $create_date. $employee_id .'<br>'. $kiji . '<br>';
}
listchild($logs, $no);
}
function listchild($logs, $parent) {
$ct = 0;
foreach ($logs as list($no, $oya, $create_date, $employee_id, $kiji, $edit, $delete)) {
if ($oya !== $parent ) { continue; }
if ($ct++ == 0) { print '<ul>'; }
if($_SESSION['user_id'] == $employee_id) {
print '<li>' .$create_date.$employee_id.'<br>'. $kiji . $edit . $delete . '<br>'.'<br>' . '</li>';
} else {
print '<li>' .$create_date.$employee_id.'<br>'. $kiji . '<br>'.'<br>' . '</li>';
}
listchild($logs, $no);
}
if ($ct > 0) { print '</ul>'; }
}
?>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>どのように変更すれば、正しく条件式が機能しますか?
http://www.php.net//manual/ja/language.operators …
http://www.php.net//manual/ja/types.comparisons. …
if の条件が比較演算でなく代入式の場合は「代入する値」が条件になります。
<?php
if ($var = false) {
print 'true<br>';
} else {
print 'false<br>';
}
if ($var = true) {
print 'true<br>';
} else {
print 'false<br>';
}
>if($_SESSION['user_id'] = $employee_id)
これで「else が実行される」のであれば、$employee_idの値が false と判断される値( 0 など)だと推測されます。また比較演算に書き直したら true になるということは $_SESSION['user_id'] もどうかなとは思います(未定義だったりはしないんでしょうねぇ・・・)。
いずれにしても、$_SESSION['user_id'] や $employee_id をvar_dumpして内容を確認するのが先です。それを確認しないでソースを書き直しても無駄です。
(蛇足)
ネイティブなMySQL関数はすでに非推奨です。PDOで書き直すことを強くお勧めします。
http://www.php.net/manual/ja/mysqlinfo.api.choos …
No.1
- 回答日時:
……if 文の中に = が一つだけの「判定」をやっているところがありませんが?
まあおそらく間違って if 文がきいてるソースをペーストしてしまったのでしょう。
それはともかく、PHP では = 一つだけを書いた場合は(それが文字列の内部でない限り)つねに左辺と右辺の比較ではなく左辺への右辺の値の代入を行います。
http://www.php.net/manual/ja/language.operators. …
左辺と右辺が等しいかどうかを得たいならば === か == を使用してください。
http://www.php.net/manual/ja/language.operators. …
なお、代入を行っている方の if 文がなぜエラーとならなかったというと、PHP では TRUE/FALSE 以外の値を TRUE/FALSE であると読み替えて if の判定を行います。
http://www.php.net/manual/ja/language.types.bool …
今回の場合は、代入の結果をもとに判定して、その読み替え結果が TRUE だったのでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP php エラー 2 2022/10/23 16:43
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP preg_matchで Warning: Undefined variableが出ます 1 2022/11/15 17:06
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゆゆにゃ。
-
php 入力画面から確認表示画面...
-
アンドロイドスマホでのphp ech...
-
PHPのエラーの解消法について教...
-
RSSと投稿記事を交互に表示させ...
-
PHPSpreadsheetによる書き出し...
-
フォームで戻った際に入力済み...
-
画像ファイルの名前をそのままU...
-
これの対応OSを教えて下さい。p...
-
アマゾンのような評価の星を選...
-
ファイルアップロードに関して...
-
Q&Aサイトを作成していてURLの...
-
phpでcookieがうまく保存されない
-
アップロード画像数でCSSを分け...
-
アップロードファイルの数に応...
-
php 確認表示画面で値をSESSION...
-
ワードプレスプラグイン MW WP ...
-
phpのメールフォームの完了画面...
-
PHPSpreadsheetを使って関数を...
-
PHPで画像の渡しが上手く行きま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
PHPで[]の使い方について
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
sortable ギブアップです…助け...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
チェックボックスによる複数の...
-
PHPでMySQLデータを呼び出し、w...
-
mysql_fetch_objectの書き方を...
-
SELECT結果から動的にコンボボ...
-
チェックボックスでチェックし...
-
VBA初心者です。
-
PHPについてなのですが未定義の...
-
文字化けが解決できません。お...
-
htmlとphpの分離
-
php テーブルが作成できない
-
検索結果をgoogleのように数件...
おすすめ情報