if statement inside ul and li

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
sandy1028
Forum Commoner
Posts: 60
Joined: Thu Jul 26, 2007 3:56 am

if statement inside ul and li

Post by sandy1028 »

feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Hi,

I am finding the problem with if statement....
This code is to sort the tree when clicked on header.....
If i click on the header all the sorted and unsorted values also gets display....

Please help me with this

Code: Select all

<style type="text/css">
#containerul, #containerul ul{
  text-align:left;
  margin:0; /* Removes browser default margins applied to the lists. */
  padding:0; /* Removes browser default padding applied to the lists. */
}

#containerul li{
  margin:0 0 0 30px; /* A left margin to indent the list items and give the menu a sense of structure. */
  padding:0; /* Removes browser default padding applied to the list items. */
  list-style-type:none; /* Removes the bullet point that usually goes next to each item in a list. */
}

#containerul .symbols{ /* Various styles to position the symbols next to the items in the menu. */
  float:left;
  width:12px;
  height:1em;
  background-position:0 50%;
  background-repeat:no-repeat;
}

#containerul .borders {
border-left-color: blue;
border-right-width: 0px; border-left-width: 3px;
padding-right: 0px; padding-left: 0px;
}

ul { border-left: 1px dotted #666;

 }
li.live { background: transparent url(node.png) no-repeat 0px 10px; }
ul li ul { display: none; }
li.live { li.live {  background: transparent url(node.png) no-repeat 0 10px; }
li.live ul { display: block; }

</style>

<script type="text/javascript">

var temp, temp2, cookieArray, cookieArray2, cookieCount;
function initiate(){
  cookieCount=0;
  if(document.cookie){
    cookieArray=document.cookie.split(";");
    cookieArray2=new Array();
    for(i in cookieArray){
      cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
    }
  }
  cookieArray=(document.cookie.indexOf("state=")>=0)?cookieArray2["state"].split(","):new Array();
  temp=document.getElementById("containerul");
  for(var o=0;o<temp.getElementsByTagName("li").length;o++){
    if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0){
      temp2 = document.createElement("span");
   temp2.className = "symbols";
//temp2.className = "borders";
      temp2.style.backgroundImage =  (cookieArray.length>0)?((cookieArray[cookieCount]=="true")?"url(minus.png)":"url(plus.png)"):"url(plus.png)";
      temp2.onclick=function(){
        showhide(this.parentNode);
        writeCookie();
      }
      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild)
      temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
      if(cookieArray[cookieCount]=="true"){
        showhide(temp.getElementsByTagName("li")[o]);
      }
      cookieCount++;
    }
    else{
      temp2 = document.createElement("span");
        temp2.className = "symbols";
//      temp2.className = "borders";
 temp2.style.backgroundImage = "url(page.png)";
      temp.getElementsByTagName("li")[o].insertBefore(temp2,temp.getElementsByTagName("li")[o].firstChild);
    }
  }
}
function showhide(el){
  el.getElementsByTagName("ul")[0].style.display=(el.getElementsByTagName("ul")[0].style.display=="block")?"none":"block";
// el.getElementsByTagName("tree")[0].style.display=(el.getElementsByTagName("tree")[0].style.display=="block")?"none":"block";
   el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(minus.png)":"url(plus.png)";
 el.getElementsByTagName("span")[0].style.backgroundImage=(el.getElementsByTagName("ul")[0].style.display=="block")?"url(minus.png)":"url(plus.png)";


}

function writeCookie(){ // Runs through the menu and puts the "states" of each nested list into an array, the array is then joined together  and assigned to a cookie.
  cookieArray=new Array()
  for(var q=0;q<temp.getElementsByTagName("li").length;q++){
    if(temp.getElementsByTagName("li")[q].childNodes.length>0){
      if(temp.getElementsByTagName("li")[q].childNodes[0].nodeName=="SPAN" &&  temp.getElementsByTagName("li")[q].getElementsByTagName("ul").length>0){
        cookieArray[cookieArray.length]=(temp.getElementsByTagName("li")[q].getElementsByTagName("ul")[0].style.display=="block");
      }
    }
  }
  document.cookie="state="+cookieArray.join(",")+";expires="+new Date(new Date().getTime() + 365*24*60*60*1000).toGMTString();
}
</script>

<?
$lines = file('./phonedb.txt');

                foreach ($lines as $line) {
                $text_line = explode(":" , $line);

$text_array[]=array('name'=>$text_line[0], 'address'=>$text_line[1],'age'=>$text_line[2], 'email'=>$text_line[3],'mobile'=>$text_line[4],'residence'=>$text_line[5], 'key'=>$key);


foreach ($text_array as $key => $row) {
$name[$key]  = $row['name'];
$address[$key] = $row['address'];
$age[$key] = $row['age'];
$email[$key] = $row['email'];
$mobile[$key] = $row['mobile'];
$residence[$key] = $row['residence'];
}
$id = $_GET['id'];

switch ($id) {
case "name":
        array_multisort($name, SORT_ASC,SORT_STRING, $text_array);
        break;
case "address":
         array_multisort($address,SORT_ASC, $text_array);
        break;

case "age":
        array_multisort($age, SORT_ASC, SORT_NUMERIC, $text_array);
         break;

case "email":
         array_multisort($email, SORT_ASC, $text_array);
         break;

case "mobile":
         array_multisort($mobile, SORT_ASC,SORT_NUMERIC, $text_array);
         break;

case "residence":
        array_multisort($residence,SORT_ASC, SORT_NUMERIC, $text_array);
        break;
}
}

for($i=0; $i<sizeof($text_array); $i++) {
//echo "<ul>";


echo "<li>".$text_array[$i]['name']."</li>";
echo "<li>".$text_array[$i]['address']."</li>";

//echo  "</tr>";
}

?>


<?
echo "<html>";
echo "<body bgcolor=\"#FFF0FF\" text=\"#000000\">";
$lines = file('phonedb.txt');
echo "<ul id=\"containerul\"><li class=\"live\">View Tree";

//echo "<a href=\"tree.php?id=name\">Name</a>";

echo "<ul class=\"dottedline\"><li class=\"live\"><a href=\"tree.php?id=name\">Name</a>";

echo "<ul>";
                foreach ($lines as $line) {
                    $text_line = explode(":",$line);


echo "<li>--$text_line[0]</li>";
}
if($id=="name")
{

for($i=0; $i<sizeof($text_array); $i++) {
echo "<li>".$text_array[$i]['name']."</li>>";
}
}
}
echo "</ul></li>";

feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]
User avatar
yacahuma
Forum Regular
Posts: 870
Joined: Sun Jul 01, 2007 7:11 am

sort with javascript

Post by yacahuma »

I am not sure if this is what you want but I needed to sort a table and found this site



http://www.kryogenix.org/code/browser/sorttable/


just by adding this to your page you get instant sorting by columns.

BTW check your code. although not mandatory you should put your javascript code inside head
User avatar
superdezign
DevNet Master
Posts: 4135
Joined: Sat Jan 20, 2007 11:06 pm

Re: if statement inside ul and li

Post by superdezign »

sandy1028 wrote:Hi,

I am finding the problem with if statement....
This code is to sort the tree when clicked on header.....
If i click on the header all the sorted and unsorted values also gets display....

Please help me with this
If the posted link is not what you're after, you're going to need to be a lot more specific. Most of us (including me) don't feel like reading an entire document looking for someone else's error. Pinpoint a general area of interest, and post that snippet, and you'll likely get more answers.
Post Reply