在PHP

时间:2017-04-26 13:08:00

标签: php

我知道,标题不是很具体,但我不知道如何标题。
我想创建一个从1到10的列表。所有这些数字都应该是可点击的并打开一个子列表。再次使用1-10的数字。像这样:

  • 1
  • 2
    • 1
    • 2
    • 3

依旧...... 这是一些代码,我有:

<?php
$num = $_GET['zahl'];
$zahlen = array();
while($num != 0){
  $part = $num % 10;
  array_push($zahlen, $part);
  $num = floor($num/10);
}
foreach ($zahlen as $key => $value) {
$runs = $value + 1;
for ($i=1; $i < $runs ; $i++) {
  if ($i == 1) {
    echo $ulon . "\n";
  }
  echo $lion . "\n";
  echo $a . "ordner.php?zahl=" . $i . $amiddle . $i . $aoff . "\n";
  echo $lioff . "\n";
}
for ($i=1; $i < 11 ; $i++) {
  if ($i == 1) {
    echo $ulon;
  }
  echo $lion . "\n";
  echo $a . "ordner.php?zahl=" . $zahlen[0] . $i . $amiddle . $i . $aoff;
  echo $lioff . "\n";
}
echo $uloff;
echo "\n" . "</body>";
?>

2 个答案:

答案 0 :(得分:1)

您希望实现的目标应该与Javascript而不是PHP相当直接 - 以下仅使用PHP生成初始列表,后续子列表使用javascript生成。

<?php
    echo "<ul id='infinite-menu'>";
    for( $i=1; $i < 11; $i++ ){
        echo "<li>$i</li>";
    }
    echo "</ul>";
?>


<script>

    var children=10;

    function newnodes(e){
        if( e.target.childNodes.length==1 ){
            var ul=document.createElement('ul');
            e.target.appendChild(ul);

            for( i=1; i < children+1; i++ ){
                var li=document.createElement('li');
                li.innerHTML=i;
                ul.appendChild( li );
            }
        }
    }
    var col=document.querySelectorAll('ul#infinite-menu li');
    if( col )for( n in col )if( col[n].nodeType==1){
        col[n].addEventListener('click',newnodes,false);
    }

</script>

答案 1 :(得分:0)

这是我基于php的解决方案。感谢您的评论!

<body>
<?php

$open = isset($_GET["open"]) ? $_GET["open"] : "";
$openArr = explode(",",$open);

function liste($openArr, $link) {
  $firstValue = array_shift($openArr);
  echo "<ul>";
  for ($i = 0; $i < 10; $i++) {
    echo "<li>";
    echo "<a href='rekursion.php?open=".$link.$i."'>$i</a>";
    if (isset($firstValue) && $firstValue == $i) {
      liste($openArr, $link.$i.",");
    }
    echo "</li>";
  }
  echo "</ul>";
}
liste($openArr,"");

?>
</body>