PDA

View Full Version : Is it possilbe to simplify this code?


kochier
07-16-2008, 03:13 AM
I created some PHP code to display my site map, with directories on a lower level than their parents. Map is the place where the directory exists, and all of it's siblings share the same number. Now this is the code I created: <?php
include 'library/opendb.php';
$result = mysql_query("SELECT * FROM map WHERE Map = '1' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
}
$result = mysql_query("SELECT * FROM map WHERE Map = '2' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)){
$path = $row['Pathname'];
if ($path == 'absurdity.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result2 = mysql_query("SELECT * FROM map WHERE Map = '3' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result2)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result3 = mysql_query("SELECT * FROM map WHERE Map = '4' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result3)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
}
echo '</ul>';
echo '</li>';
echo '</ul>';
echo '</li>';
}
if ($path == 'misc.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result4 = mysql_query("SELECT * FROM map WHERE Map = '5' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result4)){
$path2 = $row['Pathname'];
if ($path2 == 'sitemap.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a> (You Are Here)</li>';
}
else
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
}
echo '</ul>';
echo '</li>';
}
if ($path == 'reviews.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result5 = mysql_query("SELECT * FROM map WHERE Map = '6' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result5)){
$path2 = $row['Pathname'];
if ($path2 == 'events.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result6 = mysql_query("SELECT * FROM map WHERE Map = '7' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result6)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
}
else
{
if ($path2 == 'movies.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result6 = mysql_query("SELECT * FROM map WHERE Map = '8' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result6)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
echo '</ul>';
echo '</li>';
}
}
}
}
if ($path == 'stories.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result8 = mysql_query("SELECT * FROM map WHERE Map = '9' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result8)){
$path4 = $row['Pathname'];
if ($path4 == 'fetish.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result9 = mysql_query("SELECT * FROM map WHERE Map = '10' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result9)){
$path5 = $row['Pathname'];
if ($path5 == 'michael.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a> (Directory)<ul>';
$result10 = mysql_query("SELECT * FROM map WHERE Map = '11' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result10)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
}
else
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
}
echo '</ul>';
echo '</li>';
}
if ($path4 == 'fiction.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result11 = mysql_query("SELECT * FROM map WHERE Map = '12' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result11)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
}
if ($path4 == 'miscstories.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result12 = mysql_query("SELECT * FROM map WHERE Map = '13' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result12)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
}
if ($path4 == 'poems.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result12 = mysql_query("SELECT * FROM map WHERE Map = '15' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result12)){
$path6 = $row['Pathname'];
if ($path6 == 'lovepoems.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a> (Directory)<ul>';
$result13 = mysql_query("SELECT * FROM map WHERE Map = '16' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result13)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
echo '</ul>';
echo '</li>';
}
else
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
}
echo '</ul>';
echo '</li>';
}
if ($path4 == 'shout.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
$result13 = mysql_query("SELECT * FROM map WHERE Map = '17' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result13)){
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a></li>';
}
}
}
echo '</ul>';
echo '</li>';
echo '</ul>';
echo '</li>';
echo '</ul>';
echo '</li>';
echo '</ul>';
}
}
include 'library/closedb.php';
?>

It works perfectly, however the code looks like it should be simplified, especially if I ever need to update it.

Fumigator
07-16-2008, 06:12 PM
You should do one single MySQL query (use WHERE Map IN('1', '2', '3', etc) or WHERE Map BETWEEN '1' and '17' and then load the results into an array to manipulate and display the data. You've got more database querying overhead than you need.

CFMaBiSmAd
07-16-2008, 07:14 PM
An ORDER BY map, name on a single query would retrieve the data in the order it is currently being accessed in.

kochier
07-17-2008, 01:48 AM
I'm sorry I can't figure out how to do what you say I should do, can you clarify a bit more?

kochier
07-17-2008, 03:43 AM
<?php
include 'library/opendb.php';
$result = mysql_query("SELECT * FROM map ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)){
$map = $row['Map'];
if ($map =='1')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
}
}
$result = mysql_query("SELECT * FROM map WHERE Map = '2' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)){
$path = $row['Pathname'];
if ($path == 'absurdity.php')
{
echo '<li><a href="';
echo $row['Pathname'];
echo '">';
echo $row['Name'];
echo '</a><ul>';
?>

This is what I have done so far, I'm stuck at doing anything else, I can't figure how to do any more changes, any time I try to change things they simply don't appear.

I try to change it from $result = mysql_query("SELECT * FROM map WHERE Map = '2' ORDER BY Name ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)){ to [PHP] if ($map = 2) but I can't figure out anywhere to put the if statement that doesn't mess up the whole code.