Avatar billede klaske_ko Nybegynder
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..
Avatar billede sukos Juniormester
11. januar 2004 - 13:22 #1
opendir() kan vel bruges til det du har formuleret.
Avatar billede klaske_ko Nybegynder
11. januar 2004 - 13:24 #2
jamen jeg er ikke så god til php :(
Avatar billede sukos Juniormester
11. januar 2004 - 13:54 #3
nej ok, men det hjælper hvis man prøver sig frem! :O)

For at kikke et dir igennem for filer,
http://dk.php.net/manual/en/function.opendir.php

For at tjekke fil-endelser, kan du bruge pathinfo()
http://dk.php.net/manual/en/function.pathinfo.php

Jeg ville så nok lave en form hvor man kunne vælge filtype og søge efter, og ud fra det læser man dir igennem, tjekker fil-extension, og derefter lister filerne
Avatar billede sukos Juniormester
11. januar 2004 - 13:58 #4
hmm, prøver lige!
Avatar billede sukos Juniormester
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>
Avatar billede sukos Juniormester
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)
Avatar billede detox Nybegynder
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;
}
?>
Avatar billede klaske_ko Nybegynder
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 ?
Avatar billede detox Nybegynder
11. januar 2004 - 15:05 #9
Ja, bare du husker der er forskel på store og små bogstaver.
Avatar billede sukos Juniormester
11. januar 2004 - 15:07 #10
Avatar billede detox Nybegynder
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).
Avatar billede sukos Juniormester
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>
Avatar billede klaske_ko Nybegynder
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
Avatar billede klaske_ko Nybegynder
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/
Avatar billede detox Nybegynder
11. januar 2004 - 18:09 #15
Hvad er problemet/fejlen?
Avatar billede klaske_ko Nybegynder
11. januar 2004 - 18:22 #16
den skriver... ja prøv at kigge...http://upit.dk/soeg2.php og søg efter ET eller andet
Avatar billede detox Nybegynder
11. januar 2004 - 18:33 #17
Får du samme fejl med scriptet: 14:56:28?
Avatar billede detox Nybegynder
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.
Avatar billede klaske_ko Nybegynder
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
Avatar billede klaske_ko Nybegynder
17. januar 2004 - 18:30 #20
og kan man gøre den søger i ALLE dirs ?
Avatar billede klaske_ko Nybegynder
18. januar 2004 - 23:36 #21
lukket / flyttet til http://www.eksperten.dk/spm/453627
Avatar billede erikjacobsen Ekspert
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);
      }
  }

?>
Avatar billede erikjacobsen Ekspert
19. januar 2004 - 00:26 #23
Nå ja, linien
    while (($dir=array_pop($dirs))!==false) {
skal være
    while (($dir=array_pop($dirs))!==null) {
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester