DropDown über functions.php

#AHBL
Problembeschreibung:
Hallo, ich habe für meine User eine Art Filebase erstellte eine kleine wo sie Kategorien jeder für sich anlegen kann und dann Einträge dazu anlegen und bearbeiten können nur habe ich noch ein Problem was ich nicht selber gelöst bekomme. Um einen Eintrag jetzt einer Kategorie zu zuordnen müssen sie die ID der Kategorie angeben sprich, ich hab ein input Feld wo sie die ID der Kategorie eintragen wo der Eintrag drunter angezeigt werden soll doch möchte ich lieber ein DropDown haben wo alle Kategorien aufgelistet sind die der User X für sich angelegt hat.

Also habe ich in der function.php geschaut wie das bei dem DropDown im ACP bei den Board anlegen gemacht wurde also habe ich folgendes in der function hinzugefügt (habe es dann kopiert und angepasst also es versucht)

php:
1:
2:
3:
4:
5:
6:
function makecatoptions($catid$selected=0) {
   $out .= "<option value=\"".$cat[catid]."\"".ifelse($selected==1" selected").">";
   $out .= str_repeat("".$cat[name]."</option>";
   else $out .= $cat[name]."</option>";
   $out.=makecatoptions($cat[catid],$selected);
}


Dann in der filebase.php im ADD Teil folgendes
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
if(isset($_POST['send'])) {
$db->query("INSERT INTO bb".$n."_filebase (id,userid,info,catid) VALUES(NULL,'$wbbuserdata[userid]','".addslashes(htmlspecialchars($info))."','$catid')");
header("Location: filebase.php?action=own");
exit();
}
$result_drop $db->query("SELECT catid, info  FROM bb".$n."_filebase_cat WHERE userid = '$wbbuserdata[userid]'");
while ($row $db->fetch_array($result_drop)) $cat_options makecatoptions(0);
eval("\$tpl->output(\"".$tpl->get("filebase_entriesadd")."\");");
}

Im Edit Teil
if(isset($_POST['send'])) {
$db->query("UPDATE bb".$n."_filebase SET info='".addslashes(htmlspecialchars($info))."', catid='".addslashes(htmlspecialchars($catid))."' WHERE id='$id'");
header("Location: filebase.php?action=own");
exit();
}

$result_drop $db->query("SELECT catid, info FROM bb".$n."_filebase_cat WHERE userid = '$wbbuserdata[userid]'");
while ($row $db->fetch_array($result_drop)) 
$cat_options makecatoptions(0,1,1,$row['catid']);

eval("\$tpl->output(\"".$tpl->get("filebase_entriesedit")."\");");
}


Nun ist mein Problem, dass ich die ID der Kategorie nicht in die Datenbank so bekomme den diese bleibt auf 0 ob ich einen neuen Eintrag erstelle oder einen bearbeite und nun weiß ich nicht ob es wirklich nötig ist, das ganze in der function.php zu machen oder ob man sowas auch anders lösen kann das ich nur den Namen im DropDown der Kategorie auswähle er die richtige ID bei einem Neuen Eintrag in die DB schreibt und beim bearbeiten eines Beitrages.

So sieht es in dem ADD Template aus
code:
1:
2:
3:
4:
5:
6:
7:
<tr>
   <td bgcolor="{tablecolora}" id="tableb"><b>Kategorie:</b></td>
   <td bgcolor="{tablecolora}" id="tablea"><select name="cat">
    <option value="0">keine</option>
    $cat_options
   </select></td>
  </tr>


Und so sieht es im EDIT Template aus
code:
1:
2:
3:
4:
5:
6:
7:
<tr>
   <td bgcolor="{tablecolora}" id="tableb"><b>Kategorie:</b></td>
   <td bgcolor="{tablecolora}" id="tablea"><select name="cat">
    <option value="0">keine</option>
    $cat_options
   </select></td>
  </tr>


Um eine passende Lösung wäre ich sehr dankbar oder eine Aufklärung wie man das Problem gelöst bekommt.

Grüße

Fehlermeldung:


Link zum Forum und Screenshot (KEINE Bilderhoster, per Dateianhang):


Was wurde zuletzt geändert oder eingebaut?
Schrimm
Hallo,

Du hast folgende Funktion erstellt:
php:
1:
2:
3:
4:
5:
6:
function makecatoptions($catid$selected=0) {
   $out .= "<option value=\"".$cat[catid]."\"".ifelse($selected==1" selected").">";
   $out .= str_repeat("".$cat[name]."</option>";
   else $out .= $cat[name]."</option>";
   $out.=makecatoptions($cat[catid],$selected);
}

Die Funktion enthält zwei Parameter "catid" und "selected".

Nun rufst du die Funktion mit folgenden Befehl auf:
php:
1:
$cat_options makecatoptions(0,1,1,$row['catid']);

Hier übermittelst du jedoch vier Parameter.
Somit hast du die Funktion überladen.
Um deine Funktion aufzurufen, musst du dort zwei Parameter entfernen und die "catid" als ersten Parameter angeben, damit dieser auch als "catid" erkannt wird und nicht als "selected".