2013-02-16 109 views
0

我正在瀏覽關於PHP和HTML的教程,本教程中使用的代碼不適用於我演示的方式,而且我想理解爲什麼。我在http://jsfiddle.net/csmart/vkPJf/設置了一個jsfiddle,這樣你就可以看到發生了什麼。代碼應該連接到數據庫並添加和打印表格數據。看起來代碼正在打印一個名爲課程表的部分,並且它失敗了。它似乎沒有連接到數據庫,因爲我可以註釋掉失敗的代碼,並使用insert語句在表中創建新的一行數據。在html中嵌入html的方式有問題,代碼應該如何糾正?謝謝。在HTML中嵌入PHP - 無法在表格中填充和顯示數據

<!DOCTYPE html><html><head> 
     <script src="jquery.min.js"></script> 
     <script src="jquery.validate.js"></script> 
     <script> 
      $(document).ready(function() {$("form").validate();}); 
     </script> 
    </head><body> 
    <form method="post"> 
     cid: <input name="cid" class="required digits" maxlength="3" minlength="3"><BR> 
     title: <input name="title" class="required" maxlength="200"><BR> 
     prof: <input name="prof" maxlength="64"><BR> 
     cred: <input name="cred" class="required digits" maxlength="1" minlength="1"><BR> 
     cap: <input name="cap" class="required digits" maxlength="2" minlength="2"><BR> 
     <input type="submit" value="OK"> 
    </form> 

    <?php 
    ini_set('display_errors', 'On'); 

    $dbhost = 'XXXXXXXX'; 
    $dbname = 'XXXXXXXX'; 
    $dbuser = 'XXXXXXXX'; 
    $dbpass = 'XXXXXXXX'; 

    $mysql_handle = mysql_connect("$dbhost", "$dbname", "$dbpass", "$dbuser") 
    or die("Error connecting to database server"); 
    mysql_select_db($dbname, $mysql_handle) 
    or die("Error selecting database: $dbname "); 
    $cid = array_key_exists("cid", $_REQUEST) ? $_REQUEST["cid"] : 0; 
    $title = array_key_exists("title", $_REQUEST) ? $_REQUEST["title"] : ''; 
    $prof = array_key_exists("prof", $_REQUEST) ? $_REQUEST["prof"] : ''; 
    $cred = array_key_exists("cred", $_REQUEST) ? $_REQUEST["cred"] : 0; 
    $cap = array_key_exists("cap", $_REQUEST) ? $_REQUEST["cap"] : 0; 

    if($cid <= 0) echo""; 
    else if (!preg_match('/^[0-9]{3}$/',$cid)) echo "Invalid cid"; 
    else if (!preg_match('/^[0-9]{3}$/',$cred)) echo "Invalid cred"; 
    else if (!preg_match('/^[0-9]{3}$/',$cap)) echo "Invalid cap"; 
    else if($cid < 0) { 
     $rs = mysql_query("select cid from courses where cid = ".$cid); 
     if (mysql_numrows($rs) == 0) { 
      mysql_query("insert into courses(cid,cap,cred,title,prof) values(" 
       . $cid . "," . $cap . "," . $cred 
       . ",'" . mysql_real_escape_string($title) . "'" 
       . ",'" . mysql_real_escape_string($prof) . "')" 
       ); 
     } 
     else { 
      mysql_query("update courses set cap=".$cap.", cred=".$cred . ", title='". mysql_real_escape_string($title) . "'" . ", prof='". mysql_real_escape_string($prof) . "'" . " where cid=".$cid 
      }; 
     } 
    } 

    $rs = mysql_query("select cid,prof,cred,cap,title from courses"); 
    $nrows=mysql_numrows($rs); 

    echo "Courses<table>"; 
     for ($i = 0; $i < $nrows; $i++) { 
     echo "<tr>"; 
     echo "<td>".htmlspecialchars(mysql_result($rs,$i,"cid"))."</td>"; 
     echo "<td>".htmlspecialchars(mysql_result($rs,$i,"title"))."</td>"; 
     echo "<td>".htmlspecialchars(mysql_result($rs,$i,"prof"))."</td>"; 
     echo "<td>".htmlspecialchars(mysql_result($rs,$i,"cred"))."</td>"; 
     echo "<td>".htmlspecialchars(mysql_result($rs,$i,"cap"))."</td>"; 
     echo "</tr>"; 
     } 
     echo '</table>'; 
    mysql_close($mysql_handle); 
    ?> 
    </body></html> 
+0

你必須分析錯誤(除其他事項外),準備和事先處理您的數據,而不是在HTML文件的中間 – 2013-02-16 19:56:53

+0

看看上面的顏色代碼 – 2013-02-16 19:58:47

+0

由於我沒有編寫代碼,但是試圖從教程中看似有用的東西中學習,你能更具體嗎?什麼是解析失敗? – user1852050 2013-02-16 19:59:15

回答

1

問題是聽到

else if($cid < 0) { 
$rs = mysql_query("select cid from courses where cid = ".$cid); 
if (mysql_numrows($rs) == 0) { 
    mysql_query("insert into courses(cid, cap, cred, title, prof) values(" .$cid . "," .$cap . "," .$cred . ",'" . mysql_real_escape_string($title) . "'" . 
    ","."'" . mysql_real_escape_string($prof) . "'"); 
    } 
    else { 
    mysql_query("update courses set cap=".$cap.", cred=".$cred . ", title='". mysql_real_escape_string($title) ."'" . ", prof='". mysql_real_escape_string($prof) . "'" . " where cid=".$cid); 

} 
} 

關注(