Autor Zpráva
Fergi
Profil
Ahojte,
potřeboval bych trošku helpnout s následující věcí, a sice potřebuji aby se mi automaticky naincludoval soubor z vloženého adresáře bez toho aniž bych něco někde přepisoval ručně,
pro lepší pochopení uvedu příklad:
Mám složku (pojmenuji ji třeba basedir) do které vkladám další složky (ty se budou jmenovat každá jinak - např: články a komentáře....), a v těch bude soubor neco.ini a já potřebuji aby se mi soubor neco.ini automaticky naincludoval do jednoho scriptu a to ze všech složek které jsou ve složce basedir.
Děkuji za každou odpověd
Fergi
Radek9
Profil
Fergi:
$opendir = opendir("basedir");
while($dir = readdir($opendir)){
  if(stristr($dir, ".")==false and file_exists($dir."/neco.ini")){
    include $dir."/neco.ini";
  }
}
Fergi
Profil
ooo děkuji, hned valím zkusit :)
edit: tak zkousim , a nepise mi to zadnou chybu ale ani nevypisuje obsah neco.ini... proste jen bila obrazovka...
Radek9
Profil
Fergi:
Tak si to zkuste upravovat...
Např.:
$opendir = opendir("basedir");
while($dir = readdir($opendir)){
  if(stristr($dir, ".")==false and file_exists($dir."/neco.ini")){
    include $dir."/neco.ini";
    echo $dir."-if1";
  }
  echo $dir."-mimo";
  if(file_exists($dir."/neco.ini")){
    echo $dir."-if2";
  }
}

atd. a sledujte co to vypisuje...
Fergi
Profil
neboj :) zkousim zkousim ;) , moc dekuji za pomoc :)
edit: tak jsem zjistil ze nefunguje to kde je ta podminka (
 if(stristr($dir, ".")==false and file_exists
...)to ostatni jede... cim to?
osobne bych rekl ze to nemuze nacist neco.ini protoze to -if2 se nezapise....
Radek9
Profil
Fergi:
Tak si ještě vypište to stristr a zkuste bez té podmínky naincludovat ten soubor.
Fergi
Profil
kdyz to tam udelam takhle
<?php
$opendir = opendir("basedir");
while($dir = readdir($opendir)){
  if(stristr($dir, ".")==false){	
    echo $dir;
  }
}

tak to vypise adresare, problem je ve funkci file_exists ted jsem na to dosel :D
ps: muzete mi tykat to ja bych vam mel spis s myma zkusenostma vykat :P
Alphard
Profil
Musíš dodat dodat celou cestu, název souboru nestačí.
$directory = "basedir/";
$opendir = opendir($directory);
while($dir = readdir($opendir)){
  if(stristr($dir, ".")==false and file_exists($directory.$dir."/neco.ini")){
    include $directory.$dir."/neco.ini";
    echo $dir."-if1";
  }
Fergi
Profil
uz vim asi kde je chyba ono to overuje jestli soubor existuje ve slozce/neco.ini, ale melo by to overovat v basedir/slozka/neco.ini, tady je problem :)
edit: pozde ... ;)
dekuji oboum moc jste mi pomohli ;)
Radek9
Profil
Alphard, Fergi:
No vidíte, na to jsem úplně zapoměl. Děkuji za opravu.
Fergi
Profil
ahoj,
mam tu jeste jeden problem :(
<?php
function loadplugins()
    {
	$basedir = "basedir/";
        $opendir = opendir($basedir);
            while($dir = readdir($opendir))
            {
                if(stristr($dir, ".")==false and file_exists($basedir.$dir."/neco.ini"))
                {
                   return $basedir.$dir."/neco.ini";
                }
            }
    }

var_dump(loadplugins());

toto je funkce kterou mam v jine tride, ale je to upraveny pro jednoduchost, a tady me jde zase o to ze mi to vypise pouze jeden soubor takze i kdyz mam 2 a vice slozek tak to vypise pouze jednu :(
takze místo
string(23) "basedir/slozka/neco.ini"
string(24) "basedir/slozka2/neco.ini"
string(24) "basedir/slozka3/neco.ini"
to vypise pouze
string(23) "basedir/slozka/neco.ini"
nevi nekdo prosim proc?
dekuji :)
ps: potrebuji to v tomto formatu, protoze to dale parsuji
Majkl578
Profil
Fergi:
nevi nekdo prosim proc?
Ví. Protože tam je return při prvním nálezu. Viz. řádek 10.

Nestačilo by toto?
var_dump(glob('basedir/*/neco.ini'));

Řešení přes while v kombinaci s readdir a file_exists apod. mi přijdou jako kanón na vrabce.
Fergi
Profil
Majkl578:
děkuji, to je velmi elegantní řešení
imploder
Profil
Jestli je soubor adresář se dá zjistit funkcí is_dir. (místo toho stristr(...); i adresář může mít ve jméně tečku)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: