この人頭いいなと思ったエピソード

今、掲示板のようなものをPHPで書いてます。
ここで、書き込んだユーザがログインしてるユーザと同じだったら、削除ボタンを表示させたいです。
そこで以下のように書いてみましたが、$res1['user_id']がtest以外の時も削除ボタンが表示されてしまいます。

この問題を解決するにはどうすればよいのでしょうか。
ちなみに、$aには3次元配列が代入されています。

$(document).ready(function(){
$('.delbtn').css("display","none");

<?php
foreach($a as $key => $res1)
{
?>

if("<?php echo $res1['user_id']?>" === "test")
{
$('.delbtn').css("display","inline");
}
<?php

}

38 ?>

A 回答 (2件)

PHPを使わずに、静的なHTMLとJavaScriptの文書(test.htmlファイル)を作成して、JavaScriptが動作するようにしてみてください。



その後、それと全く同じHTMLデータを出力するようにPHPプログラムを作成してみて下さい。


慣れてきたら1つめの作業を頭の中だけで考えて、実際のhtmlファイルを作る作業を省くことが出来るようになります。

--------------
PHPを使うなら、どちらかというとJavaScriptで表示非表示を切り替えずに
PHPだけで完結する方が簡単ではないかと思います。

<?php
if(ユーザーが同じかどうかの判断):
?>

<?php // ユーザーが同じ時の処理 ?>
<input type="button" value="削除">

<?php
endif;
?>
    • good
    • 0

JavaScriptとPHPがごちゃごちゃに書かれていますね。



PHPはPHPであり、JavaScriptはJavaScriptなので、別物です。

質問者さんのプログラムでは、PHPを動かす為に、JavaScriptを操作している形ですよね。

基本的に、PHPはサーバー上で動かす必要があり、
JavaScriptはアクセスしたパソコン側で動かす必要があるので
JavaScriptを動かす為に、PHPを操作するという認識になります。

以下が修正案です。

$(document).ready(function(){
$('.delbtn').css("display","none");

<?php
foreach($a as $key => $res1){
if($res1['user_id'] === "test"){
echo "\t$('.delbtn').css(\"display\",\"inline\");\n";
}
}
?>
});

できれば、
$('.delbtn').css("display","none");
はJavaScriptとして非表示にせず、
CSS側で予め設定しておくと無駄な動作がなくて良いと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!