php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.04.2006, 13:21  
Benutzer
 
Registriert seit: 22.09.2005
Beiträge: 44
ZeHa
Standard krankes Problem, schwer zu beschreiben

Hallo,

sorry für die Titelzeile aber man kann das Problem leider nicht in einen Satz fassen.

Ich hatte ja neulich schonmal ein unlösbares Problem, aber jetzt auch noch das hier:

Eine Funktion von mir wird EINMAL aufgerufen, sie öffnet ein XML-File und hängt ganz unten noch was an. Soweit sogut, das Problem ist nur, daß der gewünschte Anhang sich hinterher ZWEIMAL in der Datei befindet, und das, obwohl in meinem Code keine Schleife ist, die das irgendwie bewirken könnte.

Hier erstmal der Code:

PHP-Code:
function ExpandTocFile($names$filenames)
{
      
$br chr(13).chr(10);
    
$tab chr(9);
    
    global 
$inPath;
    global 
$outPath;

    
$lines file($outPath."toc.xml");
    
    for(
$i=0$i count($lines); $i++)
    {
        if (
trim($lines[$i]) == "</toc>")
        {
            break;
        }
    }
    
    
$OutFile fopen($outPath."toc.xml""w");
    
    for(
$k=0$k $i$k++)
    {
        
fwrite($OutFile$lines[$k]);
    }
    
    
/**/echo "HALLO"fwrite($OutFile"HALLO$br");
    
fwrite($OutFile$tab.'<topic label="Einzelkomponenten" href="welcome.htm">'.$br);
    
    
$nAnzahl count($names);
    
    for(
$i=0$i $nAnzahl$i++)
    {
        if (
trim($names[$i]) != "")
        {
            
fwrite($OutFile$tab.$tab.'<topic label="'.$names[$i].'" href="'.$filenames[$i].'" />'.$br);
            
/**/echo $tab.$tab.'topic label="'.$names[$i].'" href="'.$filenames[$i].'" /
'
.$br;
        }
    }
    
    
/**/echo "CIAO"fwrite($OutFile"CIAO$br");    
    
fwrite($OutFile$tab.'</topic>'.$br.'</toc>'.$br);

    
fclose($OutFile);


Die erste Hälfte der Funktion wird sicherlich irrelevant sein, nehm ich mal an. Ich habe 3 Zeilen mit /**/ markiert, diese weisen eine Besonderheit auf. Alles innerhalb dieses Bereichs wird nämlich doppelt in die Datei geschrieben. Jedoch bekomme ich durch das "echo" die entsprechende Ausgabe nur EINMAL. Wo ist da die Logik, frag ich mich.

Es befindet sich zwar eine Schleife in dem Bereich und man könnte ja vermuten, daß in dem Array $names[] sich alles bereits doppelt befindet. Der Witz ist aber, daß auch die Zeile oberhalb (<topic label=Einzelkomponenten...> etc) sowie auch die unterhalb doppelt vorkommen. NOCH WITZIGER ist allerdings, daß letztere nur zur Hälfte (!) doppelt vorhanden ist, nämlich befindet sich korrekterweise nach dem ersten Block, der in die Datei geschrieben wird, das abschließende "</topic>", dann kommt der selbe Block nochmal, wieder mit Abschluß und danach eben noch "</toc>". Das bedeutet also, das XML-File ist hinterher schön wohlgeformt - und das widerspricht der Logik erneut...

Auch das HALLO und das CIAO befinden sich, wie (nicht) erwartet, in der Datei an den entsprechenden Stellen, also ebenfalls doppelt. In der Ausgabe durch "echo" jedoch - wie eigentlich gewünscht - nur ein einziges mal.

Vielleicht kann es ja einer von euch mal testen, einfach eine toc.xml anlegen, die irgendwie aufgebaut ist (wird ja nicht überprüft), wichtig ist nur daß sich ein "</toc>" am Ende befindet. Und an die Funktion sollte man zwei Arrays übergeben mit ein paar Elementen.

Zudem kann ich mir mal wieder gut vorstellen, daß ich hier der einzige bin, bei dem das fehlschlägt. Aber ich hab echt hier nicht vor, euch zu verarschen oder so sondern ich habe schon das dringende Bedürfnis, dieses Skript zum Laufen zu bringen.

Ich hoffe, ihr könnt mir weiterhelfen!

PS: Damit keiner auf die Idee kommt - die Funktion wird tatsächlich nur ein einziges Mal aufgerufen. Aber selbst WENN sie zweimal aufgerufen würde, dann würde ich ja auch zweimal die echo-Ausgaben bekommen, was ja nicht der Fall ist...
ZeHa ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.04.2006, 13:24  
Benutzer
 
Registriert seit: 22.09.2005
Beiträge: 44
ZeHa
Standard

Ach ja, warum dieser Thread so breit ist, leuchtet mir auch nicht ein... hoffe mal es stört euch nicht allzu sehr, irgendwie geht heut gar nix
ZeHa ist offline  
Alt 21.04.2006, 13:26  
Benutzer
 
Registriert seit: 22.09.2005
Beiträge: 44
ZeHa
Standard

Noch was, wenn ich die Funktion absichtlich doppelt aufrufe (also direkt hintereinander zweimal den Aufruf), dann hab ich den XML-Block 4x in der Datei drinstehen.
ZeHa ist offline  
Alt 21.04.2006, 13:27  
Gast
 
Beiträge: n/a
Standard

Was sagt Dir die access.log Deines Webservers? Finden vielleicht mehrere Zugriffe statt?
 
Alt 21.04.2006, 13:32  
Benutzer
 
Registriert seit: 22.09.2005
Beiträge: 44
ZeHa
Standard

Es läuft bei mir lokal auf dem Rechner, normalerweise dürfte es immer nur einmal pro Aufruf laufen.

ABER die Idee ist natürlich SEHR GUT, das würde nämlich auch mein anderes Problem, das ich neulich hatte erklären. Ich werd mal schauen, ob das Skript vielleicht doch irgendwie doppelt ausgeführt wird (ich starte es aus PHP Designer 2006 heraus, vielleicht gibt's da 'ne Einstellung daß er es gleich mehrmals starten soll?! aus welchen Gründen auch immer)
ZeHa ist offline  
Alt 21.04.2006, 13:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

3 Postings am Stück, ganz großes Tennis!
Und was ist an dem Problem schwer zu beschreiben? Es wird eben doppelt Text an eine Datei gehängt...
Zergling-new ist offline  
Alt 21.04.2006, 13:35  
Benutzer
 
Registriert seit: 22.09.2005
Beiträge: 44
ZeHa
Standard

Du hattest Recht - wenn ich die .php-Datei direkt auf die php-cgi.exe ziehe, funktioniert alles so, wie es sein sollte.

Die Frage ist jetzt nur, warum PHP Designer das ganze zweimal laufen läßt...

@ Zergling: Vergib mir...
ZeHa ist offline  
 


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
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
beginn mit oop und klassen. aller anfang ist schwer... :( Promaetheus PHP Tipps 2006 1 22.06.2006 18:10
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Session.... schwer schwer schwer.... PHP Tipps 2006 7 01.01.2006 22:24
DELETE (schwer zu beschreiben) patr1k Datenbanken 2 05.11.2005 21:46
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit links in Schleife web2 PHP Tipps 2004-2 2 23.11.2004 12:58
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Cookie / localhost / Problem gelöst PHP-Fortgeschrittene 11 02.11.2004 22:41
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php fwrite hängt hinterher, php fwrite tabulator, mehrfach php-cgi.exe, <a href=\<%= filenames[i] %>\><%= filenames[i] %></a>, phpdesigner localhost, fwrite wird doppelt ausgeführt, php fputs tabulator

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:51 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.