2010-06-16 61 views
5

Tôi đang tạo một bảng để hiển thị trên trang web và bảng đó được điền từ dữ liệu trong cơ sở dữ liệu MySQL. Tôi đang cố gắng làm một vài điều khiến tôi khó khăn.Tạo bảng bằng PHP và điền từ MySQL

Trước tiên, tôi đang cố gắng gọi mã PHP tồn tại trong một tệp riêng biệt trong HTML qua JavaScript. Tôi nghĩ rằng tôi có quyền làm việc đó nhưng tôi không chắc chắn 100% (vì bảng sẽ không hiển thị). Tôi nghĩ rằng nó hoạt động đúng vì một số mã cho bảng (có trong tệp PHP) hiển thị trong FireBug.

Thứ hai Tôi đang cố gắng để làm cho nó để các hàng thay thế màu sắc để dễ dàng xem quá. Mã PHP của tôi cho đến nay là dưới đây. Bảng không hiển thị ở tất cả trong bất kỳ trình duyệt nào.

$query = "SELECT * FROM employees"; 
    $result = mysql_query($query); 

    $num = mysql_num_rows($result); 

    echo '<table>'; 

    for ($i = 0; $i < $num; $i++){ 
     $row = mysql_fetch_array($result); 
     $id = $row['id']; 
     $l_name = $row['l_name']; 
     $f_name = $row['f_name']; 
     $ssn = $row['ssn']; 

     $class = (($i % 2) == 0) ? "table_odd_row" : "table_even_row"; 

     echo "<tr>"; 
      echo "<td class=" . $class . ">$wrap_id</td>"; 
      echo "<td class=" . $class . ">$wrap_l_name</td>"; 
      echo "<td class=" . $class . ">$wrap_f_name</td>"; 
      echo "<td class=" . $class . ">$wrap_ssn</td>"; 
     echo "</tr>"; 

    } 

    echo '</table>'; 

    mysql_close($link); 

} 

EDIT

Để trả lời một vài câu hỏi:

@ controlfreak123, tôi không chắc chắn những gì bạn có ý nghĩa bởi "bao gồm ('filename_with_php_in_it')". Theo như trang không được gọi để được phân tích cú pháp, tôi nghĩ rằng nó đang được gọi và liên lạc đang được thực hiện. Tôi đã chỉ ra trong câu hỏi ban đầu của mình rằng tôi tin điều này là đúng bởi vì FireBug hiển thị mã cho bảng, và mã đó nằm trong tệp PHP riêng biệt, do đó giao tiếp giữa tệp HTML và tệp PHP phải được thực hiện. Dưới đây là cách tôi đang gọi tệp PHP từ tệp HTML mà bạn quan tâm để biết:

<script language="javascript" type="text/javascript" src="/Management/Employee_Management.php?action=Edit_Employee"></script> 

@Matt S, tôi không nhận được nhiều trong cách đầu ra, trên thực tế tôi không biết tôi đã nhận được bất cứ điều gì ở tất cả cho đến khi tôi nhìn vào FireBug và thấy rằng mã PHP (hoặc một số của nó) đã thực sự được chuyển đến tập tin HTML. Câu hỏi cụ thể là làm cách nào để lấy dữ liệu tôi muốn từ cơ sở dữ liệu MySQL của tôi và đưa nó vào một bảng HTML thông qua PHP. Tôi cũng có thể xác nhận rằng employees không có dữ liệu trong đó, hai mục nhập mà tôi đưa vào để thử nghiệm. Tôi có thể thử đặt mã vào tệp riêng của mình mà không có JavaScript như bạn đề xuất, nhưng điều đó sẽ đánh bại mục đích của tôi vì tôi muốn các tệp HTML và PHP của tôi tách biệt, nhưng tôi có thể thử xem mã PHP có tốt không và để đảm bảo JavaScript không phá vỡ nó.

@Aaron, tôi không chắc bạn đang hỏi gì (xin lỗi). Mã này có nghĩa là để tạo ra và điền một bảng trên một trang HTML.

+1

Tôi khuyên bạn nên lùi lại một bước và bắt đầu lại từ đầu. Thêm mã gia tăng, khi những gì bạn có cho đến nay hoạt động. Điều này cũng sẽ giúp những người khác giúp đỡ dễ dàng hơn. –

+0

gợi ý: sử dụng bao gồm ('filename_with_php_in_it'); chỉ cần kéo mã đó vào trang bạn đang truy cập. Ngoài ra nếu nó là trong một tập tin html rất có thể là thời gian chạy php của bạn không được gọi để phân tích trang khi nó được truy cập –

+0

Sẽ rất hữu ích khi biết bạn đang nhận được cách đầu ra. Có vẻ như không phải là một câu hỏi cụ thể. Bạn có thể xác nhận rằng 'nhân viên' có dữ liệu không? Bạn có thể thực hiện trực tiếp trang này (không có cuộc gọi JS) bằng cách yêu cầu nó trong trình duyệt của bạn và bạn có nhận được kết quả đầu ra của bảng không? –

Trả lời

13

Đây là một ví dụ đầy đủ của bạn đang tìm kiếm những gì:

  1. kéo một số dữ liệu từ mysql sử dụng php
  2. đưa dữ liệu đó vào một bảng html
  3. áp dụng xen kẽ hàng màu để bàn

