dポイントプレゼントキャンペーン実施中!

下記の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");
}

?>

A 回答 (2件)

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



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

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

この回答への補足

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

補足日時:2014/10/15 14:27
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/15 14:24

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



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

onclickで呼ばれるのはJavaScript。

表示されているhtmlをみてみて?
<input ・・・・ click="">
ってなってないかい?
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/15 14:27

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


このQ&Aを見た人がよく見るQ&A