php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 11.01.2011, 09:55  
Neuer Benutzer
 
Registriert seit: 11.01.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
sx31fg befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] fopen und nichts passiert

Hallo, ich sitze jetzt schon Stunden daran und komme einfach nicht weiter. Ich möchte auf meiner Homepage, die auf dem Strato-Server liegt ein Bild anzeigen lassen. Das Bild liegt auf meinem lokalen Server. Allerdings ist der Dateiname variabel, so dass ich eine for-Schleife zum Suchen des richtigen Dateinamens programmiert habe. Nagut, ...versucht habe, zu programmieren. Es funktioniert nämlich nicht. Wenn ich die Seite öffnen will, dann passiert nichts. Die Seite wartet und wartet und wartet und bleibt weiß.

Die Dateien die erzeugt werden haben das Format:

chart2-YYYYMMDDhh-tt.png

wobei sich hh im 6 Stundentakt erneuert und tt im 3 Stundentakt.
z.b.
1. chart2-2011011018-21.png
2. chart2-2011011100-21.png
3. chart2-2011011112-21.png
4. chart3-2011011118-21.png

Ich möchte erreichen, dass immer die neueste Datei angezeigt wird. Sofern die Datei 4 nicht existiert, Datei 3 ausgewählt wird, falls diese auch nicht existiert Datei 2 und dann einen Tag zurück und dann Datei 1.

PHP-Code:
$datum=date("Ymd");
$indexch="chart2";
$run=21;

for(
$d=0$d=5$d++){
    
$timeech=18;
    for(
$r=0;$r=3;$r++){
        
$var=fopen('http://www.localxyz.de/'.$indexch.'-'.$datum.$timech.'-'.$run.'.png',"rb");
            if(!
$var) {
                
$timech=$timech-6;}
            else break;
        }
    
$datum=$datum-1;
}

echo 
'http://www.localxyz.de/'.$indexch.'-'.$datum.$timech.'-'.$run.'.png' 
Ich habe es zwischendurch auch schon mit fsockopen probiert, aber da passiert genau das Selbe, trotz gesetztem Timeout. Als ich die Schleife entfernt habe, kam wenigstens ein Hinweis. Als Fehler zurückgeliefert wurde "node name or service name not known"

Es würde mir schon ein wenig helfen, wenn ich weiß, ob das Skript stimmt. Dann kann ich den Fehler wenigstens woanders suchen. Ich habe die Befürchtung, dass es vielleicht an der Apache Konfiguration liegen könnte.

In der php.ini ist
allow_url_fopen = On

Vielen Dank, wenn mir jemand helfen kann
Sven

Geändert von sx31fg (11.01.2011 um 10:05 Uhr).
sx31fg ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.01.2011, 10:23  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

du machst das irgendwie seltsam ...

weil echo gibt Text aus, keine Dateien

normalerweise

öffnest du die Datei, und gibst sie dann einfach mit readfile() aus, nachdem du den header verbogen hast...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 11.01.2011, 10:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Das da nix passiert wird wohl daran liegen das du nach dem öffnen der Datei ( fopen ) nix mit der datei machst..

Zum Thema "dateien von einem Remote-Service abholen" würd ich persönlich statt fopen eher cURL ( favo ) oder readfile() benutzen, damit ich mir das rumschlagen mit fopen(), fget(), fclose() ganz einfach spare.

Als Lösungs-Ansatz für dein "Problemchen" das du geschildert hast:
Versteh bitte das du nicht einfach 5-10 Bilder innerhalb einer PHP-Datei einfach so laden und untereinander Klatschen kannst so das das, wohlmöglich noch formatiert / gestyled mit html code, toll aussieht im Browser.

Zur verständniss: Du musst um Bilder im Webbrowser anzuzeigen mindestens dem Browser aufeinanderfolgende <img>-Tags liefern. Damit er an deren Position dann die entsprechenden Bilder anzeigen tut. In deinem Fall wäre das etwas was bestimmte dimensionen annehmen sollte, du solltest also wissen welche "Spanne" an Dateien du darstellen möchtest, ich nenn diese Spanne jetzt mal Bild-1 bis Bild-5.

