Avatar billede sajbar Nybegynder
02. februar 2005 - 10:51 Der er 1 løsning

problemer med rekursiv funktion

?>
<select name="skod" multiple="true">
<?
while ($row = mysql_fetch_assoc($qh))
{
  echo "<option value=\"$row[id]\">$row[navn]</option>";

    $level = 0;
    foldUd($row['id']);
 
}

//Fold ud er en funktion som denne:

function foldUd($id)
{

  global $level;
  $level++;
  $sql = "SELECT * FROM inst_cat WHERE parent = '$id'";
  $qh = mysql_query($sql);

  while ($row = mysql_fetch_assoc($qh))
  {
    echo "<option value=\"row[id]\">";
    echo str_repeat('..',$level);
    echo "$row[navn] </option>";

    foldUd($row['id']);
}
  mysql_free_result($qh);

}
echo("</select>");
?>
Hej eksperter, jeg har fundet et script her på eksperten som jeg har forsøgt at tilpasse det kan ses på http://home.sajbar.dk/select/test.php
problemet er at den ikke rykker tilbage ud igen,
under overskole skulle stå ude som et niv 2. altså ligesom folkeskole og under over underskole skulle så stå under "under overskole" som et niv 3

håber der er en der kan se hvad pokker der skal ændres for at den gider gøre det "rigtigt" er ikke den store haj til rekursive funktioner hvorfor det vil være at foretrække at jeg kunne få rettet mit eget kode til ;)

database strukturen ser således ud:
+--------+----------+------+-----+---------+----------------+
| Field  | Type    | Null | Key | Default | Extra          |
+--------+----------+------+-----+---------+----------------+
| id    | int(11)  |      | PRI | NULL    | auto_increment |
| parent | int(11)  |      |    | 0      |                |
| navn  | tinytext |      |    |        |                |
+--------+----------+------+-----+---------+----------------+
Avatar billede sajbar Nybegynder
02. februar 2005 - 13:04 #1
ser ud til jeg har en løsning nu som virker.
jeg poster den lige så andre har mulighed for at nyde godt af den en anden gang

connect();

$sql = "select * from inst_cat where parent ='0'";
$qh = mysql_query($sql);
?>
<select name="skod" multiple="true">
<?
while ($row = mysql_fetch_assoc($qh))
{
  echo "<option value=\"$row[id]\">$row[navn]</option>";

    $level = 0;
    foldUd($row['id']);
 
}

//Fold ud er en funktion som denne:

function foldUd($id,$indent="..")
{

  $sql = "SELECT * FROM inst_cat WHERE parent = '$id'";
  $qh = mysql_query($sql);

  while ($row = mysql_fetch_assoc($qh))
  {
    echo "<option value=\"row[id]\">";
    echo $indent;
    echo "$row[navn] </option>";

    foldUd($row['id'],$indent."..");
}
  mysql_free_result($qh);

}
echo("</select>");
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester