
03-06-2006, 18:13
|
 |
|
|
חבר מתאריך: 02.10.05
הודעות: 2,355
|
|
|
בעיה ברסקורסיה
שלום, יש לי את הפונקציה הזאת:
קוד PHP:
function scan_dir($dir) { static $i; static $subDirs; if(!isset($i)) $i = 1; $dh = opendir($dir); while($file = readdir($dh)) { if($file == '.' OR $file == '..') continue; $pos=strrchr($file,"."); if(empty($pos)) { if(!isset($subDirs)) $subDirs = $dir; $subDirs = $subDirs.'/'.$file; scan_dir($subDirs); continue; } if($i % 2 == 0) echo '</tr><tr>'; echo '<td>'; echo '<img src="'.$dir.'/'. /><br />'."\n"; echo wordwrap("filename: $file", 15, "<br />\n"); echo "<br />\n"; echo "Directory: $dir<br />\n"; echo '<span>Name:</span><br /><input type="text" name="iName['.$i.']" /><br />'; echo '<span>Description</span><br /><textarea cols="15" rows="7" name="des['.$i.']"></textarea><br />'; echo '<span>Cost:</span><br /><input type="text" name="cost['.$i.']" /><br />'; echo '<span>Gender:</span><br /> <select name="gender['.$i.']"> <option value="Male">Male</option> <option value="Female">Female</option> </select><br />'; echo '<span>Rare leval:</span><br /> <select name="rare['.$i.']"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select><br />'; echo '<span>Type:</span><br /> <select name="type['.$i.']"> <option value="food">Food</option> <option value="armor">Armor</option> <option value="weapon">Weapon</option> <option value="object">Object</option> </select><br />'; $i++; echo '<input type="hidden" name="src['.$i.']" value="objects/'.$subDirs.'/'.$file.'" alt="'.$file.'" />'; echo '</td>'; } }
מטרתה של הפונקציה היא להוציא לפלט טופס הנמצא בתוך טבלה, כאשר לכל קובץ יש תא בטבלה וניתן מתחת להוסיף פרטים כאשר למעלה כתוב את שם הקובץ.
בגלל שהרצתי את הסקריפט על תיקייה גדולה השרת נתקע ולא התאושש 
מהתוצאה האחרונה שהרצתי ועבדה עדיין (השרת עדיין עמד בזה, אבל בקושי) ראיתי שבמקום לרשום את הקבצים זה רשם את התיקייות.. יש למישהו רעיון?
הנה הסקריפט בלולאה, שעבד חלקית, והיה כבד מידי, לפני שהחלטתי לנסות רסקורסיה:
קוד PHP:
echo '<form action="dir.php" method="post" enctype="application/x-www-form-urlencoded">'."\n"; echo '<table border="1">'; echo '<tr>'; if($dirs = opendir("objects")) { while($subDir = readdir($dirs)) { if($subDir == '..' OR $subDir == '.') continue; if ($dh = opendir("objects/".$subDir)) { $i=1; while (($file = readdir($dh)) !== false) { if(is_dir($file)) continue; $pos=strrchr($file,"."); if($pos != '.png' AND $pos != '.gif') continue; if($i % 5 == 0) echo '</tr><tr>'; echo '<td>'; echo '<img src="objects/'.$subDir.'/'.$file.'" alt="'.$file.'" /><br />'."\n"; echo wordwrap("filename: $file ", 10, "<br />\n"); echo "<br />\n"; echo "Directory: $subDir<br />\n"; echo '<span>Name:</span><br /><input type="text" name="iName['.$i.']" /><br />'; echo '<span>Description</span><br /><textarea cols="15" rows="7" name="des['.$i.']"></textarea><br />'; echo '<span>Cost:</span><br /><input type="text" name="cost['.$i.']" /><br />'; echo '<span>Gender:</span><br /> <select name="gender['.$i.']"> <option value="Male">Male</option> <option value="Female">Female</option> </select><br />'; echo '<span>Rare leval:</span><br /> <select name="rare['.$i.']"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select><br />'; echo '<span>Type:</span><br /> <select name="type['.$i.']"> <option value="food">Food</option> <option value="armor">Armor</option> <option value="weapon">Weapon</option> <option value="object">Object</option> </select><br />'; $i++; echo '<input type="hidden" name="src" value="objects/'.$subDir.'/'.$file.'" alt="'.$file.'" />'; echo '</td>'; } closedir($dh); } } }
בסקריפט הזה יש כל מיני דברים שאין בפונקציה, כי עוד לא הוספתי, והחלטתי עוד לא להוסיף.
_____________________________________
|