views:

78

answers:

4

Hi all, I am creating a table to display on a web page and that table is populated from data in a MySQL database. I am trying to do a couple of things that are making it difficult for me.

First I am trying to have call the PHP code that exists in a separate file in HTML via JavaScript. I think I have that working right but I am not 100% sure (because the table will not display). I think it is working right because some of the code for the table (which is in the PHP file) displays in FireBug.

Second I am trying to make it so the rows alternate colors for easy viewing too. My PHP code so far is below. The table does not display at all in any browser.

    $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

To answer a few questions:

@controlfreak123, I am not sure what you mean by "include ('filename_with_php_in_it')". As far as the page not being called to be parsed, I think it is being called and contact is being made. I pointed out in my original question that I believe this is true because FireBug shows the code for the table, and that code is in separate PHP file, thus communication between the HTML file and the PHP file must be taking place. Here is how I am calling the PHP file from the HTML file you if you care to know:

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

@Matt S, I am not getting much in the way of output, in fact I didn't know I was getting anything at all until I looked at FireBug and saw that the PHP code (or some of it) was indeed being passed to the HTML file. The specific question is how do I get the data I want from my MySQL database and populate it into an HTML table via PHP. I can also confirm that employees does have data in it, two entries I put in for testing. I can try to put the code into its own file without the JavaScript as you suggested, but that would defeat my purpose since I want my HTML and PHP files to be separate, but I may try it just to see if the PHP code is good and to make sure the JavaScript isn't breaking it.

@Aaron, I am not sure what you are asking (sorry). The code is meant to populate create and populate a table on an HTML page.

A: 

What HTML source is sent to the browser from that code?

Aaron
+1  A: 

Here is a full example of what you're looking for:

  1. pull some data from mysql using php
  2. put that data into an html table
  3. apply alternating colored rows to the table

For the styling I cheat a little and use jquery which I find a bit easier then what you're trying to do.

Also, remember $row[field] is case sensitive. So $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>

Here's the table code only using PHP to alternate the styles like you're trying to do in your example:

    <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>
brendan
I still cannot get what I want (I guess I just am not explaining it well) so I just went with what I had (which worked if I moved my PHP code into the HTML file and changed the extension) and configured the server to process HTML as PHP. I was just being anal wanting all HTML with separate PHP code in another file. Thanks for your help.
typoknig
+2  A: 

The reason your code is not executing is that you cannot include PHP with the Script tag. You must use PHP's include function, and the original page must be parsed as PHP.

<?php
include('./my_other_file.php');
?>
Fosco
Maybe I am not being clear, as far as this question is concerned I only have one HTML file and one PHP file. I am calling the code in the PHP file from the HTML file via JavaScript. I could just combine all the HTML and PHP code of both files into one big PHP file, but I don't want to do that, I want all of my web pages to be HTML. I can see now (in FireBug) that all of the data I want to display in my table is being sent retrieved and sent from the PHP file to the HTML file, but it just isn't displaying for some reason. I can get it to work, but not as two separate files like I want.
typoknig
You're being quite clear, but it's not something that is possible. That's what we're all trying to say. There's no reason to separate it like that, though there are other methods of separation. Template engines, including the HTML instead of vice-versa, etc.
Fosco
A: 

The starting of the coding is a little bit wrong. It should be:-

<?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>";
?>

The first time "mysql_fetch_array" function is used on a Resource Handler, after that it does not work properly. This answer may seem a bit vague, but I have seen it many times, so I always use a "while" or "do-while" loop for fetching multiple rows from DB.

Try using the above code, & see if any information crops up.

Knowledge Craving