11. januar 2004 - 13:14
Der er
22 kommentarer og 1 løsning
Hvordan laver jeg en Søgefunktion på min side
Hejsa
Nu syntes altså jeg vil have sådan en funktion..Kig på
http://www.upit.dk under upload....er det muligt at man fx ude på forsiden kunne lave en søge-ting som søgte efter det man skulle bruge i /upload/ - mappen ?
Hvis jeg fx søger efter .bmp så kommer alle .bmp typer hvis jeg søger under babes så kommer alle de billeder hvor det indgår i....lidt lige som den der ligger i windows..
Annonceindlæg fra Kingston Technology
11. januar 2004 - 13:22
#1
opendir() kan vel bruges til det du har formuleret.
11. januar 2004 - 13:24
#2
jamen jeg er ikke så god til php :(
11. januar 2004 - 13:58
#4
hmm, prøver lige!
11. januar 2004 - 14:35
#5
<?php $dir_to_read = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/"; // Dir'et, hvor denne fil ligger $filetypes = array("jpg", "gif", "jpeg", "png", "swf", "mp3", "bmp"); // fil-extension's som man kan kikke efter sort($filetypes); ?> <html><head><title>Find filtype i et dir</title></head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="get"> Vælg filtype: <select name="fil_list"> <?php foreach($filetypes as $list) { echo"<option value=\"". $list ."\">". $list ."</option>\n"; } ?></select> <input type="submit" value="Find"> </form> <?php if(isset($_GET["fil_list"])) { $path = opendir($dir_to_read); $result = array(); while (false !== ($files = readdir($path))) { if($files == "." || $files == ".." || is_dir($dir_to_read . $files)) { continue; } $ext = pathinfo($files); // find file-extension if(strtolower(@$ext["extension"]) == strtolower($_GET["fil_list"])) { // bruger @ for ikke at få fejlmeddelser hvis en fil IKKE har et filnavn $result[] = $files; } } closedir($path); if(count($result) > 0) { sort($result); echo"Søge resultater:"; for($i = 0; $i < count($result); $i++) { echo"<br>\n<a href=\"". dirname($_SERVER["PHP_SELF"]) ."/". $result[$i] ."\">". $result[$i] ."</a>"; } }else{ echo"Ingen filer af typen <b>". $_GET["fil_list"] ."</b> blev desværre fundet!"; } } ?> </body><html>
11. januar 2004 - 14:37
#6
ehe, nu er det jo kun filnavne, for at kikke efter f.eks. "babes" skal der ændres lidt! :O)
11. januar 2004 - 14:56
#7
Måske kan det her bruges til noget: <? $dir = "."; // Mappe der skal ledes i ("." = denne mappe). if (isset($_POST['submit'])) { if ($filer = findfiler($dir, $_POST['seek'])) { foreach ($filer as $fil) { echo $fil."<br />"; } } } else { ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <label for="seek">Indtast søgeord: </label> <input type="text" name="seek" id="seek" /> <input type="submit" name="submit" value="Søg" /> </form> <? } function findfiler($dirName,$find) { $d = dir($dirName); while($entry = $d->read()) { if (is_file($dirName."/".$entry)) { if (strpos($entry, $find) !== false) { $filer[] = $entry; } } } $d->close(); return $filer; } ?>
11. januar 2004 - 14:58
#8
det er nok mest et bestemt ord man søger....er det nemt ? jeg vil fx søge SAS. Kommer alle filerne med SAS så frem ?
11. januar 2004 - 15:05
#9
Ja, bare du husker der er forskel på store og små bogstaver.
11. januar 2004 - 15:07
#10
11. januar 2004 - 15:09
#11
Men det kunne jo evt. kombineres med en dropdown liste med filtyper, som sukos foreslår (Ellers kan det indtastes manuelt fx: .jpg).
11. januar 2004 - 15:34
#12
<?php $dir_to_read = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/"; // Dir'et, hvor denne fil ligger ?> <html><head><title>Find filer i et dir, med textfelt-søgning</title></head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="get"> Indtast søgeord <input type="text" name="word"> <input type="submit" value="Find"> </form> <?php if(isset($_GET["word"])) { $path = opendir($dir_to_read); $result = array(); while (false !== ($files = readdir($path))) { if($files == "." || $files == ".." || is_dir($dir_to_read . $files)) { continue; } if(preg_match("/". $_GET["word"] ."/i", $files)) { $result[] = $files; } } closedir($path); if(count($result) > 0) { sort($result); echo"Søge resultater:"; for($i = 0; $i < count($result); $i++) { echo"<br>\n<a href=\"". dirname($_SERVER["PHP_SELF"]) ."/". $result[$i] ."\">". $result[$i] ."</a>"; } }else{ echo"Ingen filer med <b>". $_GET["word"] ."</b> blev desværre fundet!"; } } ?> </body><html>
11. januar 2004 - 17:58
#13
skal det se sådan her ud ?? <?php $dir_to_read = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/customers/upit.dk/upit.dk/httpd.www/"; // Dir'et, hvor denne fil ligger ?> <html><head><title>Find filer i et dir, med textfelt-søgning</title></head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="get"> Indtast søgeord <input type="text" name="word"> <input type="submit" value="Find"> </form> <?php if(isset($_GET["word"])) { $path = opendir($dir_to_read); $result = array(); while (false !== ($files = readdir($path))) { if($files == "." || $files == ".." || is_dir($dir_to_read . $files)) { continue; } if(preg_match("/". $_GET["word"] ."/i", $files)) { $result[] = $files; } } closedir($path); if(count($result) > 0) { sort($result); echo"Søge resultater:"; for($i = 0; $i < count($result); $i++) { echo"<br>\n<a href=\"". dirname($_SERVER["PHP_SELF"]) ."/". $result[$i] ."\">". $result[$i] ."</a>"; } }else{ echo"Ingen filer med <b>". $_GET["word"] ."</b> blev desværre fundet!"; } } ?> </body> <html> eller hva
11. januar 2004 - 18:06
#14
den laver en fejl....hmm den skal søge i den mappe der hedder upload eller /customers/upit.dk/upit.dk/httpd.www/upload/
11. januar 2004 - 18:09
#15
Hvad er problemet/fejlen?
11. januar 2004 - 18:33
#17
Får du samme fejl med scriptet: 14:56:28?
11. januar 2004 - 18:37
#18
Jeg kan se du har ændret ved stien på sukos script. Prøv det nøjagtig som han postede det: 15:34:27.
17. januar 2004 - 18:04
#19
det virker det i 15:34:27 men skriv tessie det er et billede der ligger i mit upload (/customers/upit.dk/upit.dk/httpd.www/upload/) dir, så virker det ik
17. januar 2004 - 18:30
#20
og kan man gøre den søger i ALLE dirs ?
18. januar 2004 - 23:36
#21
18. januar 2004 - 23:58
#22
Kan du bruge ideen i dette script? Du kobler den selv sammen din form, og laver links, osv. <? $startdir = "/home/ej"; $search = ".jpg"; $dirs = Array(); array_push($dirs,$startdir); while (($dir=array_pop($dirs))!==false) { if ($d=@opendir($dir)) { while (($file=readdir($d))!==false) { if ($file=="." || $file=="..") { continue; } if (is_file("$dir/$file")) { if (strpos($file,$search)!==false) { print "$dir/$file<br>\n"; } } if (is_dir("$dir/$file")) { array_push($dirs,"$dir/$file"); } } closedir($d); } } ?>
19. januar 2004 - 00:26
#23
Nå ja, linien while (($dir=array_pop($dirs))!==false) { skal være while (($dir=array_pop($dirs))!==null) {
Vi tilbyder markedets bedste kurser inden for webudvikling