Hallo zusammen,
ich habe mir (da ich leider (noch) blutiger PHP-Anfäger bin) Mithilfe eines Tutorials eine PHP-Suchfunktion erstellt, die auch super funktioniert.
Nun hätte ich es gerne so, dass das Suchformular (wo man den Suchbegriff eingibt) nicht im selben Frame ist, wie die Suchergebnisse, d.h.
dass man im Suchformular (das sich nicht im iFrame befindet) etwas eingibt -> Auf 'suchen' klickt -> und die gefundenen Ergebnisse in einem iFrame angezeigt werden.
Ich habe testweise mal ein Beispiel hochgeladen http://mitglied.lycos.de/dapperdanman/suchen2.php
Das Suchfeld im iFrame funktioniert - kein Problem. Aber das Suchfeld was sich nicht im iFrame befindet funktioniert nicht :( :(
Könnt ihr mir weiterhelfen?
Vielen Dank im Voraus!
Gruß, Thomas Schaefer
Anbei der Quellcode des PHP-Dokuments:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html> <head> <title>PHP-Suchmaschine</title> <style> body,td,input { font-family:Verdana;font-size:8pt } .t_nummer { font-family:Verdana;font-size:8pt } .markierung {color:#ff0000} </style> </head>
<body bgcolor="E2EAE5">
<? $max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
$endungen=array("html","htm","php","phtml"); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="./"; # Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner (durch Kommata trennen!)
$max_stelle=200; # Maximale (ungefähre) Länge (in Zeichen) der ersten gefundenen Textstelle
$mehr_laenge=200; # Maximale (ungefähre) Länge (in Zeichen) des Strings für weitere Vorkommnisse
########### Ab hier folgt die Suche ####### if (!isset($grossschreibung)) { $grossschreibung=0; } if (!isset($ganzewoerter)) { $ganzewoerter=0; } if (!isset($index)) { $index=0; }
$suchtext=trim(stripslashes($suchtext)); if ($grossschreibung==0) { $suchtext=strtolower($suchtext); } $suchtext=ereg_replace(","," ",$suchtext); $suchtext2=array(); $suchwoerter=array(); $suchtext2=explode(" ",$suchtext); foreach ($suchtext2 as $einwort) { if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) && (!in_array($einwort,$suchwoerter))) { array_push($suchwoerter,$einwort); } } $suchtext=implode(" ",$suchwoerter); ?>
<form action="<? echo "$PHP_SELF"; ?>" method="post"> <table width="600" border="0" cellspacing="5" cellpadding="0" bgcolor="#E2EAE5" align="center"> <tr> <td align="left"><? echo "<input type="text" name="suchtext" size=""; $browser=$HTTP_USER_AGENT; if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo "14"; } echo "" value="".$suchtext.""><br><br>"; ?> <input name="submit" type="submit" value=" suchen "> <div align="left"></div> <div align="left"></div> <div align="left"></div><div align="left"> </div></td> </tr> </table> </form>
<? if ($suchtext!="") { start(); ausgabe(); }
function start() { global $suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$treffer,$max_stelle,$mehr_laenge; global $endungen,$pfade_gesamt; $dateinummer=0; $treffer=array(); $pfade=array(); $pfade=explode(",",$pfade_gesamt); foreach ($pfade as $pfad) { $ordner=opendir($pfad); while ($eintrag=readdir($ordner)) { $name=$pfad.$eintrag; $dateiname=explode(".",$eintrag); if (in_array($dateiname[1],$endungen)) { $anzahl=0; $schluss=0; $gefundene_woerter=array(); $datei=fopen($name,"r"); while (!feof($datei)) { $zeile=fgetss($datei,10000,""); if ($grossschreibung==0) { $zeile=strtolower($zeile); }
$woerter=explode(" ",$zeile); foreach ($woerter as $wort) { foreach ($suchwoerter as $suchwort) { ### ganze Wörter ### if ($ganzewoerter==0) { if (strstr($wort,$suchwort)) { if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); } $anzahl++; $treffer["vorkommnisse"][$dateinummer]++; if ($anzahl==1) { $treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort); $wortlaenge=strlen($wort); $zeilenlaenge=strlen($zeile); if ($zeilenlaenge>$max_stelle) { $lside=$position-(($max_stelle-$wortlaenge)/2); $rside=$lside+$max_stelle; if ($lside<0) { $rside=$rside-$lside; $lside=0; } if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; } } else { $lside=0; $rside=$zeilenlaenge; } $stelle=substr($zeile,$lside,$rside-$lside); $stelle=ereg_replace($wort,"<span class="markierung">".$wort."</span>",$stelle); $stelle="...".$stelle."..."; $treffer["textstelle"][$dateinummer]=$stelle; } else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; } else if ($anzahl>2) { if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; } else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} } } } } ### ganze Wörter ENDE ### ### Wortteile ### else { if ($wort==$suchwort) { if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); } $anzahl++; $treffer["vorkommnisse"][$dateinummer]++; if ($anzahl==1) { $treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort); $wortlaenge=strlen($wort); $zeilenlaenge=strlen($zeile); if ($zeilenlaenge>$max_stelle) { $lside=$position-(($max_stelle-$wortlaenge)/2); $rside=$lside+$max_stelle; if ($lside<0) { $rside=$rside-$lside; $lside=0; } if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; } } else { $lside=0; $rside=$zeilenlaenge; } $stelle=substr($zeile,$lside,$rside-$lside); $stelle=" ".$stelle." "; $stelle=ereg_replace(" ".$wort." "," <span class="markierung">".$wort."</span> ",$stelle); $stelle="...".$stelle."..."; $treffer["textstelle"][$dateinummer]=$stelle; } else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; } else if ($anzahl>2) { if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; } else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} } } } } ### Wortteile ENDE ### } } } fclose($datei); $treffer["woerter"][$dateinummer]=count($gefundene_woerter); $treffer["mehr"][$dateinummer]=$mehr; if (count($gefundene_woerter)>0) { $dateinummer++; } } } closedir($ordner); }
}
function ausgabe() { global $treffer,$dateinummer,$PHP_SELF,$index,$SERVER_NAME,$treffer_pro_seite,$suchwoerter,$suchtext,$grossschreibung,$ganzewoerter;
echo "<table width="600" border="0" align="center"><tr><td>\n"; echo "<span style="font-size:10pt"><b>Ergebnisse der Suche:</b></span><br><br>\n"; $treffer_anzahl=count($treffer["datei_url"]); if ($treffer_anzahl==0) { echo "<span style="font-size:13pt"><b><center><br><br>Leider nichts gefunden<br><br></center></b></span></td></tr></table>\n"; } else { @array_multisort($treffer["woerter"],SORT_DESC,$treffer["vorkommnisse"],SORT_DESC,$treffer["datei_url"],$treffer["textstelle"],$treffer["mehr"]); $suchtext=ereg_replace(" ",", ",$suchtext); if (count($suchwoerter)>1) { echo "Gesuchte Wörter: "; } else { echo "Gesuchtes Wort: "; } echo "$suchtext<br><br>\n"; $anfang=$index*$treffer_pro_seite+1; $ende=$anfang+$treffer_pro_seite-1; if ($ende>$treffer_anzahl) { $ende=$treffer_anzahl; } echo "<b>Treffer $anfang-$ende von insgesamt $treffer_anzahl Treffern, beste Treffer zuerst:<br><br>\n"; echo "</td></tr></table>\n";
for ($k=0;$k<$treffer_pro_seite;$k++) { $i=$index*$treffer_pro_seite+$k; $platz=$i+1; if ($platz<=$ende) { echo "<table width="600" border="0" cellpadding="0" cellspacing="0" align="center">\n"; $t=1; $treffer["datei_url"][$i]=ereg_replace("./","",$treffer["datei_url"][$i]); $datei=fopen($treffer["datei_url"][$i],"r"); while ($t<7) { $zeile=fgetss($datei,1000,""); $zeile=trim($zeile); if ($zeile!="") { echo "<tr><td height="16" colspan="2">"; echo "<span class="t_nummer">".$platz.".</span> <a href="".$treffer["datei_url"][$i]."" target="_self"><b>".$zeile."</b></a>"; break; } $t++; } fclose($datei); if ($treffer["woerter"][$i]==1) { $woerter="Wort"; } else { $woerter="Wörter"; } if ($treffer["vorkommnisse"][$i]==1) { $vorkommnisse="Vorkommnis"; } else { $vorkommnisse="Vorkommnisse"; } echo "<p style="margin-top:0pt; margin-bottom:0pt" align="justify">\n"; echo $treffer["textstelle"][$i]."<br>\n"; echo "<small><b>Weitere Vorkommnisse: </b>".$treffer["mehr"][$i]."</small></p></td></tr>\n"; echo "<tr><td><a href="http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."" target="_blank">\n"; echo "<img src="newwindow.gif" width="14" height="10" border="0">\n";
echo " http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."</a></td>\n"; echo "<td align="right"><small><b>".$treffer["woerter"][$i]." ".$woerter." | ".$treffer["vorkommnisse"][$i]." ".$vorkommnisse."</b></small></td>\n"; echo "</td></tr></table><br><br>\n"; } } }
if ($treffer_anzahl>0) { echo "<center>Seite: \n"; } $j=ceil($treffer_anzahl/$treffer_pro_seite)-1; for ($i=0;$i<=$j;$i++) { $zahl=$i+1; if (($index+1)!=$zahl) { echo "<a href="$PHP_SELF?suchtext=$suchtext&index=".$i."&grossschreibung=".$grossschreibung."&ganzewoerter=".$ganzewoerter."">"; } echo $zahl; if (($index+1)!=$zahl) { echo "</a>"; } echo " "; } if ($treffer_anzahl>0) { echo "</center>\n"; } } ?>
</body> </html>