търсене в няколко директории

Dido_net

Registered
значи.. имам един скрипт и искам да търси в няколко директории :!:
в момента търси само в 1, може ли да се направи в няколко? е това е скрипта :arrow:


<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Search</title>
</head>

<body>
<center>
<form action="./search.php" method="get">
<table border="0">
<tr><td class="bgg" width="600"><table>
<tr><td>Търсене <input type="text" name="s" size="65" value="<?php echo $_GET['s']; ?>"></td>
<td align="right">                       Категория <select name="cat"><option> </option>
<option value="1">Audio</option>
<option value="2">Software</option>
<option value="3">Games</option>
</select></td></tr>
<tr><td colspan="2" align="right"><input type="submit" value="Търси"></td>
</tr></table></td></tr></table>
</form>
<table border="0">
<?php



$cat = $_GET['cat'];
$p = $_GET['s'];

if($cat == "1")
{ $dir = "downloads/audio/"; }
else
if($cat == "2")
{ $dir = "downloads/software/"; }
else
if($cat == "3")
{ $dir = "downloads/games/"; }
else
if(isset($cat))
{
if($cat >= "3" || $cat == "")
{ echo"Моля изберете категория !\n</center>\n</body>\n</html>"; exit; }
}
else
if(isset($p)) {
if($cat == NULL)
{ echo"Моля изберете категория !\n</center>\n</body>\n</html>"; exit; } }
$flag=0;
if(isset($p)) {
foreach(glob($dir."*") as $file) {
if(@eregi($p, str_replace($dir, "", $file))) {

echo("<tr><td class=\"res\" width=\"800\"><a href='".$file."' target=_blank>".str_replace($dir, "", $file)."</a></td><td align=\"right\">$size</td></tr>\n");
$flag+=1;
}
}
if($flag==false) {
echo("Няма намерени файлове.");
}
}
?>
</table>
</center>
</body>

</html>
 

sizif

Registered
Здравей!

Може да стане лесно с масив, в който поставяш имената на директориите. Обхождаш масива, а в тяло на цикъла поставяш циклите за търсене. Извличаш първия елемент от масива (първата директория) и го прекарваш през цикъла за търсене, после следващия и т.н.
Възможно е да има и по-елегантен начин. Този е първият, който ми хрумва...

В момента само минавам и не ми се иска да ти пускам код, който не съм пробвал, но по-късно ще се опитам да го напиша. Предполагам, че те интересува търсене в директориите софтуер, аудио и игри.

Нещо ме смущава в скрипта, които си пуснал, но е само усещане, напълно възможно е и да греша. Пробвал ли си го дали работи?

Това е засега. По-късно ще опитам да допълня кода така, както го искаш.
 

sizif

Registered
Може би смущението ми идва от това, че аз бих направил проверките по друг начин :)
Отовори ми се малко време, а щом кода работи, може да пробваш с това:

<?
$p=.........

$dm[]='downloads/audio/';
$dm[]='downloads/software/';
$dm[]='downloads/games/';

$kolko=count($dm);


$flag=0;

for ($i=0; $i<$kolko; $i++){
$dir=$dm[$i];


if(isset($p)) {
foreach(glob($dir."*") as $file) {
if(@eregi($p, str_replace($dir, "", $file))) {

echo("<tr><td class=\"res\" width=\"800\"><a href='".$file."' target=_blank>".str_replace($dir, "", $file)."</a></td><td align=\"right\">$size</td></tr>\n");
$flag+=1;
}
}
if($flag==false) {
echo("Няма намерени файлове.");
}
}
}

?>

Използваш падащо меню и го обработваш малко сложно, а също правиш проверки дали е попълнена формата. Тези два момента засега ги пропускаме. Идеята ми е да дадеш някаква стойност на $р като при стандартно търсене, за да пробваш конструкцията. Вече се сещам за нещо, което ще трябва да се дообмисля, но засега искам само да видя как работи. Ако функционира правилно, мислим как най-добре да направим обработката на падащото меню и да го вържем с допълнителния масив. Ок?
На линия съм, така че пробвай още сега и пиши как се дръжи.
 

Горе