0

何が起こっているのかわかりません。PHPとJavascriptでコードを何度も再確認しましたが、対応する{がない追加の}を見つけることができません。誰かがコードを確認するのを手伝ってくれますか? ?

これがPHPファイルです。ロード関数は正常にロードできますが、[ログを表示]ボタンをクリックすると、上記のメッセージが表示されます。

function load($DB){
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $result = mysql_query("SELECT ClientName FROM Client");

    print "Sort by";
    print "<select id='option'>";
    print "<option value='3'>Tech</option>";
    print "<option value='4'>Client</option>";
    print "</select>";
    print "<input type='button' value='View the log' onclick='viewlog(document.getElementById('option').value)'/>";
    print "<br>";

    print "Tech Name checked in/out from";
    print "<select id='client'>";
    while($row = mysql_fetch_array($result)){
        print "<option value='".$row['ClientName']."'>".$row['ClientName']."</option>";
    }
    print "</select>";
    print "<input type='button' value='Display' onclick='display(document.getElementById('client').value)'/>";
    print "<br>";
    print "<button type='button' onclick='back.php?function=5'>Export the log to .csv</button>";
    print "<br>";
}

function viewlog($DB, $sort){
    print "<h1>repeat</h1>";
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $query = "SELECT * 
                FROM Tech AS T, Client AS C, Site AS S, Log AS L 
                WHERE T.TechID=L.TechID AND C.ClientID=L.ClientID AND S.SiteID=L.SiteID ";
    if($sort=="Tech")
        $query .= "ORDER BY T.TechName ASC, L.Time DESC";
    else if($sort=="Client")
        $query .= "ORDER BY C.ClientName ASC, L.Time DESC";
    $result = mysql_query($query) or die('Error! ' . mysql_error());; 
    print "Real-Time check in/check out<br>";
    print "<table><th><td>Tech</td><td>Client</td><td>Site</td>";
    print "<td>Date and Time</td><td>Type</td></th>";
    while($row = mysql_fetch_array($result)){
        print "<tr><td>".$row['TechName']."</td>";
        print "<td>".$row['ClientName']."</td>";
        print "<td>".$row['SiteName']."</td>";
        print "<td>".$row['Time']."</td>";
        print "<td>".$row['Type']."</td></tr>";
        }
    print "</table>";
}

function export($DB){
    $dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
    if(!$dbConnection){
        die('Error! ' . mysql_error());
        }
    mysql_select_db($DB['database'], $dbConnection);
    $result = mysql_query("SELECT TechName, ClientName, SiteName, Time, Type
                            INTO OUTFILE 'result.csv'
                            FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED by '\"'
                            LINES TERMINATED BY '\n'
                            FROM Tech AS T, Client AS C, Site AS S, Log AS L
                            WHERE T.TechID=L.TechID AND C.ClientID=L.ClientID AND S.SiteID=L.SiteID
                            ORDER BY L.Time DESC");
    $Time = date('Y_m_d_H_i');
    $fileName = "Report_" + $Time;
    header('Content-type: text/csv'); 
    header('Content-Disposition: attachment; filename="'.$fileName.'.csv"'); 
    readfile('result.csv');
}

$function = $_GET['function'];
if($function==0)
    load($DB);
elseif($function==3)
    viewlog($DB, "Tech");
elseif($function==4)
    viewlog($DB, "Client");
elseif($function==5)
    export($DB);

以下はJavascriptコードです。

function load(){
var xmlhttp;
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}else{ // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}               

xmlhttp.onreadystatechange = function(){
    //document.getElementById("action").innerHTML=xmlhttp.status;
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById("action").innerHTML=xmlhttp.responseText;       
    }
}
var num = 0;
xmlhttp.open("GET","back.php?function="+num, true);
xmlhttp.send();
}

function viewlog(num){
var xmlhttp;
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}else{ // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}               

xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById("View").innerHTML=xmlhttp.responseText;         
    }
}
xmlhttp.open("GET","back.php?function="+num, true);
xmlhttp.send();
}

PHPファイルのviewlog関数のコンテンツについても、jsファイルのviewlog関数を非表示にしようとしましたが、どちらのアクションでも同じメッセージが表示されます。デバッグ方法がわかりません。誰かが私に手を差し伸べてもらえますか?

4

1 に答える 1

2

ブラウザは、javascript文字列と同じ属性の引用符を使用すると問題が発生すると思います(両方で使用しますが、1つの例を挙げます)。

onclick='viewlog(document.getElementById('option').value)'

の中へ

onclick='viewlog(document.getElementById(&quot;option&quot;).value)'
于 2012-07-14T02:33:01.720 に答える