PHP-Code:
// BrowserBilder.php - Ein Beispiel :D
$darzustellendeBilder = array('Bild-1.png''Bild-2.png''Bild-3.png''Bild-4.png''Bild-5.png');
$host 'http://example.com/this/are/images/';
$BilderMimeType 'png/image';

if ( isset(
$_GET['showImage']) ) {
     
header('Content-Type: '.$BilderMimeType;)
     
// security techniken spar ich mir hier mal..
     
readfile($host.$_GET['showImage']);
}
else {
     echo 
'<html><head><title>Seite mit Bilder</title></head><body>';
     foreach( 
$darzustellendeBilder as $bild ) {
          echo 
'<img src="'.$_SERVER['PHP_SELF'].'?showImage='.$bild.'" alt="'.$bild."' />';
     } 
     echo '</body></html>';

Nach welcher logik dann die Bilder dort dargestellt würden würdest du im else-block festlegen. Das eigentliche Abholen der Bilder macht der isset(...) block darüber. Allerdings macht das _prinzipiell_ wenig sinn, jedes mal die bilder abzuholen und einfach nur darzustellen. Du solltest die bilder mitunter auf deinem Server speichern, da später so falls dateien nochmals dargestellt werden sollen, du einfach nur die lokal auf dem Server verfügbare Version darstellen musst ohne das dein Heim-PC-Webserver dafür angesprochen werden muss ( ladezeiten undso ).
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 11.01.2011, 11:34  
Neuer Benutzer
 
Registriert seit: 11.01.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
sx31fg befindet sich auf einem aufstrebenden Ast
Standard

Nein, kurz zum Verständnis. Der Code war natürlich nur ein Teil des gesamten Codes. Nämlich die Routine, die die Datei überhaupt erst finden soll. Ich kenne den Dateinamen noch nicht (also schon, aber php eben nicht), weil ständig neue Dateien hinzukommen. PHP soll einfach die neueste Datei öffnen, die bestimmten Kriterien entspricht, also schauen, ob der Dateiname, der in der for-Schleife ermittelt wurde, real vorhanden ist. Wenn ja, dann soll dieser Dateiname zwischen <img src=" und "/ > gesetzt werden und dann auf der Seite natürlich an der richtigen Stelle stehen.
sx31fg ist offline   Mit Zitat antworten
Alt 11.01.2011, 11:51  
Neuer Benutzer
 
Registriert seit: 11.01.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
sx31fg befindet sich auf einem aufstrebenden Ast
Standard

Ich habe den Code nochmal umgeschrieben und die Bilder auf den Server geladen, um es mal mit file_exists zu probieren. Aber auch das geht nicht:

Im Ordner wrf liegt das Bild mit dem Namen chart2-201101110-18.png

PHP-Code:
<td align="center" bgcolor="#595959" height="30"><img src="<?php

$datum
=date("Ymd");
$chart=$_GET[chart];
$typch=substr($chart,0,-2);
$timeech=18//substr($chart,3,6); zum Testen auf 18 gesetzt

if ($typech="tpk")
$indexch="chart2";
else 
$indexch="chart2"//nur zum Testen auf chart2 gesetzt

$filename='wrf/'.$indexch.'-'.$datum.$run.'-'.$timeech.'.png';

for(
$d=0$d=5$d++)
{
    
$run="18";
    for(
$r=0;$r=3;$r++)
    {
        if(
file_exists($filename)){
    
            echo 
$filename;
            break 
2;
            }
        
        else {
            
$run=$run-6;
            if(
$run=06)
            
$run=6;
            if(
$run=00)
            
$run=0;
            }
    }
        
$datum=$datum-1;
}

?>" />

Geändert von sx31fg (11.01.2011 um 12:10 Uhr).
sx31fg ist offline   Mit Zitat antworten
Alt 11.01.2011, 12:20  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Was sagt file_exists denn, wenn du den Pfad hart kodierst?

PHP-Code:
echo file_exists('wrf/chart2-201101110-18.png'); 
Was sagt realpath zu deinem realtiven Pfad?

PHP-Code:
echo realpath('wrf/chart2-201101110-18.png'); 
Stimmt der absolute Pfad?
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 11.01.2011, 12:33  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
for ( $initialisierung$fortsetzungwenn$operationwennfortgesetzt ) { /* code */ 
for

PHP-Code:
for ( $r 0$r 3$r++ ) { ... } 
Du: Starte $r mit 0, führe Code solange aus wie $r den wert 3 bekommt, nach jeder Sequenz verändere $r um +1. Fehler: $r erreicht immer wert 3, da diese Bedingung des zutreffens ( true ) immer eintritt. Das könnte auch eine simple while() { ... }
PHP-Code:
for ( $r 0$r <= 3$r++ ) { ... } 
Nun: Starte $r mit 0, führe Code solange aus wie $r den wert 3 erreicht hat oder er kleiner als 3 ist, nach jeder Sequenz verändere $r um +1.

PHP-Code:
for ( $d 0$d 5$d++ ) { ... } 
Du: Starte $d mit 0; führe Code solange aus wie $d den wert 5 bekommt, nach jeder Sequenz verändere $d um +1. Fehler: $d erreicht immer wert 5. Siehe oben.

Falls dir die For-Ausdrucksdefinition nicht zusagt, kannst du auch ( wie du es eh tuhst ) innerhalb der for Schleife brechen und sie solange laufen lassen wie du halt innerhalb der for-Schleife entscheidest zu beenden.
PHP-Code:
for ( $r 0; ; $r++ ) { /* ... */ if ( $r == ) break; /* ... */ 
Ich hoffe ich hab das verständlich genug augedrückt.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (11.01.2011 um 13:11 Uhr). Grund: day of rechtschreibfehler
tr0y ist gerade online   Mit Zitat antworten
Alt 11.01.2011, 13:00  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen
[php]
PHP-Code:
for ( $r 0$r 3$r++ ) { ... } 
PHP-Code:
for ( $d 0$d 5$d++ ) { ... } 
Ist sogar noch schlimmer

$r = 3 bzw. $d = 5 ist eine Zuweisung, keine Bedingung. Die Zuweisung klappt immer und ergibt true - was zu einer Endlosschleife führt.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 11.01.2011, 13:09  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

öh stimmt, merke, mit erst einem kaffe intus ist equal, double-equal. sorry
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 11.01.2011, 15:18  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen
öh stimmt, merke, mit erst einem kaffe intus ist equal, double-equal. sorry
Immerhin hast du es gesehen... ist mir nicht aufgefallen beim drüberschauen, das die Fehler im Schleifenkopf stecken, ich hätte auf falsche Pfadangaben getippt
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Backlinks prüfen, fopen, externe URL einlesen Phoenix@ PHP Tipps 2010 5 14.11.2010 17:44
[Erledigt] fopen &amp; fgetcsv : immer aktuellste Datei? creeki PHP Tipps 2010 9 08.08.2010 12:58
fopen mit remote Dateien? Irving PHP Tipps 2009 4 07.11.2009 13:40
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
[Erledigt] wenn nichts in der DB dann fehler o.ä. Creeping PHP Tipps 2009 24 13.06.2009 23:50
[Erledigt] fopen und HTTP Error 100 Continue dresel PHP Tipps 2009 7 15.04.2009 00:52
fopen() - Hostabhängig? pcschröda PHP-Fortgeschrittene 5 15.11.2007 20:25
PHP-File generieren, grundlegende Frage! fopen richtig? PHP Tipps 2006 26 24.02.2006 14:03
fopen und zeilenumbruch notyyy PHP Tipps 2006 1 24.01.2006 16:33
fopen geht nicht, ich glaube ich bin dumm. PHP Tipps 2005-2 10 20.10.2005 23:59
FOPEN() Probleme PHP Tipps 2005 7 18.05.2005 18:07
Es wird nichts erzeugt! PHP Tipps 2004-2 26 08.11.2004 15:10
Problem -> bekomme nichts angezeigt. PHP Tipps 2004 2 22.10.2004 23:26
fopen() Ist das möglich? PHP Tipps 2004 3 14.09.2004 11:31
nichts senden wenn nichts eingetragen ist PHP Tipps 2004 2 14.08.2004 16:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bilder mit fopen, fopen es passiert nichts php, var = fopen, fopen php passiert nichts, fopen strato probleme, fopen() strato, php fopen nichts passiert, strato externe datei php fopen, php bild fopen, php fopen bringt nichts, welches ist die richtige konfiguration für fopen, fopen php, php fopen in schleife ladet nur ein, fopen pfadangabe

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum