• 締切済み

functionを定義したつもりが、動的メソッド扱いになります。

phpの中において、functionを作って呼び出そうとしているのですが、 funcRadioOutputが、なぜか、classのmethod扱いになってしまい、下記のエラーがでてしまいます。 Fatal error: Non-static method Input::funcRadioOutput() cannot be called statically in /var/www/vhosts/aaa.com/httpdocs/command/Input.php on line 357 他のサーバーで正常に動作しているものを別サーバーへ移行した際にこのエラーが起こったのですが、何かPHPの環境においてこういうケースが発生してしまうことがあるのでしょうか?何か、お気づきの点がありましたら、ご教示をお願いいたします。 ※ソースの抜粋 <?php ・ ・ 省略 ・ ・ class Input extends Action { //# コンストラクタ ・ ・ 省略 ・ ・ //# メイン処理 function execute($request, &$result, &$session , &$validator) { $inPrm = array(); $inPrm["LOCAL_REQUEST"] = $request; $inPrm["LOCAL_SESSION"] = $session; $clsInit = new CommonInit($inPrm); ・ ・ 省略 ・ ・ function funcRadioOutput($choise_array,$name,$default_val,$offset=false) { if ($default_val==$offset) { $sel=" checked"; } else { $sel=""; } $rdostr .= "<input type=\"radio\" name=\"{$name}\" {$ds} value=\"{$offset}\" {$sel}>{$choise_array[$offset]}"; return $rdostr; } $Gender_str = funcRadioOutput($Gender_array,"rdoSexID",$inPrm["LOCAL_REQUEST"]->params['rdoSexID']); ・ ・ ・ 省略 ・ ・ ・ } } ?>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況よくわからないのですが、単純に $Gender_str = $this->funcRadioOutput(なんたらかんたら) とかしないんですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • functionの中にfunction?

    functionの中にfunctionの関数を読み込みたいのですが そのようなことはphpで可能でしょうか? ソースは以下のようになっております。 // 実行 hoge1(); hoge2(); function hoge1() { if (!$_POST["submit"]) { foreach($_POST as $k => $v) { if(get_magic_quotes_gpc()) { $v=stripslashes($v); } $v=htmlspecialchars($v); $array[$k]=$v; } extract($array); } } function hoge2() { echo <<<EOM ~~表示させる文章など~~ EOM; foreach ($array as $key => $val){ echo "<input type=\"hidden\" name=\"$key\" value=\"$val\" />\n"; } } 具体的にはhoge1のextract($array);をhoge2の$arrayに入れて foreachで出力させたいのですがどのようにすればできますでしょうか?

    • 締切済み
    • PHP
  • リクエストメソッド

    以下はPHPでBMIを計算するプログラムです。リクエストメソッドを取得する意味がよくわかりません。 $request_method = $_SERVER['REQUEST_METHOD']; の部分です。 <?php // 初期化 $height = ''; $weight = ''; $bmi = ''; $err_msg = array(); // エラーメッセージ用の配列 // リクエストメソッドを取得する $request_method = $_SERVER['REQUEST_METHOD']; // 「BMI計算」ボタンをクリックした(POSTされた)場合に処理する if ($request_method === 'POST') { // POSTデータを取得する $height = get_post_data('height'); $weight = get_post_data('weight'); // 身長の値が数値かどうかをチェックする if (is_numeric($height) === FALSE) { $err_msg[] = '身長は数値を入力してください'; } // 体重の値が数値かどうかをチェックする if (is_numeric($weight) === FALSE) { $err_msg[] = '体重は数値を入力してください'; } // エラーがない場合にBMIを算出する if (count($err_msg) === 0) { // BMIを算出する $bmi = calc_bmi($height, $weight); } } /** * BMIを計算する * @param mixed $height 身長(cm) * @param mixed $weight 体重(kg) * @return float 計算したBMIの値を返す */ function calc_bmi($height, $weight) { return round($weight/($height/100*$height/100),1); } /** * POSTデータを取得する * @param str $key 配列キー * @return str POSTの値 */ function get_post_data($key) { $str = ''; if (isset($_POST[$key]) === TRUE) { $str = $_POST[$key]; } return $str; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>BMI計算</title> </head> <body> <h1>BMI計算</h1> <form method="post"> 身長(cm) : <input type="text" name="height" value="<?php print $height ?>"> 体重(kg) : <input type="text" name="weight" value="<?php print $weight ?>"> <input type="submit" value="BMIを計算する"> </form> <?php if (count($err_msg) > 0) { ?> <?php foreach ($err_msg as $value) { ?> <p><?php print $value; ?></p> <?php } ?> <?php } ?> <?php if ($request_method === 'POST' && count($err_msg) === 0) { ?> <p>あなたのBMIは<?php print $bmi; ?>です</p> <?php } ?> </body> </html>

    • 締切済み
    • PHP
  • jQuery $.ajax JSON形式のPOST

    jQuery $.ajax JSON形式のPOSTでフォーム内容を送信し、送信先のPHPでメール送信させるプログラムをかいているのですが、どうしても$.ajaxのerrorが呼び出される状況です。errorが呼び出されますが、PHPの方のメール送信はできております。 PHP側の出力がうまくいっていないのではないかと思いますが、原因がわかりません。どなたかご教授いただけないでしょうか?宜しくお願いします。 ---js--- $("#send").click(function(){ var NAME = $('#name').val(); var EMAIL = $('#email').val(); var TITLE = $('#titlel').val(); var COMMENT = $('#comment').val(); $.ajax({ url : "sendmail.php", dataType : "json", data : {name:NAME, email:EMAIL, title:TITLE, comment:COMMENT}, type : "post", success : function(data){ if(data != ''){ alert(data.result); } }, error : function(){ alert("通信に失敗しました。"); } }); }); ---sendmail.php--- if($_SERVER["REQUEST_METHOD"] != "POST"){ header("HTTP/1.0 404 Not Found"); return; }else{ //メール送信処理 (省略) $message = "送信完了メッセージ"; $result = array('result' => $message); echo json_encode($result); }

  • 関数のコールエラー

    下記のエラーの意味がわからず、途方に暮れています。何らかの予測が付く方がいらっしゃいましたら、教えて頂けますか?些細な情報でも結構です。357行目のコードは下記になります。 357行目 $Gender_str = funcRadioOutput($Gender_array,"rdoSexID",$inPrm["LOCAL_REQUEST"]->params['rdoSexID']); Fatal error: Non-static method Input::funcRadioOutput() cannot be called statically in /var/www/vhosts/xxx.com/httpdocs/wa5u/webapps/Regist/command/Input.php on line 357

    • ベストアンサー
    • PHP
  • if文での条件分岐後の出力内容を他のページへ移動させたい

    お世話になります。現在ショッピングカートを製作しているのですが、b.phpで条件分岐をし、商品名、金額を表示させるのですが、表示させた内容をどのようにしたら、c.phpやd.phpに移動させることが出来るのでしょうか?ちなみにセッションを利用しています。 a.php(選択画面)→b.php(商品名・金額を表示)→c.php(送付先入力)→d.php(送付先入力確認)→e.php(メール送信) a.php ------------------------------------------------- <form name="form1" method="post" action="b.php"> <input type="radio" name="a" value="1">ラーメン <input type="radio" name="a" value="2">ソバ <input type="radio" name="b" value="1">うどん <input type="radio" name="b" value="2">パスタ <input type="submit" name="Submit" value="送信"> </form> ------------------------------------------------- b.php <form name="form1" method="post" action="c.php"> <?php session start(); $_SESSION['php']=$_POST['a']; $_SESSION['p']=$_POST['b']; ?> <?php if($_SESSION['php']==1 && $_SESSION['p']==1){ print "ラーメン&うどん" } 省略 ?> <?php if($_SESSION['php']==1 && $_SESSION['p']==1){ print "1000円" 省略 <input type="submit" name="Submit" value="送信"> </form> ------------------------------------------------- 上記のラーメン&うどん、と1000円をc.phpへ移動させるにはどのようにすればよいでしょうか? おわかりになられる方ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • functionの値を別のfunction へ

    set_hidukeで取得した「true」を hiduke_chkにもっていく方法を教えていただけないでしょうか。 <SCRIPT language=JavaScript> function set_hiduke(){ var hiduke_input = true } function hiduke_chk(){ if(hiduke_input==true) alert("日付をいじった?") } </SCRIPT> <FORM NAME=main ACTION="★" METHOD="POST" onSubmit="return hiduke_chk()"> <INPUT TYPE="TEXT" NAME="年月日" SIZE="12" onBlur="set_hiduke();"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

  • phpにおいて、クラスのメソッド名を定義する際に、

    phpにおいて、クラスのメソッド名を定義する際に、 メソッド名を変数で与えることはできないのでしょうか? 例えば、下記のようなものを考えています。 class ClassA { foreach( array('AA', 'BB', 'CC') as $val ) { function set{$val}($arg) { $arg = $arg + 1; return $arg; } } しかし、これではうまくいかないようです。 一方、メソッドを用いるときには、 このような変数展開ができるようです。 ですので、定義のときにもやり方があるのでは・・?と思い、 質問させていただきました。 宜しくお願い致しましう。

    • ベストアンサー
    • PHP
  • formの配列をjsでカウントしたい

    お疲れ様です。 PHPで処理する用に <input type="checkbox" name="array[]" val="11111" />チェック1 <input type="checkbox" name="array[]" val="22222" />チェック2 <input type="checkbox" name="array[]" val="33333" />チェック3 とnameを配列にしておき、submitされたときに、 チェックされた項目のみをカウントして○件チェックされました。 とポップアップするようなスクリプトを書きたいのですが、 document.MyForm.array.value <-普通のテキストならこう書きますが、 配列の場合はどうかいたらよいのでしょうか? http://ml.php.gr.jp/pipermail/php-users/2005-August/027043.html のdocument.form1.elements[i]や document.forms['MyForm'].elements['str[1]'].value などの書き方も試してみましたが、 undefinedになってしまいます。 PHP側はいまあるままいじりたくないので、form内のname属性はそのままにしたいです。 このような場合、どう書けばチェックされたものだけをカウントすることができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • [初歩?]FOREACHの構文エラーの原因がわからない

    下記を表示すると Warning: Invalid argument supplied for foreach() in とエラーになってしまい、どうしても原因がわからないのですが・・ よろしくお願い致します <html> <body> <form action="$PHP_SELF" method="post"> <input type="radio" name="q2[]" value="0"<?php foreach ($_POST['q2'] as $q2_sel) { if ( $q2_sel == '0') { echo " selected"; }} ?>>男 <input type="radio" name="q2[]" value="1"<?php foreach ($_POST['q2'] as $q2_sel) { if ( $q2_sel == '1') { echo " selected"; }} ?>>女 </form> </body> </html>

    • ベストアンサー
    • PHP
  • sessionが分かりにくいです

    try4.html <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>カンタンアンケート</title> </head> <body> <form action='try4-2.php' method='GET'> 性別:<br> <input type="radio" name="gender" value=0>男性 <input type="radio" name="gender" value=1>女性<br><br> 趣味(複数選択可):<br> <input type="checkbox" name="movies" value=1>映画  <input type="checkbox" name="music" value=1>音楽  <input type="checkbox" name="books" value=1>読書  <input type="checkbox" name="sports" value=1>スポーツ<br><br> ご意見をお書きください:<br> <textarea name="comment" rows="4" cols="40"></textarea><br><br> <input type="submit" value="送信"> <input type="reset" value="リセット"><br><br> </form> </body> </html> ////////////////////////////////////////////////////// try4-1.php <?php session_start(); ?> <html> <head><title>try4-1.php</title></head> <body> <?php $_SESSION = array(total_cnt => 0, male => 0, female => 0, movies => 0, music => 0, books => 0, sports => 0, comment => array("")); ?> //////////////////////////////////////////////////////////////// try4-2.php <?php session_start(); ?> <html> <head><title>try4-2.php</title></head> <body> <?php if ($_GET['gender'] == 0) ++$_SESSION['male']; elseif ($_GET['gender'] == 1) ++$_SESSION['female']; if ($_GET['movies']) ++$_SESSION['movies']; if ($_GET['music']) ++$_SESSION['music']; if ($_GET['books']) ++$_SESSION['books']; if ($_GET['sports']) ++$_SESSION['sports']; $_SESSION['comment'][] = $_GET['comment']; ++$_SESSION['total_cnt']; ?> 登録しました。さらに<A href="try4.html">入力する</A><br> これまでの集計結果を<A href="try4-3.php">表示する</A><br> </body> </html> ////////////////////////////////////////////////////////// try4-3.php <?php session_start(); ?> <html> <head><title>try4-3.php</title></head> <body> <?php echo "これまでにアンケートに応えたのは{$_SESSION['total_cnt']}人です。そのうち<br>"; if ($_SESSION['total_cnt']){ $male_rate = (int)($_SESSION['male'] / $_SESSION['total_cnt'] * 100); $female_rate = (int)($_SESSION['female'] / $_SESSION['total_cnt'] * 100); } else { $male_rate = 0; $female_rate = 0; } echo "男性:{$_SESSION['male']}人 $male_rate %<br>"; echo "女性:{$_SESSION['female']}人 $female_rate %<br><br>"; echo "趣味は映画:{$_SESSION['movies']}人、音楽:{$_SESSION['music']}人、読書:{$_SESSION['books']}人、" . "スポーツ:{$_SESSION['sports']}人<br><br>"; echo "意見:<br>"; foreach ($_SESSION['comment'] as $comment) echo $comment . "<br>"; ?> 集計を<A href="try4-1.php">初期化する</A><br> さらに<A href="try4.html">入力する</A><br> </body> </html> //////////////////////////////////////////////////////// とファイルが4つあるのですがセッション情報はどこに格納されているのでしょうか。TXTファイルでもなさそうなので教えて下さい。

    • ベストアンサー
    • PHP
彼女の安全と心配過剰について
このQ&Aのポイント
  • 彼女の安全を心配しすぎてしまっています。アルバイト先での帰り道で事件に巻き込まれるのではないかと心配しています。
  • 彼女には注意を促していますが、彼氏である自分が過剰に干渉することで彼女への負担になるので、気持ちを伝えるのは控えています。
  • 自分が彼女に依存していることに恐怖心を抱いており、もっと気楽になれる方法はないかと悩んでいます。
回答を見る