Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Haku kansiosta

Sivun loppuun

GeoHound [19.10.2002 10:22:36]

#

Alla oleva skriptin pitäisi hakea kansiosta (ja alakansiosta) kaikki .txt päätteiset tiedostot. Mutta se ei toimi. Osaisiko joku guru neuvoa vähän?

<?php

// Alustukset
$results = array ();
$output = "";
$search = array ("sana1", "testisana"); // Hakusanat

// Lue kansio Testi ja tämän alikansiot
$results = readDirectory ("Testi");

// Järjestä tulokset ja muodosta tulostusstringi
ksort ($results);
reset ($results);
while (list ($k, $v) = each ($results))
for ($i = 0, $j = count ($search); $i < $j; ++$i)
if (strstr ($v, $search[$i]))
$output .= str_replace (".txt<", "", "<a href=\"$k\">$k</a><br>\n");

// Tulostetaan hakutulokset
echo $output;

// Lukee kansioista ja alikansioista .txt tiedostot
function readDirectory ($path)
{
global $results;
$dir = opendir ($path);
while ($item = readdir ($dir))
if (strstr ($item, ".txt"))
$results["$path/$item"] = join ("", file ("$path/$item"));
else if (is_dir ("$path/$item"))
readDirectory ("$path/$item");
closedir ($dir);

GeoHound [19.10.2002 10:24:10]

#

oho, unohin laittaa ne koodi tagiin :)

mikko [19.10.2002 10:45:14]

#

Ja laitoit väärään paikkaan.

thefox [19.10.2002 12:04:25]

#

Väärä paikka ja suoraan sanoen paska kysymys. Jos te, hyvät ihmiset, haluatte että teitä autetaan niin kertokaa nyt ihmeessä mikä siinä _täsmälleen_ ei toimi.

Veltto [19.10.2002 14:51:28]

#

Tässä on mureakuhan koodista väännetty purkka:

<?php
if(!empty($HTTP_GET_VARS['dir']))
{
    $dir=$HTTP_SERVER_VARS['DOCUMENT_ROOT'].'/'.$HTTP_GET_VARS['dir'];
    $d=&$HTTP_GET_VARS['dir'];
}
else
{
    $dir='.';
    $d='.';
}
clearstatcache();
if($a=@opendir($dir))
{
    while($b=readdir($a))
    {
        if(ereg("^\\.",$b))
            continue;
if(ereg(".txt", $b)) {
        echo (is_dir($b))?"<li> <a href=?dir=$d/$b>$b</a>":"<li> <a href=$d/$b>$b</a>";
}
    }
    closedir($a);
}
else
{
    echo 'Kansioon ei oikeutta';
}
?>

GeoHound [19.10.2002 15:11:38]

#

Veltto, sen piti olla haku eli searchi. ei tommonen.

GeoHound [19.10.2002 15:12:24]

#

En minä tiedä mikä siinä on vikana, kun se ei ole minun tekemäni!

thefox [19.10.2002 15:21:41]

#

Kysyinkin _miten_ se ei toimi? Virheilmoituksia? Mitä tapahtuu? Mitä jää tapahtumatta?

Veltto [19.10.2002 16:28:09]

#

ahaa, luin ton ekan viestis vähän huolimattomasti

mikko [20.10.2002 00:04:38]

#

Ja Antille: Voisiko rivitystä viilata vähän?

GeoHound [20.10.2002 01:12:52]

#

kertokaa vaan jos tulee ideota miten korjta se kun oon itte iha nyypi

Antti Laaksonen [20.10.2002 01:20:46]

#

Tuossa skriptissäsi on näemmä rekursiivinen eli itseään kutsuva aliohjelma. Jonkin bugin seurauksena se sitten kutsuu itseään loputtomiin tai ainakin liian monta kertaa, jolloin avattavien hakemistojen maksimimäärä ylittyy.

Antti Laaksonen [20.10.2002 01:46:07]

#

Tein nyt vielä huvikseni toimivan ja puolta lyhyemmän version tuosta skriptistäsi. Skripti tulostaa kaikki sen hakemiston ja alihakemistojen .txt-tiedostot.

<?php
lh(".",".txt");
function lh($hak,$p)
  {
  $h=opendir($hak);
  while ($t=readdir($h))
    {
    if (substr($t,-4)==$p){echo "$hak/$t<br>";}
    if (is_dir("$hak/$t") && $t<>"." && $t<>".."){lh("$hak/$t",$p);}
    }
  }
?>

GeoHound [21.10.2002 14:37:55]

#

Danke

GeoHound [21.10.2002 14:42:00]

#

äärhh!

eihän tuo ollukkaan se mitä haeskelin.
Miten saisin semmosen "search" jututn joka ettisi sen tietyn .txt tiedoston??

Antti Laaksonen [21.10.2002 18:09:27]

#

Nopeastihan tuosta "search" jutun tekee, kun tarkistaa vaikka substr_count:illa löytyykö haettua nimeä kustakin löydetystä tiedostosta.

Suosittelen, että opettelet itse jonkin verran PHP-ohjelmoinnin perusteita, sillä jos kaikki skriptit pitää etsiä jostain valmiina täsmälleen oikeamuotoisina, siinä menee pidemmällä tähtäimellä enemmän aikaa kuin PHP-ohjelmoinnin opettelemiseen.

pistemies [16.11.2002 18:00:09]

#

Tästä saat pienen hakukoneen, josta voit väsätä isomman:

http://www.pm-netti.com/lapissa/soft/

mikko [16.11.2002 19:27:38]

#

Pekka haluaa sitten väkisin bannit/tjsp. ? :P

pistemies [16.11.2002 19:52:34]

#

Ööööö, Mikko? T? Missä sinun rohviilisi on?

mikko [16.11.2002 19:58:54]

#

Tulee sitten joskus...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta