Hjemmelavet stifinder driller
Jeg har fortsat gang i et projekt, med at opgradere et intranet til nyere verionser af bl.a. php.Derfor løber ind i nogle ting, som ikke virker længere bl.a. dette.
Jeg har en lille stifinder, som kigger i en bestemt mappe på en server, ud fra et tilbuds- eller ordre-nummer. Samtidig oprettet stifinderen hovedmappen + nogle forudbestemme undermapper, hvis disse ikke findes.
Men efter jeg har opgraderet php, så virker stifinderen ikke længere.
Jeg får bl.a. følgende fejl
Warning: mkdir() [function.mkdir]: File exists in C:\wamp\www\stifinder.php on line 22
Warning: mkdir() [function.mkdir]: Invalid argument in C:\wamp\www\stifinder.php on line 22
Derudover får jeg også denne fejl, selvom det ikke er mkdir, så tror jeg faktisk de har noget med hinanden at gøre.Warning: Invalid argument supplied for foreach() in C:\wamp\www\stifinder.php on line 254
Det er som om at stien som funktionerne får ikke er helt korrekt, for når jeg tester i funktion forceDir, så returnere explode() ikke noget i de 2 første elementer af arrayet, altså [0] og [1].
Men jeg har stirret mig blind på koden nu, kan bare ikke se hvad fejlen er, så nu får I chancen... :-)
Koden:
<?php
include('static/opsaetning.php');
/*
echo '<p>$SERVER: '.$SERVER.'</p>';
echo $KATALOG."<br>";
echo $SERVER."<br>";
*/
function forceDir($dir){//Funktion der opretter alle undermapper
echo $dir."<br>";
$subs = explode('/', $dir);
echo $subs[1]."<br>";
$tmp = '';
foreach($subs as $name){
echo $name."<br>";
$tmp = $tmp . $name;
//echo $tmp."<br>";
echo file_exists($tmp);
if (!file_exists($tmp)) {
echo $tmp."<br>";
echo "Filen findes ikke";
mkdir( $tmp );
}
$tmp = $tmp . '/';
}
return $dir;
}
function showDir($root, $dir) {
include('static/opsaetning.php');
//$KATALOG = "katalognavnet";
$SERVER = "servernavnet";
$filliste = array();
//$showdir = "//" . $SERVER . "/" . $KATALOG . "/" . $root;
$type = substr("$root", 0, strpos($root, "/"));
$mappe1;
$mappe2;
if ($type == Tilbud) {//Tjekker hvilken type sagen er, tilbud/ordre
$num = substr("$root", -6);
$mappe1 = substr($num, -5, 1);
$mappe2 = substr($num, -4, 1);
$ubermappe = substr($num, -6, 2);
$slutmappe;
$mapper = $mappe1 . $mappe2;
if ($mapper > 9){
$startmappe = $mappe2 . "000";
} else {
$startmappe = $mapper . "000";
}
if ($mappe1 == 0){
$slutmappe = (($mappe2 +1) . "000") - 1;
$startmappe = $mappe2 . "000";
} else {
$slutmappe = ((($mappe1 . $mappe2)+1) . "000" -1);
}
if ($slutmappe<"1000"){
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . "0".$slutmappe;
} else {
if($slutmappe > 10000){
$mappenavn = $ubermappe . $startmappe ."-". substr($ubermappe, -2, 1) . $slutmappe;
} else {
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . $slutmappe;
}
}
$mappenavn;
$root = $type . "/" . $mappenavn . "/" . $num;
} else {
$num = substr("$root", -5);
$mappe1 = substr($num, -4, 2);
if ($mappe1 > 9) {
$mappe2 = $mappe1+1;
} else {
$mappe1 = substr($num, -3, 1);
$mappe2 = $mappe1 +1;
}
$ubermappe = substr($num, -6, 2);//retunere de 2 første cifre
if ($mappe1 > 9){
$mappe1 = substr($num, -3, 1);
$mappe1 = $mappe1 . "00";
} else {
$mappe1 = $mappe1 . "00";
}
//Laver slutmappen
$slutmappe1 = ((substr($num, -3, 1) + 1)."00") -1;
if ($slutmappe1 < 100) {
$slutmappe1 = "0". $slutmappe1;
}
$mappenavn = $ubermappe . $mappe1 . "-" . $ubermappe . $slutmappe1;
$root = $type . "/" . $mappenavn . "/" . $num;
}
//echo $type;
$showdir = "//" . $SERVER . "/" . $KATALOG . "/" . $root;
forceDir($showdir);//Kalder funktion som opretter undermapper
if ($type == Tilbud) {
for($i=1; $i<=count($TILBUD); $i++){
$mail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/" . $TILBUD[$i];
/* Tjekker mappens navn, er de 2 første tegn ikke 0_,
tjekkes der for om mappen findes i forvejen med 0_ foran i mappenavnet.
Findes den ikke, så oprettes der en mappe men uden 0_ i navnet
*/
if( substr($TILBUD[$i], 0, 1) != "0_") {
$tmpMail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/0_" . $TILBUD[$i];
if ( !file_exists($tmpMail) ) {
mkdir($mail);
} else {
mkdir($tmpMail);
}
}
}
} else {
for($i=1; $i<=count($ORDRE); $i++){
$mail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/" . $ORDRE[$i];
/* Tjekker mappens navn, er de 2 første tegn ikke 0_,
tjekkes der for om mappen findes i forvejen med 0_ foran i mappenavnet.
Findes den ikke, så oprettes der en mappe men uden 0_ i navnet
*/
if( substr($ORDRE[$i], 0, 1) != "0_"){
$tmpMail = "//" . $SERVER . "/" . $KATALOG . "/" . $root . "/0_" . $ORDRE[$i];
if ( !file_exists($tmpMail) ) {
mkdir($mail);
} else {
mkdir($tmpMail);
}
}
}
}
if($dir != ""){
$showdir .= $dir;
$filliste[] = "<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\"> <img src=\"/gfx/mappe.gif\" border=\"0\" width=\"18\"> </a>
<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\">..</a>";
}
$files = array();
$dirs = array();
if ( $dh = opendir( $showdir ) ) {
while ( $fil = readdir( $dh ) ) {
if ( is_dir( $showdir . '/' . $fil ) && $fil != '.' && $fil != '..' ) {
$dirs[] = $showdir . '/' . $fil;
} else if ( !is_dir( $showdir . '/' . $fil ) ) {
$files[] = $showdir . '/' . $fil;
}
}
}
sort( $dirs );
sort( $files );
if(count($dirs)<1){
echo "<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\"> <img src=\"/gfx/mappe.gif\" border=\"0\" width=\"18\"> </a>
<a href=\"stifinder.php?root=$root&dir=" . substr_replace($dir, '', strrpos($dir, '/') ) . "\">..</a>";
} else {
for($i=0;$i<count($dirs);$i++){
echo "<a href=\"stifinder.php?root=$root&dir=".$dir."/".basename($dirs[$i])."\"> <img src=\"/gfx/mappe.gif\" width=\"18\" border=\"0\"> ".basename($dirs[$i])." </a><br>";
}
}
for($i=0;$i<count($files);$i++){
$tmp=explode( '.', basename($files[$i]) );
if(strtolower($tmp[1]) == "rtf" || strtolower($tmp[1]) == "doc" || strtolower($tmp[1]) == "docx") {
$ikon="/gfx/ikon_word.gif";
} else if(strtolower($tmp[1]) == "xls" || strtolower($tmp[1]) == "xlsx") {
$ikon="/gfx/ikon_excel.gif";
} else if(strtolower($tmp[1]) == "pdf") {
$ikon="/gfx/ikon_pdf.gif";
} else {
$ikon="/gfx/ikon_fil.gif";
}
echo "<a target=\"_blank\" href=\"file:".$files[$i]."\"> <img src=\".$ikon.\" width=\"18\" border=\"0\"> ".basename($files[$i])." </a><br>";
}
}
?>
<html>
<style>
body, table, tr, td {
margin-bottom : 0px;
margin-left : 0px;
margin-right : 0px;
margin-top : 0px;
font-family : Geneva, Arial, Helvetica, sans-serif;
font-size: 13px;
}
a {
text-decoration: none;
color: black;
}
</style>
<body>
<table width="500">
<?php
$filliste = showDir($_GET['root'], $_GET['dir']);
foreach($filliste as $fil) {
echo "<tr><td>$fil</td></tr>";
}
?>
</table>
</body>
</html>
