Was ist hier falsch?
Stephan
- php
Hallo,
ich habe ein Suchmaschinenscript, nur so sieht es aus:
http://www.bzhgroup.com/search.php (einfach mal "ads" eingeben)
und jeder Eintrag sollte wie die Nummer 3 aussehen. Was habe ich falsch gemacht?
Danke schon jetzt
Stephan
hi!
und jeder Eintrag sollte wie die Nummer 3 aussehen. Was habe ich falsch gemacht?
du fragst nach etwas, das serverseitig mit deinen scripten erzeugt wird, lässt uns aber nur das ergebnis sehen.
ein bischen mehr musst du wohl schon verraten. ;-)
grüsse, raik
OK, hier der Quellcode:
(ich lasse mal das rundrum weg, sonst ist es zu viel):
########### PHP-Suchmaschine ########### ########### powered by Viktor Widiker & http://www.widiker.de, Berlin 2002 ###########
########### Hier folgen die Einstellungen ###########
$max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
$endungen=array("php3"); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="germany/suche/"; # 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" cellpadding="5" cellspacing="0" border="0" align="left"> <tr> <td align="right" bgcolor="#C0C0C0"> <? 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 type="submit" value="Suchen" style="border:1px solid #000000; background-color: #EEEEEE"> </td> <td bgcolor="#C0C0C0"> <b>Groß- und Kleinbuchstaben</b><br> <input type="radio" name="grossschreibung" value="1" <? if ($grossschreibung==1) echo "checked"; ?>>unterscheiden<br> <input type="radio" name="grossschreibung" value="0" <? if ($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden </td> <td bgcolor="#C0C0C0"> <b>Art der Suche</b><br> <input type="radio" name="ganzewoerter" value="1" <? if ($ganzewoerter==1) echo "checked"; ?>>nur ganze Wörter<br> <input type="radio" name="ganzewoerter" value="0" <? if ($ganzewoerter==0) echo "checked"; ?>>Wortteile </td> </tr> </TABLE></form></td></tr><tr><td width="16%" valign="top"> <br><img src="/main/bzhgroup_suchen_de.jpg"><br><br>
<form action="/search.php" method="post"> <input type="text" name="suchtext" value=""><br> <input type="submit" value="Suchen" style="border:1px solid #000000; background-color: #EEEEEE"> </form> <a class=style1 href="/search.php">erweiterete Suche</a> <br><br><br><br><br> </td><td width="60%" valign="top">
<? 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" cellpadding="5" cellspacing="0" border="0" align="left"><tr><td><table width="500" border="0" align="left"><tr><td>\n"; echo "<span style="font-size:13pt"><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><br><br>Zu Ihrer Suche gibt es keine Treffer<br><br></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>\n";
for ($k=0;$k<$treffer_pro_seite;$k++) { $i=$index*$treffer_pro_seite+$k; $platz=$i+1; if ($platz<=$ende) { echo "<tr><td><table width="580" border="1" cellpadding="0" cellspacing="0" align="left">\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].""><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="/main/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 "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 "\n"; } } ########### Ende des Suchmaschinenskripts ########### ?>
</td><td width="24%"></td></tr></TABLE>
</body> </html>
Danke schon jetzt
Stephan
OK, hier der Quellcode:
uff, is ja ne menge..
meine mittagspause ist grad zuende.
bist du mir böse, wenn ichs mir erst heut abend anschau? (falls nicht schon jemand anderes zeit hat)
freundl. grüsse, raik
Ne, natürlich bin ich nicht böse, Danke aber schon jetzt...
Stephan
Ne, natürlich bin ich nicht böse, Danke aber schon jetzt...
so, bin dabei.
komm in den selfhtml-chat, wenn du magst.
grüsse, raik
hallo!
so, bin dabei.
so, erste frage. hast du am source von dem chat irgendwas verändert ausser den variablen?
dann lad ihn dir nochmal runter.
sonst musst du wohl dem programierer mal ne msg schicken mit nem bugreport.
da ist html und php so bunt durcheinander gewürfelt, das man erst mal aufräumen müsste, um nen durchblick zu bekommen.
sagen kann ich, das in der resultierenden html-seite in einigen tabellen tags fehlen (z.b. <tr><td>) und an anderen stellen tags doppelt sind (z.b. </td></td>),
deshalb die darstellungsprobleme.
es wäre aber ne aufgabe für ein ganzes wochenende, den code zu debuggen und sauber neu zu schreiben.
wenn da nicht php und html sauber voneinander getrennt werden, kann man auch kaum ein anderes design machen. (z.b. die anordnung der ausgegebenen infos ändern)
wenn ich am wochenende zeit haben sollte, setz ich mich da mal dran, aber ich kann nichts versprechen.
tut mir leid, das ich dir im moment nicht weiterhelfen kann.
freundl. grüsse, raik