Elikkä teen MySQL tietokantaa ja käytän PHP:tä hallinnointiin webselaimella. Kysymykseni kuuluu, miten pystyn tekemään, jos tuotteen ID on 99535, että PHP/MySQL tekisi kansion 90000, jonka alla on kansio 9000, jonka alla on kansio 500 jne.
Onko mahdollista?
<?php $numero = 99535; $m = str_len($numero) - 1; $kansio = ""; $x = 0; while($x <= 0){ $kansio .= str_pad(substr($numero,$x,1),$m-$x)."/"; ($input, 10); $x++; } ?>
ton pitäisi antaa "90000/9000/500/30/5/" jos tätä siis tarkoitit en tiedä onko helpompaa tapaa mutta käytä tota apunas
Mites toi käytännös toimii PHP:n MKDIR komennon kanssa?
mkdir($kansio,,true); ?
Niin, mutta miten saan luotua kansioita allekkain?
mkdir("$kansio1",,true);
mkdir("$kansio1/$kansio2,,true);
Vai miten? miten sitten tallennan kaikki kansioiden nimet muuttujiin, eli 90000, 9000, 500, 30 ja 5?
Käyttäen seuraavaa scriptiä:
while($x <= 0){
$kansio .= str_pad(substr($numero,$x,1),$m-$x)."/";
($input, 10);
$x++;
}
Valmista koodia ei saisi antaa, mutta pulma oli houkutteleva ja tässä yksi matemaattinen ratkaisu:
<?php $id = 99535; $jakaja = 1000000; $edellinen = 0; $alkuphakemisto = getcwd(); do{ $jako = floor($id / $jakaja); $tulos = $jako * $jakaja - $edellinen; if($tulos != 0){ @mkdir($tulos, 0777); @chmod($tulos, 0777); chdir(getcwd().'/'.$tulos); } echo getcwd().'<br />'; //debug $jakaja = $jakaja / 10; $edellinen = $edellinen + $tulos; }while($jako < $id); chdir($alkuphakemisto); //palataan alkuperäiseen hakemistoon ?>
http://cgi.evtek.fi/~k0101030/hakemisto.cgi
Varmaan saisi paljon fiksummallakin algoritmillä, mutta toimii
Debugger kirjoitti:
Niin, mutta miten saan luotua kansioita allekkain?
mkdir("ali/hakemistoja/vaikka/kuinka/paljon",,
Tosin näyttäisi toimivan vain PHP5:ssa. Neloseen sovella vaikka ajv:n menetelmää.
Kiitoksia paljon, kaikki...eiköhän näillä avuin selvitä :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.