2016-12-04 20 views
1

私の最初のPHPプログラムを試みています。これは、mySQLデータベースからhtmlを読み込むデータを取得します。私は、メニュー選択に基づいて読み込まれたデータを変更できるようにしたい。私は本当に何をする必要があるかわからない。しかし、これはこれまで私が試したことです。ajaxを使って関数からPHPデータをリロードする

<section id="UserComments" style="margin-left: 3em;"> 
    <?php load_comments($UsersID, $login_session, $ProjectID); echo "<br />" ?> 
    </section> 

PHPコード(HTML上記と同じページ)

function load_comments($UsersID,$username,$ProjectID) { 
    global $connection; 

    $sql = "SELECT * FROM UserComments JOIN Projects ON UserComments.ProjectID = Projects.ProjectID WHERE UserID = '$UsersID' AND Projects.ProjectID = '$ProjectID'"; 
    $result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 

    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
     echo '<p class="note"><span></span>' . nl2br($row['UserComment']) . ' '; 
     if (empty($row['FileName'])) { 
      echo '<br><br><span id="rightfloat"><font color="#5bc0de">' . $username . ' at ' . $row['DateSubmitted'] . '</font></span></p>'; 
     }else { 
      $echo_file = '<a href="' . $row['UserFile'] . '"><img src="images/Attach-icon.png">' . $row['FileName'] . ' </a>'; 
      echo '<br><br><span id="rightfloat"><font color="#5bc0de">' . $echo_file . ' ' . $username . ' at ' . $row['DateSubmitted'] . '</font></span><br></p>'; 
     } 
    } 
    return; 
} 

function load_projects($UsersID) { 
    global $connection; 
    global $ProjectID; 

    $sql = "SELECT Projects.ProjectID, Projects.ProjectName, Users.UserID FROM Projects JOIN CustomerProject ON CustomerProject.ProjectID = Projects.ProjectID JOIN Users ON CustomerProject.UserID = Users.UserID WHERE CustomerProject.UserID = '$UsersID'"; 
    $result = mysqli_query($connection, $sql); 

    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
     $idname = "ProjID-" . $row['ProjectID']; 
     echo '<a id="' . $idname . '" href="#" onclick="FindID(\'' . $idname . '\')">' . nl2br($row['ProjectName']) . '</a>'; 
    } 

    echo " 
     <script type=\"text/javascript\"> 
      function FindID(id_name) { 
       var sel_name = document.getElementById(id_name); 
       var sel_project_name = sel_name.textContent; 

       $jQuery.ajax({ 
        type: 'POST', 
        url: \"comment-data.php\", 
        data: { 'proj_name': sel_project_name }, 
        success: function(){ alert('success'); }, 
        error: function(){ alert('failure'); } 
       }); 
      } 
     </script> 
    "; 
} 

最終的に、私は成功を使用したい:セクションでは、ユーザーのメニュー選択(プロジェクト)に基づいて、私のコメントデータをリロードします。私は本当にそれをどうやって行うのか考えていません。しかし、今のところ私は成功か誤りがあったかどうかを確かめようとしています。それはあまりにも、この時点で私のために困難な証明されています/

ここでコメント-data.phpです:

require("DBConnection.php"); 
require_once("session.php"); 

$proj_name = $_POST['proj_name']; 

$sql = "SELECT * Projects WHERE ProjectName = " . $proj_name; 

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 
$count = mysqli_num_rows($result); 

if (!empty($result)){ 
    $row=mysqli_fetch_row($result); 
    $ProjectID = $row['ProjectID']; 

    // here was my feeble attempt to reload my comment data after the user selected a project from the db. This was not working, so I've commented out 

    // load_comments($UsersID, $login_session, $ProjectID); 
} else { 
    echo "Project not found in database!"; 
} 
+0

は、あなたが直面している問題は何ですか?ブラウザのコンソールに何かエラーがありますか? – Jai

+0

何も起きません...コードがないかのようです。最初に読み込まれたときに存在する既存のコメントは変更されません。あなたの助けをいただきありがとうございます; – Chance8

答えて

0

OK、あなたのプロジェクトが良いのですが、あなたが知っておく必要があるものがあります:

は、

PHPでクラスを作成するときは、htmlがないPHPクラスファイルでそれらを集めることが望ましいので、必要なときに呼び出すだけです。例えば、

your.php

<?php 
include ("class.php") 
?> 
<html> 
//some html code for your website 
<section id="UserComments" style="margin-left: 3em;"> 
    <?php load_comments($UsersID, $login_session, $ProjectID); echo "<br />" ?> 
    </section> 
</html> 

は今、あなたはあなたがcomment-data.phpで機能を呼び出すことができる場所にこれを得た:

include ("class.php"); 
require("DBConnection.php"); 
require_once("session.php"); 

$proj_name = $_POST['proj_name']; 

$sql = "SELECT * Projects WHERE ProjectName = " . $proj_name; 

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 
$count = mysqli_num_rows($result); 

if (!empty($result)){ 
    $row=mysqli_fetch_row($result); 
    $ProjectID = $row['ProjectID']; 
    load_comments($UsersID, $login_session, $ProjectID); 
    // it should work now 
} else { 
    echo "Project not found in database!"; 
} 

アヤックス一部について、よく私は、HTMLを取得し、ページのどこかにそれを置くための方法を見つけましたしかし、私は確信していないので、ここにそれがあります。

Class.phpと

function load_comments($UsersID,$username,$ProjectID) { 
    global $connection; 

    $sql = "SELECT * FROM UserComments JOIN Projects ON UserComments.ProjectID = Projects.ProjectID WHERE UserID = '$UsersID' AND Projects.ProjectID = '$ProjectID'"; 
    $result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 

    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
     echo '<p class="note"><span></span>' . nl2br($row['UserComment']) . ' '; 
     if (empty($row['FileName'])) { 
      echo '<br><br><span id="rightfloat"><font color="#5bc0de">' . $username . ' at ' . $row['DateSubmitted'] . '</font></span></p>'; 
     }else { 
      $echo_file = '<a href="' . $row['UserFile'] . '"><img src="images/Attach-icon.png">' . $row['FileName'] . ' </a>'; 
      echo '<br><br><span id="rightfloat"><font color="#5bc0de">' . $echo_file . ' ' . $username . ' at ' . $row['DateSubmitted'] . '</font></span><br></p>'; 
     } 
    } 
    return; 
} 

function load_projects($UsersID) { 
    global $connection; 
    global $ProjectID; 

    $sql = "SELECT Projects.ProjectID, Projects.ProjectName, Users.UserID FROM Projects JOIN CustomerProject ON CustomerProject.ProjectID = Projects.ProjectID JOIN Users ON CustomerProject.UserID = Users.UserID WHERE CustomerProject.UserID = '$UsersID'"; 
    $result = mysqli_query($connection, $sql); 

    while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { 
     $idname = "ProjID-" . $row['ProjectID']; 
     echo '<a id="' . $idname . '" href="#" onclick="FindID(\'' . $idname . '\')">' . nl2br($row['ProjectName']) . '</a>'; 
    } 

    echo " 
     <script type=\"text/javascript\"> 
      function FindID(id_name) { 
       var sel_name = document.getElementById(id_name); 
       var sel_project_name = sel_name.textContent; 

       $jQuery.ajax({ 
        type: 'POST', 
        url: \"comment-data.php\", 
        data: 'proj_name='+ sel_project_name, 
        success : function(code_html, status){ 
         $(code_html).appendTo("#somewhereinthehtml"); 
         alert('success'); 
        }, 
        error: function(){ alert('failure'); } 
       }); 
      } 
     </script> 
    "; 
} 
+0

;同じ問題です。メニューからプロジェクトを選択すると、「UserComments」セクションは変更されません。最初のロード時には、デフォルトのプロジェクト(最初のプロジェクト)に基づいて、期待通りにすべてをロードします。しかし、メニューに行って別のメニューを選択するときは、何も起こりません。たぶん私はAjaxまたはjQueryを正しく宣言していないでしょうか? – Chance8

+0

最後に、一日中、一晩中それと戦った後、私はそれを手に入れました!私はここで何かそんなに多くの小さなものを変えてしまったので、実際に何が変わったのか分かりません。しかし、これは間違いなく正しいトラックに私を置く!あなたの助けなしに。私はまだ絶望的に失われていただろう! – Chance8

関連する問題