PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : include =! Function include ; Grosses Problem beim Modularen laden



dadie
15.05.2005, 10:01
Hallo ,

Nach langer arbeit ist mein Modulares CMS Fertig (es fehlen halt nurnoch Module)
nun bin ich dabei sie zu bauen und es gibt eine Grosses bzw. Grundlegendes Problem -.-'

Undzwar lade ich die Module über folgende funktion :



function modul_load($dir)
{
Module_del() ;
$dir_handle = opendir($dir);
while ($filename = readdir($dir_handle))
{

$datei_info = explode(".", $filename);

$datei_info2 = $datei_info[count($datei_info)-1] ;


if ($filename != '..' && $filename != '.htaccess' && $datei_info2 != 'info' && $filename != 'module.xml' && $filename != 'index.php' && $filename != '.' )
{

$a = "SELECT * FROM `Module` WHERE `datei_name` = '$filename' AND `dir_name` = '$dir' ORDER BY `id` ASC LIMIT 1";

$a = mysql_query ("$a");

if(mysql_num_rows($a) == "1")
{

$b = mysql_fetch_assoc($a) ;

if( $b[zustand] == "1")
{

include("./$dir/$filename") ; //Modul Laden

}

}
else
{

mysql_query ("INSERT INTO `Module` (`datei_name` , `dir_name` , `name` , `zustand` )VALUES ('$filename', '$dir', '$filename', '0')");

$command = 'mysql_query (INSERT INTO `Module` (`datei_name` , `dir_name` , `name` , `zustand` )VALUES (\''.$filename.'\', \''.$dir.'\', \''.$filename.'\', \'0\'));' ;

$tee = 'INSERT INTO `Log` ( `command` , `ac_no` , `e_user` , `time` ) VALUES ("'.$command.'", "00000001", "", NOW( ));' ;

$tee = mysql_query ("$tee");

}



}
}
closedir($dir_handle);


}

Anscheinend gilt der include hier nur inerhalb der Funktion wie die Variablen -.-'

Ich will es aber auch nicht aus der Funktion raushollen das es so besser Update bar ist
da ich so für Updates nur die funktionen.db.php austauschen muss.

Weii jemand ratt ? (auch wenn ich es bezeifle -.-')

Mfg Dadie

ps.Nett meckern über den code ist erst version 00.00.01a -.-'

Jesus_666
15.05.2005, 12:01
include() fügt den Code da ein, wo du den Funktionsaufruf hast. Also wird dir include() nicht viel bringen.

Mit eval() könntest du allerdings die include()-Funktionalität emulieren: Du lädst in deiner Funktion die Dateien in ein Array, das du zurückgibst (dabei lädst du jede Funktion in eine Arrayzelle).
Auf globaler Ebene wertest du den Code dann per eval() und Arayzugriff aus: Aus neue_funktion() wird dann eval(funktionen["neue_funktion"]). Das ist zwar frickelig, sollte aber irgendwie funktionieren.

dadie
15.05.2005, 12:50
thx was währe ich nur ohne dich ^^

Es klappt mehr oder wenniger bisher sehr gut (ist halt nur sehr aufwendich)
aber THX ^^ die idee ist genial

dadie
16.05.2005, 11:19
sorry für den Doppel Post aber ich habe ein Extremes Problem das ich einfachn nicht LÖsen kann -.-'

undzwar wie folgt :

Ich sätze nun die namen der Module in Arrary Spalten
zuerst hatte ich es versucht an dem arrary ende mit "array_push"
den namen der module ein zu fügen.Das scheiterte aber egal was ich taht er gab immer nur Arrary aus -.-

Dann habe ich versucht es über $i zu machen allso bei jedem ausf+hren $i++;
und der Modul name wird wie volgt eingefügt $str_arrary[$i] = "$str_arrary_tm";

Hierbei liefert er dann Arrary[0] usw. aus -.-

Langsamm macht mich das wahnsinich -.-

Latency
16.05.2005, 13:03
Hast du deine Variable zuvor auch als Array deklariert?

Und wie liest du deinen Array aus? Denn wenn er einfach "Array" aus gibt scheint es mir als greifst du auf kein bestimmtes Element zu, und deine Funktion/whatever ist nicht darauf ausgelegt Arrays als Parameter zu bekommen.

Chocwise
16.05.2005, 17:06
Um deinen Array zu testen, benutz print_r (http://de2.php.net/manual/de/function.print-r.php). ;)
Die Funktion gibt einen kompletten Array aus, ohne das du die Elemente per Key einzelnd ansprechen musst. Damit lässt sich dann wunderbar die Struktur eines Array's wiedergeben.

Latency
16.05.2005, 17:15
Um deinen Array zu testen, benutz print_r (http://de2.php.net/manual/de/function.print-r.php). ;)
Die Funktion gibt einen kompletten Array aus, ohne das du die Elemente per Key einzelnd ansprechen musst. Damit lässt sich dann wunderbar die Struktur eines Array's wiedergeben. print_r ist sogar noch einen Zacken geiler, denn es gibt dir sogar alle Attribute eines Objekts mit samt Werten aus.

dadie
17.05.2005, 15:50
thx es liegt woll nicht am arrary sondern an der beschrifftung des arrarys den print_r
liefer die richtige spalten zahl zurück jedoch ihne inhalt ^^.