質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • PHP

    21393questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • jQuery

    7125questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • Ajax

    1160questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Ajaxがうまく動きません。

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 517

na_iki

score 7

2011年頃PHPで書いたプログラムをZendFrameworkでリファクタリングしています。

その途中なのですが、日記をAjaxで読み込むところがうまくいきません。

コードは次です。

index.phtml

<script type="text/javascript">

$(document).ready(function() {
$(".over").bottom({proximity: 0.05});
$(".over").bind("bottom", function() {
var ID = $(".more").attr("id");

if(ID) {

$("#more"+ID).html('');

$.ajax({

type: "POST",

url: "ajax_more_index.php",

data: {lastmsg :  ID,

category :'<?php echo $category ?>'},

cache: false,

success: function(html){

$(".over").append(html);

$(".more"+ID).remove();

}

});

} else {

$(".morebox").html('');

}

return false;

});

});
</script>

ajax_more_index.php

<?php require_once("mysql2.php"); ?>

<?php if( 1==1 ) : ?>

<?php
$category = $_POST['category'];
$lastmsg = $_POST['lastmsg'];
$mysql = new MySQL;

$mysql->query("SELECT *,DATE_FORMAT(calendar,'%y/%c/%e'),DATE_FORMAT(calendar,'%Y'),DATE_FORMAT(calendar,'%m'),DATE_FORMAT(calendar,'%d') FROM  kawanikki where no < $lastmsg ORDER BY no DESC LIMIT 5");
while($row = $mysql->fetch()){
$gazo = "";
$no      = $row["no"];
$calendar    = $row["DATE_FORMAT(calendar,'%y/%c/%e')"];
$nen     = $row["DATE_FORMAT(calendar,'%Y')"];
$tuki1   = $row["DATE_FORMAT(calendar,'%m')"];
$hi1   = $row["DATE_FORMAT(calendar,'%d')"];
$naiyo   = $row["naiyo"];
$youbi = date("w", mktime(0, 0, 0, $tuki1, $hi1, $nen));
$pic_tmp[0]= $row["pic_tmp0"];
$pic_tmp[1]= $row["pic_tmp1"];
$pic_tmp[2]= $row["pic_tmp2"];
$msg_id = $row["no"];
include("includes/switch.php");
$i=0;
while($i<=2){
if(strlen($pic_tmp[$i])>0){
$gazo.="<span class='sikaku$i'>";
$gazo.="<span class='gazo$i'>";
$gazo.='<a href="';
$gazo.='turi_details_image.php?no='.$no;

$gazo.='&pic=';
$gazo.=$pic_tmp[$i];
$gazo.='">';

$gazo.='<img src=';
$gazo.='thumbnail.php?img=';
$gazo.=$pic_tmp[$i];
$gazo.='>';
$gazo.="</a>";
$gazo.= "</span>";
$gazo.= "</span>";
}

$i++;
}
$output  .=$calendar.$youbi. .$naiyo."<br />".$gazo.'<img src="images/bg.gif" width="1" height="1" alt="dot" class="line1" />';

}
echo <<<EOT
$output
<div id="more$msg_id" class="morebox">
<a href="#" class="more" id="$msg_id">もっと見る</a>

</div>
EOT;

?>

<?php endif; ?>

mysql2.php

<?php
//======================================================================
//   ■:MySQL クラス
//======================================================================

class MySQL{
//---------------------------
// □:変数の宣言
//---------------------------
var $m_Con;
var $m_HostName = "";
var $m_UserName = "";
var $m_Password = "";
var $m_Database = "";
var $m_Rows = 0;

//---------------------------
// □:コンストラクタ
//---------------------------
function MySQL(){
$filename = "mysql1.ini";    //<==Windows
//$filename = "/etc/mysql.ini";        //<==Linux

if (!file_exists($filename)){
die("mysql.iniファイルが存在しません。");
}Else{
$fp = fopen($filename,"r");
if (!$fp){
die("mysql.iniファイルが存在しません。。");
}Else{
$this->m_HostName=trim(fgets($fp));
$this->m_UserName=trim(fgets($fp));
$this->m_Password=trim(fgets($fp));
$this->m_Database=trim(fgets($fp));
}
fclose($fp);
}

//MYSQLへ接続
$this->m_con = mysql_connect($this->m_HostName,$this->m_UserName,$this->m_Password);
if (!$this->m_con){
die("MYSQLの接続に失敗しました。");
}
//データベースを選択
if (!mysql_select_db($this->m_Database,$this->m_con)){
die("データベースの選択に失敗しました。DB:{$this->m_Database}");
}

define("TABLE_NAME", "LAA0036673-kenji");

define("KEY_NAME", "ID");

define("CONTENT", "kawanikki");

define("DISPLAY_NUM_INIT", 10);

define("DISPLAY_NUM", 5);
}
//---------------------------
// SQLクエリの処理
//---------------------------
function query($sql){
$this->m_Rows = mysql_query($sql,$this->m_con);
if (!$this->m_Rows){
die("MySQLでエラーが発生しました。<br><b>{$sql}</b><br>" .mysql_errno().": ".mysql_error());
}
return $this->m_Rows;
}
//---------------------------
// 検索結果をfetch
//---------------------------
function fetch(){
return mysql_fetch_array($this->m_Rows);
}
//---------------------------
// 変更された行の数を得る
//---------------------------
function affected_rows(){
return mysql_affected_rows();
}
//---------------------------
// 列数
//---------------------------
function cols(){
return mysql_num_fields($this->m_Rows);
}
//---------------------------
// 行数
//---------------------------
function rows(){
return mysql_num_rows($this->m_Rows);
}
//---------------------------
// 検索結果の開放
//---------------------------
function free(){
mysql_free_result($this->m_Rows);
}
//---------------------------
// MySQLをクローズ
//---------------------------
function close(){
mysql_close($this->m_con);
}
//---------------------------
// エラーメッセージ
//---------------------------
function errors(){
return mysql_errno().": ".mysql_error();
}
//---------------------------
// エラーナンバー
//---------------------------
function errorno(){
return mysql_errno();
}

}

