【わからないこと】
jQueryで別ページのPHPに変数を渡しMySQLにデータを格納しています。
ローカル環境ではエラーが出ずに動作しているのですが、サーバー環境(Xサーバー)にデータを移動させテストしたところ下記のエラーが出ました。
Parse error: Invalid numeric literal in /home/richnaru/dietdietdiet.net/public_html/dm_into.php on line 256
「dm_into.php」は、変数を受け取る側のPHPファイルです。
下記は、データを投げるのjQueryです。postで変数を渡しています。
エラーがでなければ、結果がコールバック表示されます。
【dm_php(jQuery記述側のPHPファイル)】
<div id="dm_input"> <input id="num" type="text" size="3" value="" /> <div id="slider" style="width:300px;"></div> <form id="textmemo_form"> <textarea id="textmemo" type="text" name="textmemo" rows="5" value=""</textarea> </form> <input class="submit_button" id="dm_botton" type="button" name="ok" value="OK" /> </div> <!-- カレンダーjQuery --> <p><input type="text" id="datepicker" placeholder="日付指定" value="" name="datepicker"></p> <p><input id="timepicker1" type="text" placeholder="時刻指定" name="timepicker1"/></p> <p> </p> <!-- カレンダーjQuery END-->
【jQuery】
<script type="text/javascript"> jQuery(function () { $('#dm_botton').click(function() { $.post('dm_into.php',{ dm_score: $('#num').val(), textmemo: $('#textmemo').val(), datepicker: $('#datepicker').val(), timepicker1: $('#timepicker1').val() }, function(data){ $('#dm_input').html(data); }); }); }); </script> ``` 【db_into.php】 --- ```ここに言語を入力 if(isset($_POST['dm_score'])){ $dm_score = $_POST['dm_score']; if(isset($_POST['textmemo'])){ $textmemo = $_POST['textmemo']; } // タイムシフト投稿処理 if(isset($_POST['datepicker']) OR isset($_POST['timepicker1'])){ $datepicker = $_POST['datepicker'];//日付指定 $datepicker = str_replace("/", "-", $datepicker);//文字置換 $timepicker1 = $_POST['timepicker1'];//日付指定 //時刻文字(AM、PM)のトリミング $cut = 3;//カットしたい文字数 $str=$timepicker1; $replace = substr( $str , 0 , strlen($str)-$cut ); //echo "<p class='red'>timepickerトリム後時刻=".$replace."</p>"; $target_day=$datepicker.$replace; //PMの場合12時間加算する if(strpos($timepicker1,'PM') !== false){ //'PM'が含まれている場合 12時間加算する //12時間後にする //echo "<p class='red'>PMのため12時間追加</p>";//D //echo "<p class='red'>replace=".$replace."</p>";//D $replece_time1 =mb_substr($replace, 0, 2); echo "<p class='red'>replece_time1=".$replece_time1."</p>"; var_dump($replece_time1); if($replece_time1==01){ $replece_time1="13"; } else if($replece_time1==02){ $replece_time1="14"; } else if($replece_time1==03){ $replece_time1="15"; } else if($replece_time1==04){ $replece_time1="16"; } else if($replece_time1==05){ $replece_time1="17"; } else if($replece_time1==06){ $replece_time1="18"; } else if($replece_time1==07){ $replece_time1="19"; } else if($replece_time1==08){ $replece_time1="20"; } else if($replece_time1==09){ $replece_time1="21"; } else if($replece_time1==10){ $replece_time1="22"; } else if($replece_time1==11){ $replece_time1="23"; } else if($replece_time1==12){ $replece_time1="24"; } $replece_time2 =mb_substr($replace, 3, 2); $replace=$replece_time1.":".$replece_time2;//再度時刻を合成 $target_day=$datepicker.$replace; } //時刻形式に整形します $target_day= date("Y-m-d H:i:s",strtotime($target_day . "+0 hour")); //完成した時刻配列の表示 //echo "<p class='red'>完成時刻配列表示".$target_day."</p>";//D //指定時刻が未来の場合処理を実行しないようにする $date_time1 = new DateTime();//現在時刻 $date_time2 = new DateTime($target_day);//指定時刻 if ($date_time1 < $date_time2){ echo '<p class="red">※ 指定日時が未来です。「現在時刻」で投稿します</p>'; } elseif($target_day < $_SESSION['start_date']){ //指定時刻が登録日の前なら現在時刻を投稿すyる // $_SESSION['start_date'] //D 登録日の年月日+時刻のデータ echo '<p class="red">※ 指定日時が登録日前です。「現在時刻」で投稿します</p>'; } else{ //タイムシフト時刻を代入 $date=$target_day; } }// if(isset($_POST['datepicker']) OR isset($_POST['timepicker1'])){ //echo "<p class='red'>$_SESSION[start_date]".$_SESSION['start_date']."</p>";//D 登録日の年月日+時刻のデータ //テキスト(DMツイート)を150文字でトリミングします $textmemo = mb_strimwidth($textmemo, 0, 300, '…', 'UTF-8'); //上記変数をDBに格納する処理 ``` 【追記】 --- dm_into.phpの256行目がエラーと出てるのですが、他のjQueryで変数を渡しても同じエラーメッセージがでます。 256行目の変数は $replece_time1 です。この直前の文字列(jQueryのPOSTで受け取ったデータをトリミングしたもの)がエラーの原因の可能性があります。 ローカル環境(PHP5)ではエラーがでません。 サーバー側(PHP7)でのみ上記のエラーメッセージがでてしまいます。 --- サーバーのPHPバージョンが7、ローカル5.68で、PHPバージョン7以上にするとエラーになり、サーバーのバージョンを5に下げるとエラーがでません。 PHP5とPHP7との互換性の問題があるようです。 現在、ローカルのバージョンをサーバー側に合わせる作業を進めております。 投稿内容に不備があり本日追記させていただきました。ご指摘頂いたのに正しく対応できず心よりお詫び申し上げます。 修正対応できる点などありましたらご指摘いただけるとありがたいです。 現在ローカルがPHP5のままで、PHP7に変更中ですがこちらは少々時間がかかります点のみご了承ください。 【エラー該当個所】 replece_time1で変数に0を先頭に付けた数字を使っていたのが原因だとご回答いただきました。 下記はvar_dumpでの出力です。 replece_time1(var_dump)= string(2) "11" PHP5では0が先頭になる数字がエラーにならず、PHP7ではエラーになることが原因でした。 質問に不備がありみなさまに不快な思いをさせてしまったことをお詫び申し上げます。 また、わかりにくい質問に対しご回答いただきましたみなさまに心からお礼申し上げます。 誠にありがとうございました。
回答2件
あなたの回答
tips
プレビュー