Answer is inline. On 4-1-2015 4:31, Tim Dunphy wrote:
Hey all, Followign along in php & mysql web development by Luke Welling and Laura Thompson I came along an example to format the output text file. The file was meant to hold the orders of a fctional online store. Here's the output of the code: Bob’s Auto PartsCustomer OrdersOrder DateTiresOilSpark PlugsTotalAddress9:49pm EST Saturday, 01/03/2015125$140.00960 Fairview Dr08753010:05pm EST Saturday, 01/03/2015125$140.00904 Sylvan Ave07632010:06pm EST Saturday, 01/03/2015334$346.00900 Sylvan Ave07632010:07pm EST Saturday, 01/03/2015125 $140.00960 Fairview Dr087530 As you can see, at the first line the address entry doesn't line up and then throws the rest of the form out of whack. Here's the code that I tried: <?php //create short variable name $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; ?> <html> <head> <title>Bob’s Auto Parts - Customer Orders</title> </head> <body> <h1>Bob’s Auto Parts</h1> <h2>Customer Orders</h2> <?php //Read in the entire file. // Each order becomes an element in the array $orders= file("$DOCUMENT_ROOT/../orders/orders.txt"); // count the number of orders in the array $number_of_orders = count($orders); if ($number_of_orders == 0) { echo "<p><strong>No orders pending. Please try again later.</strong></p>"; } echo "<table border=\"1\">\n"; echo "<tr><th bgcolor=\"#CCCCFF\">Order Date</th> <th bgcolor=\"#CCCCFF\">Tires</th> <th bgcolor=\"#CCCCFF\">Oil</th> <th bgcolor=\"#CCCCFF\">Spark Plugs</th> <th bgcolor=\"#CCCCFF\">Total</th> <th bgcolor=\"#CCCCFF\">Address</th> <tr>";
Here's your problem. (almost) every HTML tag has an opening tag and requires a closing tag. Ie: <table> ... </table>, <p> ... </p>, etc. In the above case you have: <tr> ... <tr>. Notice how the table-row tag is never closed? It's a simple typo. Close it instead of opening it in that last line.
And next time, validate your HTML via a (online) html validator if you notice problems in output. Just to make sure you don't miss simple issues like this.
for ($i=0; $i<$number_of_orders; $i++) { //split up each line $line = explode("\t", $orders[$i]); // keep only the number of items ordered $line[1] = intval($line[1]); $line[2] = intval($line[2]); $line[3] = intval($line[3]); /* for ($x = 0; $x <= count($line); $x++) { var_dump($line[$x]); echo "<br />"; } */ // output each order echo "<tr> <td>".$line[0]."</td> <td align=\"right\">".$line[1]."</td> <td align=\"right\">".$line[2]."</td> <td align=\"right\">".$line[3]."</td> <td align=\"right\">".$line[4]."</td> <td>".$line[5]."</td> </tr>"; } echo "</table>"; ?> </body> </html> I've tried staring at the code for a while, but unfortunately I can't seem to wrap my head around why this is outputting incorrectly. I was hoping some more experienced hands could have a look and let me know where I'm going wrong in this example. Certainly thanks for your help! This list is really a benefit to my ongoing education with PHP! And I definitely appreciate the help! Tim
--- This email has been checked for viruses by Avast antivirus software. http://www.avast.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php