Newsmeldungen automatisch verlinken

AHelfer

Mitglied
Guten Tag.
Wie immer entschuldigt wenn ich zu wenig genau gesucht habe und es schon so ein Thread zu diesem Thema gibt.

Ich habe bisher immer ein CGI-Script verwendet welches ich vor langwer Zeit im Internet runtergeladen hab um diese Aufgabe zu übernehmen. Nun will ich, da ich gerade ein paar Pobleme habe dieses in meine PHP seite einzubinden, gleich selber ein eigenes Probieren.

Nun meine Frage ist das mit php möglich? (ohne Datenbank)

also ich will ein Scirpt welches:

  1. Ein bestimmten Ordner nach bestimmten Dateien php, html, evtl pdf durchforstet (fals ich auch andere Dateien habe bilder zu den newsmeldungen soll es dieja nicht verlinken)
  2. Den Titel dieser Datei Ausliest
  3. Dieser Titel ausgibt und mit dem Dateinamen verlinkt und zwar geordnet nach Dateiname

Zudem sollte man angeben können wieviele Links erstellt werden. Beispielsweise 5.

Auf einer anderen Seite will ich dann ein "Newsmeldungen-Archiv" machen bei der ich die Zahl erhöhe z.b. auf 10 oder 15 und es danach eine blätterfunktion geben muss falls es mehr als diese 15 Dateien gibt (was eh der fall sein wird)

ich wär froh für hinweise welche php befehle ich da am besten verwende oder gleich ein kleines Beispielscript angibt..

...und fals das nicht möglich ist wie ich korrekt ein cgi Script in ein php einbinde.

Vielen Dank im Voraus
 
Hi!

Mit folgendem Script kannst du deinen Ordner auslesen:
PHP:
<?php

$dir="folder";
$handle = opendir($dir);
while($file = readdir($handle))
{
    if ($file != "." && $file != "..") { // weitere Einschränkungen möglich z.B. keine Bilder oder muss pdf, html sein etc.
      $filesName[] = $file;
    }
}
closedir($handle);

sort($filesName); // Sortierung

for($i=0; $i<count($filesName); $i++) {
 echo '<a href=".$dir.'/'.$file.'>'.$file.'</a><br>';
}
?>

In den Tutorials hier auf tutorials.de gibt es ein Beispiel für eine Blätterfunktion.

Viele Grüße,
Jacka
 
Danke für die schnelle antwort.

Jedoch scheint es, dass ich unfähig bin.
Denn ich bringe dein Script nicht zum laufen.

PHP:
<?php

$dir="news";
$handle = opendir($dir);
while($file = readdir($handle))
{
    if ($file != "." && $file != "..") { // weitere Einschränkungen möglich z.B. keine Bilder oder muss pdf, html sein etc.
      $filesName[] = $file;
    }
}
echo '1-'.$dir.'<br>';
echo '2-'.$handle.'<br>';
echo '3-'.$file.'<br>';
echo '4-'.$filesName[0].'<br>';

closedir($handle);

sort($filesName); // Sortierung

for($i=0; $i<count($filesName); $i++) {
 echo '<a href="'.$dir.'/'.$file.'>'.$file.'</a><br> '."\r\n";}
 
?>

also so sieht es im moment aus..
ich habe nur kurz ein paar echo eingefügt damit ich sehe wo die probleme sind.

jedoch ist die variable $file bei mir leer

ausgegeben wird im moment:

1-news
2-Resource id #1
3-
4-200301_172.htm

und ein haufen:

<a href="news/></a><br>
<a href="news/></a><br>
<a href="news/></a><br>
<a href="news/></a><br>
<a href="news/></a><br>

Das Problem ist
1. dass eben $file leer is. dadruch die links ned komplett sind.
2. dass 200301_172.htm schon eine newsmeldung ist jedoch das 2te File im Ordner (oder ist es dort zu diesem zeitpunkt noch unsortiert?)


nun seh ich wohl einfach kein Fehler da mein Wisse noch zu gering ist.
hoffe auf Tipps und Korrekturvorschläge..

Danke und entschuldigt die Umstände
 
Versuch es mit:
PHP:
for($i=0; $i<count($filesName); $i++) {
 echo '<a href="'.$dir.'/'.$filesName[$i].'>'.$filesName[$i].'</a><br> '."\r\n";
}
 
Da hat sich noch ein kleiner Fehler in das Script eingeschlichen so müsste es richtig sein:

PHP:
for($i=0; $i<count($filesName); $i++) {
 echo '<a href="'.$dir.'/'.$filesName[$i].'">'.$filesName[$i].'</a><br> \r\n';
}
 
DANKE für die schnelle Antwort jetzt klappt das auch..

jetzt wären aber noch die Punkte:

Den Titel dieser Datei Ausliest
Dieser Titel ausgibt und mit dem Dateinamen verlinkt und zwar geordnet nach Dateiname

Weil im moment wird ja einfach den Filenamen als Link verwendet.. (aber bin schon mal froh das das läuft)

jetzt würde ich aber gern den title-Tag als Link verwenden weil mit "200301_171.htm" können die Besucher wohl ned viel anfangen.

Seh ich das richtig, dass ich da jede Datei öffnen muss dann nach dem Title tag suchen muss und den auslesen muss? und irgendwie noch das <title> </title> rauslöschen muss?
 
So habe nun mich etwas umgeschaut und eine Lösung hingekriegt.

Vielleicht habt ihr ja noch Verbesserungen oder Kürzungen wenn ich unnötige Sachen eingefügt habe oder es bessere methoden gibt.

PHP:
for($i=0; $i<count($filesName); $i++) {
  $filetoopen = 'news/'.$filesName[$i];
  $filetext = implode("",file($filetoopen));
  preg_match('|<title>(.*)</title>|Ui', $filetext, $title);
  
 
  
 echo '<a href="'.$dir.'/'.$filesName[$i].'">'.$title[1].'</a><br>'."\r\n";
}

naja.. dann werde ich mich irgendwann auch noch an die Blätterfunktion machen.
 
am besten, um etwas ladezeit zu sparen, das hier:
count($filesName)

durch ne variable erstzen also z.b.:
$anzahl = count($filesName);

und dann in der for-schleife nur $anzahl benutzen ;)
 
Zurück