みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ボタンのonclick時における関数コールの仕方

下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、
echo 'in update';
として、関数内に入ったら、文字列表示をするようにしているのですが、
更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません)
関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか?
教えていただきたいです。


<?php
//////////////////////////
// メモ内容の閲覧、更新 //
//////////////////////////
$sid = (int)$_GET['sid'];
var_dump($sid);
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("*****-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "SELECT * FROM ideamemo_table WHERE sid=$sid;";
$result = mysql_query($sql, $con) or die(mysql_error());
$row = mysql_fetch_row($result);
mysql_close($con);
//$row[0] = (int)$row[0]; // string⇒int にキャスト
echo '<form name="form1" method="POST" action="deleteUpdate.php">';
echo '内容<br>';
echo '<textarea name="textarea" cols="100" rows="30">'.$row[3].'</textarea>';
echo '<br>';
echo '<input type="button" value="更新" onclick="<?php updateMemo('.$sid.');?>">';
//echo '<input type="button" value="更新" onclick="updateMemo();">';
echo '<input type="button" value="削除" onclick="deleteMemo('.$sid.');">';
echo '<input type="button" value="トップページへ" onclick="location.href=\'main.php\'">';
echo '</form>';
var_dump($row[2]);

function updateMemo($sid){
//function updateMemo(){
echo 'in update';
//var_dump($sid);
//exit;
date_default_timezone_set("Japan");
$update = date(Y年m月d日(D)H時i分s秒);

$textarea = $_POST['textarea'];
var_dump($textarea);
var_dump($update);
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "UPDATE ideamemo_table SET contents = '$textarea', update_date = '$update' WHERE sid=$sid;";
$result = mysql_query($sql, $con);
mysql_close($con);
//header("Location: main.php");
}

function deleteMemo(int $sid){
echo 'in delete';
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "DELETE FROM ideamemo_table WHERE sid=$sid;";
$result = mysql_query($sql, $con);
mysql_close($con);
//header("Location: main.php");
}

?>

投稿日時 - 2014-10-15 11:58:42

QNo.8791310

すぐに回答ほしいです

質問者が選んだベストアンサー

>onclick="<?php updateMemo('.$sid.');

そもそもの考え方が間違っています。
htmlで出力されている時点でonclickの中身は「結果」なので
なにをしても結果は変わりません。

どうしてもやりたいならonclickでajaxを通して
更新用プログラムにsidを渡してやることです
(もしくは普通にgetでページ遷移する)

投稿日時 - 2014-10-15 12:13:40

補足

get で普通にページ遷移してます。
onclick="alert('(<?php updateMemo($sid)?>')"
で動作しました。

投稿日時 - 2014-10-15 14:27:09

お礼

ご回答有難うございました。

投稿日時 - 2014-10-15 14:24:15

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

phpが動作する場所とJavaScriptが動作する場所を理解したほうがいい。

phpはサーバ上で実行され解釈されてhtmlを返す。

onclickで呼ばれるのはJavaScript。

表示されているhtmlをみてみて?
<input ・・・・ click="">
ってなってないかい?

投稿日時 - 2014-10-15 12:12:13

お礼

ご回答どうもありがとうございました。

投稿日時 - 2014-10-15 14:27:28

あなたにオススメの質問