Warum kostenlos registrieren?

Nur als registriertes Mitglied hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du eigene Fragen stellen und hast die volle Übersicht über neue interessante Themen im Forum.
Jetzt kostenlos registrieren.

Login


Brauche Dateisuche

Fragen oder Probleme mit HTML, PHP oder CSS?

Brauche Dateisuche

Beitragvon Tobi@s am 03.10.2005, 10:00

Hallo,
ich habe recht wenig Ahnung mit php und bin auch grad dabei es zu erlernen. Ich möchte nun eine Datei suche haben, hab aber nirgends was gefunden. Diese soll so aufgebaut sein:

Bild

Textbox = Suchbegriff bzw. Teil eines Dateinamens. Wird z.B. wei eingegeben, findet er alle Dateien die mit wei anfangen. Man könnte noch eine Combobox einbauen, in der man die Suche noch mit Dateitypen verfeinern könnte aber das muss nicht sein.
In der Combobox wo Test 1-3 drin steht, werden die Ordner wie im folgenden Bild ausgelesen und reingeschrieben. Je nachdem welchen Ordner man auswählt wird in ihm gesucht.

Bild

und der Suche Button startet die suche :P

2 nützliche Sachen noch: Wenn kein Suchbegriff eingegeben wurde, ne kleine Textausgabe, es wurde noch kein Suchbegriff eingegeben oder Suche noch nicht gestartet etc.
Nr2: Wenn nichts gefunden werden konnte, nen kleiner Text, es wurde nichts gefunden.

Um euch die Arbeit zu erleichtern, hab ich hier schon zwei Sachen gefunden, die funktionieren aber noch nicht so richtig, vielleicht kann der ein oder andere ja was damit anfangen:

Nr 1:

Code: Alles auswählen
<form action="" method="post">
Ordner: <select name=ordner>
<?
chdir ("covers");
$open = opendir(".");
while ($row = readdir($open)){
if (filetype($row) == dir){
echo "<option value=$row>$row</option>
";
}
}
?>
</select> . = Root - Verzeichnis
<br>
Suche<input type="text" name="sw">
<input type="submit" name="submit" value="Suchen">
</form>

<p></p>
<?php
if($submit){
$open = opendir("$ordner");
while ($row = readdir($open)){
if(preg_match ("/$sw/", $row))
{
echo "<br>found | ". @filetype($row)." : <b>$row</b> ";
$_1 = @filesize($row);
$_2 = $_1 / 1024;
echo "<br>".$_2." KiloBytes";

echo "<br>Download : <a href=$ordner/$row>$row</a> ";

echo "<br><br>";

}
}
}
else
{
  die("<p><em><b>-----------------------------------------------------------------------------------------------------------------------</b></em></p><br>Noch keine Suchanfrage gestartet<br><p><em><b>-----------------------------------------------------------------------------------------------------------------------</b></em></p>");
}

?>


Code Nr.2 (Auszug von http://forum.pchilfe.net/viewtopic.php?t=61)

Code: Alles auswählen
<?php
/*Einen Default Wert für Pfad setzen, wenn
*1. der Pfad noch nicht gesetzt wurde
*2. die Pfad Variable leer ist
*3. die Pfad Variable ".." enthält(aus sicherheits gründen, damit man nicht einfach
*"script.php?Pfad=../../" eingeben kann und dann noch den kompletten pfad vor dem
*Script sieht)*/
if(!isset($_GET['Pfad']) || empty($_GET['Pfad']) || preg_match("|\.\.|", $_GET['Pfad']))
{
    $_GET['Pfad']=".";
}
/*Speichern des Formulars in 2 Variablen, zur leichteren Ausgabe und erstellung der
*Ordner <option>'s*/
$ausgabe1='<form action="'.$_SERVER['PHP_SELF'].'" method="GET">
Suche: <input type="text" name="suche"><br />
Ordner<select size="1" name="Pfad"><option value=".">Selbst';
$ausgabe2='</select><br/>
<input type="submit">
</form><br />';
//Wenn das Verzeichnis geöffnet werden konnte, dann
if($Verzeichniszeiger=opendir($_GET['Pfad']))
{
    /*wird das Verzeichnis Datei weise solange eingelesen, bis wir durch das gesamte
    *Verzeichnis durch sind*/
    while($Datei=readdir($Verzeichniszeiger))
    {
       /*Wenn die momentane Datei nich "." oder ".." ist(sind die bezeichner des
       *aktuellen und des übergeordneten verzeichnisses)*/
       if ($Datei!="." && $Datei!="..")
       {
           //wird überprüft, um die "suche" leer ist
           if(empty($_GET['suche']))
           {
               //wenn es ein Verzeichnis ist,
               if(is_dir($Datei))
               {
                   /*wird an $ausgabe2 das öffnen eines roten <font> tags angefügt
                   *und an $ausgabe1 ein <option> tag mit dem verzeichnis namen*/
                   $ausgabe2.="<font color=\"red\">";
                   $ausgabe1.='<option>'.$Datei;
               }
               //nun wird der link an $ausgabe2 angehängt
               $ausgabe2.="<a href='".$_GET['Pfad']."/".$Datei."'>".$Datei."</a><br />";
               /*und wenn es ein verzeichnis ist ein schließender </font> tag an
               *$ausgabe2 angefügt*/
               if(is_dir($Datei))
               {
                   $ausgabe2.="</font>";
               }
           }
           //wenn die suche nicht leer ist
           else
           {
               /*erstellen wir eine such regel für preg_match, die alles findet,
               *was das wort(oder die buchstaben kombination) in sich hat, wobei
               *groß- und kleinschreibung unwichtig sind*/
               $match="*".$_GET['suche']."*i";
               //nur wenn in der aktuellen $Datei das preg_match etwas findet
               if(preg_match($match, $Datei))
               {
                   /*wird geprüft, ob es sich um ein verzeichnis handelt. falls ja,
                   *fügen wir einen öffnenden roten <font> tag an $ausgabe2 an*/
                   if(is_dir($Datei))
                   {
                       $ausgabe2.="<font color=\"red\">";
                   }
                   //nun wird der link an $ausgabe2 angehängt
                   $ausgabe2.="<a href='".$_GET['Pfad']."/".$Datei."'>".$Datei."</a><br />";
                   /*und wenn es ein verzeichnis ist ein schließender </font> tag an
                   *$ausgabe2 angefügt*/
                   if(is_dir($Datei))
                   {
                       $ausgabe2.="</font>";
                   }
               }
               /*wenn es ein verzeichnis ist, wird noch ein entsprechender <option>
               *tag an $ausgabe1 angehängt*/
               if(is_dir($Datei))
               {
                   $ausgabe1.='<option>'.$Datei;
               }
           }
       }
   }
   //schließen des verzeichnisses
   closedir($Verzeichniszeiger);
}
//und ausgeben der beiden ausgaben
echo $ausgabe1.$ausgabe2;
?>


na dann viel Spaß beim Coden und bitte entäuscht mich nicht, ich frag jetzt hier, weils 3 Leute nicht geschafft haben.
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06


Beitragvon jdominik am 03.10.2005, 17:42

wenn man überprüfen will, ob ein Text eingegeben wurde, um eine entsprechende Text-Ausgabe zu machen, musst du folgenden Code verwenden:

if($name_des_suchbuttons == "") {
echo "Bitte gib in das Suchfeld einen Begriff ein."; }

oder:

if(empty ($name_des_suchbuttons) ) {
echo "bitte gib in das Suchfeld einen Begriff ein."; }

letzteres sieht zwar komplizierter aus, aber ist bei den Profis beliebter.
$name_des_buttons ist übrigens eine Variable.
Diese muss also mit $ beginnen.
Das name_des_buttons muss dem Namen des Suche-Starten-Buttons entsprechen, z.B.:

Code: Alles auswählen
<input type="submit" name="[color=red]start[/color]" value="Suche starten" />


Dann würde der Code so aussehen:

if($start == "") {
echo "Bitte einen Suchbegriff eingeben"; }

oder:

if( empty ($start) ) {
echo "Bitte einen Suchbegriff eingeben"; }

Nach dem PEAR-Standart müsste das ganze aber so aussehen:

if ( code ($var) {
echo "Text"; }

Zwischen if und (, code (z.B. empty) und ( muss ein Leerzeichen sein.

Um die Ordnernamen zu ermitteln musst du die Funktion read_dir verwenden, geh dazu am besten auf php.net und such dort nach read_dir. Du kannst aber auch dafür sorgen, dass die Suche nicht sucht, sondern die Datei gleich öffnet:

<?php
$search_word = $_GET["file"];

if ( file_exists ($search_word) ) {
echo "<a href='./ordner/" . $search_word . "'>" . $search_word . "</a>"; }
else {
echo "Die gesuchte Datei existiert nicht."; }
?>

Dann muss das Formular die Dateien aber über GET senden:

<form action="datei.php" method="GET">
Das Formular
</form>

Definition des PHP-Codes:

Mit der Variable wird der Dateiname ermittelt, der mit GET gesendet wurde. Der Dateiname muss also im URL-Anhand ?file=dateiname oder &file=dateiname stehen. Die Variable $search_word enthält nun den wert des URL-Anhangs ?file. Im Beispiel würde die Variable nun z.B. so aussehen:

$search_word = "dateiname";

Mit if ( file_exists ($search_word) ) { wird überprüft, ob die Datei, die die Variable $search_word enthält exisitiert.
Den rest kennst du ja.

Die Zeile echo "<a href='./ordner/" . $search_word . "'>" . $search_word . "</a>"; } ist etwas kompliziert geschrieben, du wirst warscheinlich die Ausgabe <a href="dateiname">Dateiname</a>. Im Beispiel wäre die Ausgabe aber <a href='dateiname'>Dateiname</a>. Dann musst du die '-s mit \" ersetzen. Vereinfacht würde der Code aber so aussehen:

echo "<a href='./ordner/$search_word'>$search_word</a>";

Aber Profis bevorzugen die komplizierte Schreibweise.

Ich hoffe mal, ich konnte dir damit helfen.
jdominik
 
Beiträge: 370
Registriert: 05.11.2004, 20:19
Wohnort: Zu Hause

Beitragvon Tobi@s am 03.10.2005, 18:18

am besten wäre es wenn du deinen code und meinen zusammenfassen könntest inklusive kommentarzeilen.
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon jdominik am 04.10.2005, 17:00

wenn ich zeit hab und es keiner vor mir macht ja.
jdominik
 
Beiträge: 370
Registriert: 05.11.2004, 20:19
Wohnort: Zu Hause

Beitragvon Tobi@s am 04.10.2005, 17:56

dann schonmal danke :D
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon jdominik am 04.10.2005, 19:20

hab die zwei oberen Scripte mal ausprobiert, die Funktionieren einwandfrei. Wo ist da das Problem?
jdominik
 
Beiträge: 370
Registriert: 05.11.2004, 20:19
Wohnort: Zu Hause

Beitragvon Tobi@s am 04.10.2005, 19:38

beim ersten kommen bei mir fehler wenn ich etwas eingebe. und beim zweiten da funzt das allerdings fehlen da noch features (siehe hier: http://forum.pchilfe.net/viewtopic.php?t=61) und hier:

hmm.

am besten du postest den ganzen code einfach nochmal ohne die kommentare, wenn das mit dem /zweiterordner/ funzt. auch wäre es noch gut, wenn in dem combofeld es einen eintrag gäbe "Alle Ordner durchsuchen", der wie der name schon sagt alle ordner gleichzeitig durchsucht.

eine weitere sache die mich persöhnlich nervt, bei suchen aber doch ganz nützlich sein kann: wenn ich z.b. the eingebe listet er alle dateien auf in denen the drin vorkommt. mir reicht es aber wenn er alles auflistet was mit the anfängt.

und dann hast du ja noch irgendwo was mit farbe red also rot. also ich habe noch nie was rot geschriebenes gesehen. vielleicht fehler?

am besten ist es glaub ich, wir labern einfach mal im irc, icq oder msn. am besten postest du mir mal eines der drei sachen wo ich dich erreichen kann.
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon jdominik am 05.10.2005, 14:07

bei mir gehen beide, und das zweite werd ich mir mal anschauen.
jdominik
 
Beiträge: 370
Registriert: 05.11.2004, 20:19
Wohnort: Zu Hause

Beitragvon Tobi@s am 05.10.2005, 15:19

Tobi@s hat geschrieben:beim zweiten da funzt das allerdings fehlen da noch features (siehe hier: http://forum.pchilfe.net/viewtopic.php?t=61) und hier: [...]
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon jdominik am 07.10.2005, 14:11

mach ich vielleicht morgen oder übermorgen, vielleicht schon heute.
jdominik
 
Beiträge: 370
Registriert: 05.11.2004, 20:19
Wohnort: Zu Hause

Beitragvon Tobi@s am 07.10.2005, 17:07

das ist nett :)
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon Tobi@s am 12.10.2005, 19:09

hmm, übermorgen ist aber schon vorbei :P machst es noch oder hast mich schon vergessen? :cry:
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon Tobi@s am 26.10.2005, 17:38

machst die jetzt noch oder hast du mich schon vergessen?
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06



Ähnliche Themen


Zurück zu HTML, PHP & Co.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste