95718
Goto Top

Suchbegriff in HTML eingeben- txt Datei durchsuchen und dann in html zurückgeben

Hallo Leute ich versuche mich seit mehreren Tagen schon an folgendem Problem:

Ich habe eine Internetseite und möchte dort eine Suchfunktion einbinden.
Es soll letztendlich so aussehen:

Jemand gibt auf der html Seite einen Suchbegriff ein und dieses Kürzel/Begriff wird in einer txt.Datei gesucht. Dort wird dann die komplette Zeile in dem dieser vorhanden ist auf die Html Seite zurückgegeben.

Habe das letzte Woche schon per Javascript und ohne externe txt.Datei versucht bin jedoch nicht zu dem Ergebnis gekommen welches ich gerne gewollt hätte

Hoffe ihr könnt mir helfen....

Danke schonmal im Voraus

Content-Key: 155941

Url: https://administrator.de/contentid/155941

Printed on: April 18, 2024 at 22:04 o'clock

Member: mohamedalhakim
mohamedalhakim Nov 29, 2010 at 11:38:59 (UTC)
Goto Top
Hallo.
Sowas geht eigentlich mit PHP ganz einfach, da du dort auch die Formatierung anpassen kannst etc...
vorgehensweise:
Feld via Get oder Post an Variable ausgeben.
via fopen die Datei öffnen,
<?php
$handle = fopen("zaehler.txt","r");
$n = fgets($handle,1000);
fclose($handle);
echo $n;
?>
ist ein Methode.
bei der Ausgabe kannst du dir dann viel überlegen,
kannst z.b. die Ausgabe mit HTML "verschönern"
beispiel: echo "<div class='formatierung' ".$Ausgabe ."</div><br>";

so hast du eine einfache ausgabe.
allerdings kannst du da auch noch sehr viel bei der Ausgabe ausbasteln, wie das geht kannst du bei php.net lesen...
hoffe konnte dir weiterhelfen.
Mitglied: 95718
95718 Nov 29, 2010 at 13:23:07 (UTC)
Goto Top
Und wo ist dort die "Zeile" mit der ich ihm auf der html-Seite den Suchbegriff gebe----quasi so ein normales Suchfeld.
Irgendwie muss doch eine Eingabe übergeben werden.

Sorry bin in Sachen php echt n Anfänger.....
Member: Guenni
Guenni Dec 02, 2010 at 16:57:19 (UTC)
Goto Top
Hi ChrischiB-OVP,

folgendes Skript wäre eine Möglichkeit, allerdings habe ich jetzt einfach mal vorausgesetzt,

dass ein Begriff in mehreren Zeilen vorkommen kann. Die Funktion in dem Skript gibt deshalb ein

Array zurück, in dem eine oder mehr Zeilen gespeichert sind. Falls das nicht der Fall sein sollte, dass

ein Begriff in mehreren Zeilen vorkommen kann, wird eh' nur eine Zeile zurückgegeben.

Zum Prüfen, ob ein Begriff in einer Zeile vorkommt, habe ich die Funktion strpos verwendet, weil die

Funktion auch Begriffe findet, von denen nur ein Teil eingegeben wurde, z.B. Suche nach "win" findet

"windows" "winter" "windeln" etc..

Weitere Funktionen findest du hier ==> http://de.php.net/manual/de/book.strings.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Worte in Textdateien suchen</title>
</head>
<body>
<!-- 
Ein Formular zur Eingabe
/-->
<form action="" method="post">  
<input type="text" name="suche">  
<input type="submit" name="cmd" value="Suchen">  
</form>
<?php
function findwort($wort=""){  
/*
* Wenn wort leer ist, Funktion beenden.
*/
 if(strlen($wort)==0){
  $gef_zeilen="Geben sie einen Suchbegriff ein";  
  return $gef_zeilen;
 }
/*
* Datei zeilenweise in ein Array einlesen.
* 80 ist die Zeilenlänge, erhöhen falls nötig.
*/
$i=0;
 $f=fopen("firewall.txt","r");  
 while($line=fgets($f,80)){
  $text_lines[$i]=$line;
  $i++;
 }
 fclose($f);
/*
* Zeilenweise das Array mit der Funktion strpos durchsuchen.
* strpos arbeitet case-sensitiv, deshalb werden mit strtolower
* alle Groß- in Kleinbuchstaben umgewandelt.
*/
 $i=0;
 while($i<count($text_lines)){
  $pos = strpos(strtolower($text_lines[$i]),strtolower($wort));
	if($pos === false){
	 /*
	 * Wenn $pos false ist, tue nichts!!
	 */
	}else{
				$gef_zeilen[$i]="Der Suchbegriff \"$wort\" wurde in Zeile ".($i+1)." an Position $pos gefunden ==> ".htmlspecialchars($text_lines[$i]);  
				}
  $i++;
 }
 /*
 * count zählt die Elemente im Array.
 */
 if(count($gef_zeilen)>0){
  return $gef_zeilen;
 }else{
 			 $gef_zeilen="Der Suchbegriff \"$wort\" wurde nicht gefunden";  
			 return $gef_zeilen;
			 }
}
/*
* Ist das Formular gesendet, gibt die Funktion ein Array zurück, deshalb mit foreach ausgeben.
*/
if(isset($_POST['suche'])){  
 $erg=findwort($_POST['suche']);  
 foreach($erg as $zeile){
  echo "<p>$zeile</p>";  
 }
}
?>
</body>
</html>


Gruß
Günni