位置情報で子どもの居場所をお知らせ

今、掲示板のようなものを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 ?>

このQ&Aに関連する最新のQ&A

A 回答 (2件)

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

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



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


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

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

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

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

<?php
endif;
?>
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qfunctionから別のfunctionを実行したい

よろしくお願いします

今JavaScriptで
function a(){
処理A
}
function b(){
処理B
}
function c(){
処理C
処理Aをして終わり
}
と言うことをしたいのですが

function a と同じコードをcに書くのが大変なので
function cからaを呼び出して実行することができないかと考えています

検索も色々してみたのですが
これと言った答えがなかったので質問しました
よろしくお願いします。

Aベストアンサー

他の箇所から、function a()をコールするときと同様に、function c()内でfunction a()をコールすることができます。

function c()
{
処理C
a();
}

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Q同じid属性を何回も使ってはいけないの?

「Another HTML-lint gateway」(個人のサイトっぽいのでリンクは貼りません)というHTMLの文法チェックサイトで、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">として文書をチェックしたところ、id属性が重複して使用されているのが良くないという結果が出ました。

具体的にはHEAD内にstyle定義として、仮に「#td1 td{ スタイルの内容 } 」という属性を書き、その属性を反映させたいテーブルに「id="td1"」を付けました。全く同じ処理をしたいテーブルがたくさんあるのでそれらにも全て「id="td1"」を付けたところ、上記チェックでダメだしを食らったというわけです。

id属性は、同じように処理したい箇所を、ひとつ定義を作ることによって全て同じように処理を適用するものだと思ってるんですが、そういうものではないんですか?
また、同じような属性としてclassも同様なのでしょうか?

Aベストアンサー

idは重複してはいけません。
classは重複してOK。

idは一意にするためにあって、classは分類するためにあるって感じかな。

Q別ファイルのfunctionの読み込み方

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために私が最初に書いたhtmlの文です(もちろん実行できませんでした)
------------------------------------
<html>
<script language="javascript" src="hello.js">
aisatsu(){
document.write(aa);
}
</script></html>
------------------------------------

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために...続きを読む

Aベストアンサー

function内で「var」をつけて変数を宣言するとfunction外からその変数の内容を取得することができなくなります。(returnで参照することはできます。)
なので変数の内容を取得する場合は「hello.js」の内容を

function aisatsu(){
var aa="hello";
return aa;
}

このように修正し、

<script language="javascript" src="hello.js"></script>
<script language="javascript">
var data=aisatsu();//「aisatsu()」関数の「aa」変数内のデータを引っ張り出す(return aa;)
document.write(data);//書いたり
alert(data);//アラートしたり
window.status=data;//ステータスバーに表示したり・・
</script>

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qforeachで回った数を表示したい

単純な質問ですみません。
====
//getTestlistは別ファイルで定義済み。
<?
$testlist=getTestlist();
foreach($testlist as $test){
?>


<? } ?>
====
例えば↑こんなふうにforeachで$testlistが存在するだけ回したとします。
そのときに何回まわったか?($testが何件あったか?)だけを表示したいのですが、そんなことってできますか?
表示したい位置は<? } ?>の外側にと考えています。
あさってな質問でしたらすみません。
phpVer 4.3

よろしくお願いいたします。

Aベストアンサー

<?
$testlist=getTestlist();
$n=0;
foreach($testlist as $test){
$n++;
?>
<?}?>

<?=$n?>回
とかでよいかと思います。

途中でbreakなどが無ければ
<? echo count($testlist) ?>でも良いかも知れません。

Qjavascript 変数名の連結をしたい

javascriptで、ある同じ処理をいくつも書くのですが
いくつも同じものを書かず、for等で繰り返させたいのです。
また、その際に変数名をばらばらにしたいのですが
そのやり方がいまひとつ良く分かりません。

//同じ処理を繰り返さず・・・
area1_flagA = 1
area1_flagB = 1
area1_flagC = 1
area1_flagD = 1

//繰り返し処理で
var area_array = [A,B,C,D];
for (var i in area_array){
 area1_flag+i(←連結したいができない) = 1
}

※実際はもう少し複雑な処理になります

そこで、変数名に変数名を連結させようとしたのですが
うまくいきませんでした。
どうすれば、上記のような
繰り返し処理を施すことが可能でしょうか。

Aベストアンサー

evalを使うのが手っ取り早いわね。

eval("area1_flag" + area_array[i] + "=1");

こんな感じ。

Q検索時の選択内容を保持する方法

質問失礼致します。

PHPで
・テキスト
・ラジオボタン
・チェックボックス
が複数入り混じった検索システムを作っています。

なんとか形になって検索の形はできたのですが、
必要な項目を検索し結果画面に映った際に
入力したテキスト・ラジオ・チェックボックスの内容が初期化されてしまいます。


検索した結果、テキストの方はインプット時に
<input type="text" name="name" size="50" value="<?= $_POST['name'] ?>" >
とすることで、結果画面にある検索システムの入力内容は保持できたのですが、

・ラジオ および ・チェックボックス の内容の保持を
なんとかまとめて設定することはできないでしょうか?


検索はしましたが、初心者なこともあり検索ワードがいまいち的を得てないのか、
考えている答えになかなかたどり着けておりませんので、
この場を借りて質問の方させていただいた次第でございます。


ご存じの方いらっしゃいましたら、是非ともご教授お願い致します。

Aベストアンサー

HTMLとプログラム部分の切り分けをするためにはなるべく単純な構造がよいでしょう
私の場合こんな処理をしています。
(実際の運用の際にはデータチェックをしたりするのでもう少し複雑になりますが)

<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";

//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";

//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected";

print <<<eof
<form>
<input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A
<input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B
<input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1
<input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2
<input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3
<select name="test_d">
<option value="">---</option>
<option value="1"{$selected["test_d"][1]}>D-1</option>
<option value="2"{$selected["test_d"][2]}>D-2</option>
<option value="3"{$selected["test_d"][3]}>D-3</option>
</select>
<input type="submit" value="go">
</form>
eof;
?>

HTMLとプログラム部分の切り分けをするためにはなるべく単純な構造がよいでしょう
私の場合こんな処理をしています。
(実際の運用の際にはデータチェックをしたりするのでもう少し複雑になりますが)

<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";

//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";

//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_...続きを読む

QJavascript→PHPに値の渡し方について

Javascriptで処理した値をPHPでも参照したいのですがどうすればよろしいですか?

やりたいこと

 Javascriptである値を処理して、その処理した値を
 DB(MySQL)の登録する。(PHPで作成)

簡単な文章で申し訳ありませんがよろしくお願いします。

Aベストアンサー

こんにちは。

例えばですが

<script type="text/javascript">
var count = 0;
function calc() {
count ++;
}

function regist() {
document.frmRegist.count.value = count;
document.frmRegist.submit();
}
</script>

<form name="frmRegist" action="DB登録.php" method="post">
<input type="hidden" name="count" value="">
</form>
<input type="button" value="countを加算" onclick="calc();">
<input type="button" value="計算結果を送信" onclick="regist();">


==DB登録.php

<?php
$c = $_POST['count'];
// $cをDBに登録
?>


こうすることによりDB登録.phpにJavaScript内で処理をしたcountの値を送信することが出来ます。

calc()を呼ぶとcountを1ずつ加算します。
regist()を呼ぶと現在のcountの値をformに用意したhidden項目にセットしフォームの送信(submit)を実行します。
PHP側ではcountというパラメータ名で送信された値を取得します。

こんな感じです。
(動かしていないのでエラーがあったらごめんなさい)

こんにちは。

例えばですが

<script type="text/javascript">
var count = 0;
function calc() {
count ++;
}

function regist() {
document.frmRegist.count.value = count;
document.frmRegist.submit();
}
</script>

<form name="frmRegist" action="DB登録.php" method="post">
<input type="hidden" name="count" value="">
</form>
<input type="button" value="countを加算" onclick="calc();">
<input type="button" value="計算結果を送信" onclick="regist();">


==DB登録.php

<?php
$c = $_POST[...続きを読む


人気Q&Aランキング