php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 16-10-2008, 14:14
nightwalker
 Newbie
Links : Onlinestatus : nightwalker ist offline
Registriert seit: Oct 2008
Beiträge: 3
nightwalker ist zur Zeit noch ein unbeschriebenes Blatt
Question letzten zeilenumbruch aus textdatei entfernen

Hi @all!

Ich habe folgendes Problem:

Ich lese einen Ordner mit Bildern aus.
Danach nummeriere ich die die Bilder neu und schreibe diese Information in ein .txt File

$picturelist = "$i#$picname#$width$#height#$height\n";

Dieses .txt File wird einmal angelegt, wenn das Album erstellt, oder verändert wird.

Auf der Album Seite lese ich jetzt dieses File aus und gebe die Bilder mit den enstsprechenden Informationen aus.

Funktioniert alles super.

Aber mein Problem ist, wenn das .txt File geschrieben wird, entsteht am Ende des Files eine leere Zeile(Zeilenumbruch), die natürlich auch ausgelesen wird und dadurch ein "Bild" angezeigt wird (rotes X), das es nicht gibt.

Gibt es eine Möglichkeit das .txt File so zu schreiben, dass diese leere Zeile nicht entsteht?
Gibt es eine Möglichkeit diese leere Zeile zu löschen?

Hab es schon mit array_pop() versucht, aber da löscht er mir die letzte geschriebene Zeile und der Zeilenumbruch ist wieder da :-(
Hab auch schon versucht die Zeilenumbrüche zu entfernen aber dann funktioniert die "explode"/"trim" Funktion nicht mehr.

Vielleicht hat einer ja eine Idee.
Die Informationen in eine Datenbank zu schreiben ist leider nicht möglich.

Nur den Ordner mit den Bilder ausgeben geht auch nicht, da ich für weitere Seiten die restlichen Informationen für die Bilder aus den .txt File als Varibalen auslesen und übergeben muss. Es scheitert nur an diesen leeren Zeilenumbruch :-(

Vielen Dank schon im Vorraus
MfG
Mit Zitat antworten
  #2 (permalink)  
Alt 16-10-2008, 14:18
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie genau schreibst du den text in die datei? ein bischen code wäre hilfreich
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #3 (permalink)  
Alt 16-10-2008, 14:21
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

explode("\n", trim(file_get_contents(...)))
Mit Zitat antworten
  #4 (permalink)  
Alt 16-10-2008, 16:04
nightwalker
 Newbie
Links : Onlinestatus : nightwalker ist offline
Registriert seit: Oct 2008
Beiträge: 3
nightwalker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

.txt File schreiben:

PHP-Code:
$open fopen("picturelist.txt""w");
fclose($open);

$i=0;
$filepath="album/"
$directory=opendir ($filepath); 
while (
$file=readdir($directory)) 

    if (
filetype($filepath.$file)!="dir"
    { 

        
$i++; 
        
        
        
//get pic size
        
$size getimagesize("$filepath$file");
        
$width $size[0];
        
$height $size[1];
        
 
$picturelist "$i#$file#$width#$height\n";
 
$writein "picturelist.txt";
 
$handle fopen($writein "a");
 
fwrite($handle$picturelist);
 
fclose($handle);

        
    } 

closedir($directory); 
.txt file auslesen:

PHP-Code:
$openpicturelist fopen ("picturelist.txt""r");

while (!
feof($openpicturelist)) 

  
$buffer fgets($openpicturelist1000000);
  

  
$picturelist explode("#",$buffer); 

  
$picturenumber trim($picturelist[0]); 
  
$picturename trim($picturelist[1]);
  
$picturewidth trim($picturelist[2]);
  
$pictureheight trim($picturelist[3]);
  
 echo 
"<a href='alben/$picturename'><img src='alben/tn/$picturename' alt='$picturenumber' border='0'>";

        } 
fclose ($openpicturelist); 
Das ist der Code um den es geht.

@onemorenerd
wie gebau kann ich die von dir genannte funktion einbauen?
Mit Zitat antworten
  #5 (permalink)  
Alt 16-10-2008, 20:08
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

lass mich mal kurz raten. error_reporting steht bei dir nicht auf E_ALL?
beim auslesen solltest du prüfen, ob $buffer oder $picturelist überhaupt daten enthält, bevor du den link ausgibst
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #6 (permalink)  
Alt 16-10-2008, 20:33
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Aua aua. Du iterierst in einer While-Schleife über ein Verzeichnis und schreibst die Dateinamen in ein Textfile. Warum öffnest und schließt du die Datei immer wieder? Mach sie einmal auf, schreib alles rein und mach sie dann wieder zu. Das geht viel schneller ... und ist weniger peinlich.
Also einmal fopen(), in der Schleife immer nur fwrite() und am Ende des Scripts fclose(). Das Problem mit dem Zeilenumbruch bleibt aber bestehen. Deshalb rate ich eher zu dieser Lösung:
PHP-Code:
$pics = array();
$path 'album/'
$dir opendir($path); 
while (
$file readdir($dir)) {
    if (
is_file($path.$file) && $size getimagesize($path.$file)) {
        
$pics[] = $file.'#'$size[0].'#'.$size[1];
    }
}
closedir($dir);
file_put_contents('picturelist.txt'implode("\n"$pics)); 
Das # als Trennzeichen kann übrigens gefährlich sein. Was passiert, wenn ein Bild mal ein # im Dateinamen trägt?

Das Lesen kannst du auch vereinfachen, etwa so:
PHP-Code:
foreach (file('picturelist.txt') as $i => $line) {
    list(
$name$width$height) = explode('#'$line); 
    echo 
'<a href="alben/'.$name.'"><img src="alben/tn/'.$name.' alt="'.$i.'" /></a>';

Wie du siehst, steht kein Zähler mehr in der Datei. Gezählt wird beim Lesen. Width und Height habe ich mal gelassen, obwohl ich nicht sehe, wo du es brauchst.

Zum Schluß noch die Sinnfrage: Warum machst du das alles? Warum erzeugst du diese Datei? Brauchst du sie noch für einen anderen Zweck? Wenn nicht, dann spar dir das Gehampel und machs direkt so:
PHP-Code:
foreach (glob('album/{*.gif,*.jpg,*.png}'GLOB_BRACE) as $i => $pic) {
    echo 
'<a href="alben/'.$pic.'"><img src="alben/tn/'.$pic.' alt="'.$i.'" /></a>';

Ich habe den Code übrigens nicht getestet. Mach das mal selbst.
Mit Zitat antworten
  #7 (permalink)  
Alt 16-10-2008, 22:00
nightwalker
 Newbie
Links : Onlinestatus : nightwalker ist offline
Registriert seit: Oct 2008
Beiträge: 3
nightwalker ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy

Hi!

Vielen Dank für die schnellen Antworten. Ich weiß das das schreiben in die Datei etwas umständlich erfolgt.

Naja ich brauche diese Datei, da auf diese Datei und Daten noch andere Scripts und Seiten zugreifen. Ist aber hierfür egal. Ich habe nicht den ganzen Code gepostet sondern nur den relevanten Teil.

Gibt es wirklich keine einfache Lösung diesen leeren Zeilenumbruch am Ende aus dem .txt File zu löschen/entfernen/ausblenden.

Wenn ich es händisch mache funktioniert ja alles so wie ich es brauchen würde.
Mit Zitat antworten
  #8 (permalink)  
Alt 17-10-2008, 13:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Original geschrieben von nightwalker
Naja ich brauche diese Datei, da auf diese Datei und Daten noch andere Scripts und Seiten zugreifen. Ist aber hierfür egal. Ich habe nicht den ganzen Code gepostet sondern nur den relevanten Teil.
Das bißchen Code bietet schon genug Hinweise um die Aussage zu treffen, dass dein Konzept nicht gut ist. Wie sicherst du ab, dass nicht zwei Prozesse gleichzeitig diese Datei erzeugen? Was machen die anderen Scripte mit Width/Height und dem Zähler? Warum können die anderen Scripte nicht direkt das Verzeichnis auslesen?
Zitat:
Gibt es wirklich keine einfache Lösung diesen leeren Zeilenumbruch am Ende aus dem .txt File zu löschen/entfernen/ausblenden.
Prinzipiell gibt es drei Ansätze:
1. Den störenden Zeilenumbruch gar nicht in die Datei schreiben. Dann muß er auch nicht entfernt werden.
2. Den störenden Zeilenumbruch erstmal schreiben und anschließend wieder entfernen.
3. Den störenden Zeilenumbruch schreiben, in der Datei lassen und beim Lesen entfernen. Dafür habe ich weiter oben schon einen Vorschlag gemacht.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:15 Uhr.