Để tạo kiểu, tôi lừa một chút và sử dụng jquery mà tôi thấy dễ hơn một chút sau đó những gì bạn đang cố gắng làm.

Ngoài ra, hãy nhớ $ row [field] phân biệt chữ hoa chữ thường. Vì vậy, $ row [id]! = $ Row [ID].

Hope this helps:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
     <style type="text/css"> 
      tr.header 
      { 
       font-weight:bold; 
      } 
      tr.alt 
      { 
       background-color: #777777; 
      } 
     </style> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $('.striped tr:even').addClass('alt'); 
      }); 
     </script> 
     <title></title> 
    </head> 
    <body> 
     <?php 

      $server = mysql_connect("localhost","root", ""); 
      $db = mysql_select_db("MyDatabase",$server); 
      $query = mysql_query("select * from employees"); 
     ?> 
     <table class="striped"> 
      <tr class="header"> 
       <td>Id</td> 
       <td>Name</td> 
       <td>Title</td> 
      </tr> 
      <?php 
       while ($row = mysql_fetch_array($query)) { 
        echo "<tr>"; 
        echo "<td>".$row[ID]."</td>"; 
        echo "<td>".$row[Name]."</td>"; 
        echo "<td>".$row[Title]."</td>"; 
        echo "</tr>"; 
       } 

      ?> 
     </table> 
    </body> 
</html> 

Dưới đây là các mã bảng chỉ sử dụng PHP để luân phiên các phong cách như bạn đang cố gắng làm trong ví dụ của bạn:

<table class="striped"> 
     <tr class="header"> 
      <td>Id</td> 
      <td>Title</td> 
      <td>Date</td> 
     </tr> 
     <?php 
      $i = 0; 
      while ($row = mysql_fetch_array($query)) { 
       $class = ($i == 0) ? "" : "alt"; 
       echo "<tr class=\"".$class."\">"; 
       echo "<td>".$row[ID]."</td>"; 
       echo "<td>".$row[Name]."</td>"; 
       echo "<td>".$row[Title]."</td>"; 
       echo "</tr>"; 
       $i = ($i==0) ? 1:0; 
      } 

     ?> 
    </table> 
+0

Tôi vẫn không thể có được những gì tôi muốn (tôi đoán tôi không giải thích rõ) vì vậy tôi đã đi với những gì tôi đã có (làm việc nếu tôi chuyển mã PHP của mình vào tệp HTML và thay đổi phần mở rộng) và cấu hình máy chủ xử lý HTML dưới dạng PHP. Tôi chỉ là hậu môn muốn tất cả HTML với mã PHP riêng biệt trong một tệp khác. Cảm ơn bạn đã giúp đỡ. – ubiquibacon

2

Lý do mã của bạn là không thực thi là bạn không thể bao gồm PHP với thẻ Script. Bạn phải sử dụng hàm include của PHP và trang gốc phải được phân tích cú pháp là PHP.

<?php 
include('./my_other_file.php'); 
?> 
+0

Có lẽ tôi không rõ ràng, theo như câu hỏi này thì tôi chỉ có một tệp HTML và một tệp PHP. Tôi đang gọi mã trong tệp PHP từ tệp HTML qua JavaScript. Tôi chỉ có thể kết hợp tất cả các mã HTML và PHP của cả hai tệp vào một tệp PHP lớn, nhưng tôi không muốn làm điều đó, tôi muốn tất cả các trang web của tôi là HTML. Bây giờ tôi có thể thấy (trong FireBug) rằng tất cả dữ liệu tôi muốn hiển thị trong bảng của tôi đang được gửi đi và được gửi từ tệp PHP tới tệp HTML, nhưng nó không hiển thị vì một lý do nào đó. Tôi có thể làm cho nó hoạt động, nhưng không phải là hai tệp riêng biệt như tôi muốn. – ubiquibacon

+0

Bạn đang khá rõ ràng, nhưng nó không phải là một cái gì đó là có thể. Đó là những gì chúng tôi đang cố gắng nói. Không có lý do gì để tách nó ra như vậy, mặc dù có những phương pháp tách biệt khác. Các công cụ mẫu, bao gồm HTML thay vì ngược lại, v.v. – Fosco

0

Việc bắt đầu viết mã có một chút sai. Nó phải là: -

<?php 
$query = "SELECT * FROM employees"; 
$result = mysql_query($query); 

$num = mysql_num_rows($result); 

echo '<table>'; 

if($num) { 
    while($row = mysql_fetch_array($result)) { 
     // all logic for each of the rows comes here 
    } 
} 
else { 
    // no rows fetched, so display proper message in a row 
} 

echo "</table>"; 
?> 

Lần đầu tiên chức năng "mysql_fetch_array" được sử dụng trên trình xử lý tài nguyên, sau đó nó không hoạt động bình thường. Câu trả lời này có vẻ hơi mơ hồ, nhưng tôi đã thấy nó nhiều lần, vì vậy tôi luôn sử dụng vòng lặp "while" hoặc "do-while" để tìm nạp nhiều hàng từ DB.

Hãy thử sử dụng mã ở trên, & xem liệu mọi thông tin có tăng lên hay không.

Các vấn đề liên quan