?>

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • na_iki

    2017/03/01 22:35

    MySQLに接続して日記を表示させるようにしたいのです。

    キャンセル

  • topo

    2017/03/01 22:43

    情報展開ありがとうございます。一先ず上記内容を元に推測を含めつつ回答させていただきました。エラー情報、やりたいこと、現状について(エラーが何言っているのか分からない、エラーは分かるが何が原因か分からない、原因は分かるが対策が分からない etc...)を質問本文に追記すると、より回答が集まりやすくなると思います。

    キャンセル

  • kei344

    2017/03/02 01:53

    質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。

    キャンセル

回答 1

0

[function.include]: failed to open stream: No such file or directoryと出ているので、恐らくinclude関数で取り込もうとしているファイルが見つかっていないのではないでしょうか。
include/switch.phpはincludeディレクトリ以下に有るようですが、そのincludeディレクトリはajax_more_index.phpと同じディレクトリにありますか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/01 22:47

    include/switch.phpは、ajax_more_index.phpと同じディレクトリにありますか?

    ありがとうございます。同じ階層になかったので置いてみましたが、エラーメッセージは変わりませんでした。

    キャンセル

  • 2017/03/01 22:49

    すみません、書きたかった内容間違っていたのでついさっき修正しました・・・。
    要は、ajax_more_index.phpからinclude/switch.phpというパス指定をしていますが、本当にそのファイルが指定通りのパスに存在しているのか?ということです。

    キャンセル

  • 2017/03/01 22:57 編集

    indexの拡張子が.phpではなく.phtmlとなっていますね・・・。index.phpに拡張子を修正してみてください。
    phtmlは、phpのかなり古いバージョン(~ php3)で使われていたものなので、Zendが最新のものなら認識できていないのではないかと思います。

    キャンセル

  • 2017/03/01 23:08

    index.phpに変更したところ、index.phpを表示させようとすると、先程から出ているエラーメッセージのみが表示されるようになりました。

    キャンセル

  • 2017/03/01 23:11

    > 先程から出ているエラーメッセージのみが表示されるようになりました。

    `No such file or directory` 以外にもエラーが出ていたということでしょうか? こちらからna_ikiさんの環境を観察することはできないので、現状やエラー情報(特にエラー)については、なるべく正確に漏らさず提供してほしいところです。

    キャンセル

  • 2017/03/01 23:14

    すみません。
    index.phpに変更したところ、次のエラーが出ます。

    Warning: include(./application/views/layouts/) [function.include]: failed to open stream: No such file or directory in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157

    Warning: include(./application/views/layouts/) [function.include]: failed to open stream: No such device in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157

    Warning: include() [function.include]: Failed opening './application/views/layouts/' for inclusion (include_path='.:/usr/local/php/5.2/lib/php') in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157
    存在しないコントローラ/アクションです。
    Warning: include(./application/views/layouts/) [function.include]: failed to open stream: No such file or directory in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157

    Warning: include(./application/views/layouts/) [function.include]: failed to open stream: No such device in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157

    Warning: include() [function.include]: Failed opening './application/views/layouts/' for inclusion (include_path='.:/usr/local/php/5.2/lib/php') in /home/users/1/naiki/web/kyoto/Zend/View.php on line 157

    キャンセル

  • 2017/03/02 23:51

    > 存在しないコントローラ/アクションです。
    エラーログにはこのようにありますが、コントローラーは正しく実装されているでしょうか。Viewのみ作成し、コントローラーは未作成だったりしないでしょうか。
    また、viewファイルの配置ディレクトリがZendがデフォルトで前提にしているパスとだいぶ異なるようですが、そこには問題ないでしょうか。
    https://framework.zend.com/manual/1.10/ja/zend.controller.action.html

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    21393questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • jQuery

    7125questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • Ajax

    1160questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。