zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Kurios: echo "a, b" ergibt Ausgabe "b, a"!

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 02.04.2008, 01:49
Benutzerbild von domsson
Rookie @ HTML/CSS/PHP/SQL
neuer user
Thread-Ersteller
 
Registriert seit: 11.02.2008
Ort: Berlin
Beiträge: 88
domsson wird schon bald berühmt werden
Frage Kurios: echo "a, b" ergibt Ausgabe "b, a"!

Hallo an alle schlauen Koepfe,

ich stehe heute vor erneut vor einem Problem, welches sich mir einfach nich erschliesst.

Folgende Situation:

Ich habe ein Markup, in welches ich per PHP gewisse Inhalte einfuege:

Code:
<div id="naviSideBox">
	<?php buildNaviSideList($c); ?>
	<div class="clear"><!---->
	</div> <!-- clear Ende -->
</div> <!-- naviSideBox Ende -->
die Funktion buildNaviSideList sieht, stark vereinfacht, so aus:

PHP-Code:
function buildNaviSideList($c) {
    if(
navigation_vorhanden) {
      
befehleZumErzeugenDerNavigation;
    } else {
      echo 
"<div id=\"noSideNavi\">\n\t\t".insertSpecifiedText('noSideNaviText')."\n\t</div>\n";
    }

und die Funktion insertSpecifiedText holt aus einer SQL-Tabelle einen Text ("no choice") und gibt diesen per echo aus.

Das ganze scheint zu funktionieren, dachte ich, denn wenn ich die Seite angucke, steht der gewuenschte Text dort, den der else-Teil der buildNaviSideList ausspucken sollte. Doch gucke ich den Quelltext an, sehe ich dort das hier:

Code:
<div id="naviSideBox">
	no choice<div id="noSideNavi">
					
	</div>
	<div class="clear"><!---->
	</div> <!-- clear Ende -->
</div> <!-- naviSideBox Ende -->
Der Text ist zwar da, doch er steht an anderer Stelle, als er stehen muesste.

Meine Frage: Wie um alles in der Welt ist das moeglich?
Ich bin den Code nun schon tausend mal durch und kann es mir nicht erklaeren...
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 02.04.2008, 11:30
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.735
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Wenn die „insertSpecifiedText()“ das „no choice“ ausgibt, ist das keine Kuriosität sondern vollkommen korrekt. Gib das „no choice“ mal nur als Rückgabewert zurück.
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 02.04.2008, 11:56
Benutzerbild von domsson
Rookie @ HTML/CSS/PHP/SQL
neuer user
Thread-Ersteller
 
Registriert seit: 11.02.2008
Ort: Berlin
Beiträge: 88
domsson wird schon bald berühmt werden
Standard

Fantastisch Gumbo, das war schon die Loesung. Und ich aergere mich mal wieder, dass ich nicht selbst in der Lage war, den Fehler zu finden. ;}

Vielen Dank an deine schnelle Hilfe.

Aber etwas noch, um die Sache fuer mich komplett zu klaeren:
Warum der Text, in der falschen Variante, _vor_ den 2 echo-Teilen stand, die ihn eigentlich umschlossen, verstehe ich dennoch nicht...

Code:
echo "<div>".insertSpecifiedText('TEXT')."</div>";
duerfte doch, relativ unabhaengig davon, was mir die Funktion ausspuckt, nicht in einer Ausgabe wie "TEXT <div></div>" enden? (Klar, scheinbar schon, nur verstehe ich noch nicht, wieso ;)

Kannst Du mich da noch aufklaeren, wie es da hinkommt?
Mit Zitat antworten
  #4 (permalink)  
Alt 02.04.2008, 19:42
Glühend, brennend Rot
XHTMLforum-Mitglied
 
Registriert seit: 12.08.2006
Ort: Riehen
Beiträge: 152
Wasili befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von domsson Beitrag anzeigen
Fantastisch Gumbo, das war schon die Loesung. Und ich aergere mich mal wieder, dass ich nicht selbst in der Lage war, den Fehler zu finden. ;}

Vielen Dank an deine schnelle Hilfe.

Aber etwas noch, um die Sache fuer mich komplett zu klaeren:
Warum der Text, in der falschen Variante, _vor_ den 2 echo-Teilen stand, die ihn eigentlich umschlossen, verstehe ich dennoch nicht...

Code:
echo "<div>".insertSpecifiedText('TEXT')."</div>";
duerfte doch, relativ unabhaengig davon, was mir die Funktion ausspuckt, nicht in einer Ausgabe wie "TEXT <div></div>" enden? (Klar, scheinbar schon, nur verstehe ich noch nicht, wieso

Kannst Du mich da noch aufklaeren, wie es da hinkommt?
echo() gibt die Ausgabe erst an den Puffer weiter, wenn das Semikolon kommt. Deine Funktion hat aber intern bereits ein echo() aufgerufen, das die Ausgabe an den Puffer leitet - es kommt hier zu einer Überschneidung. Folgendes hätte das gewünschte Ergebnis gebracht:
Code:
echo "<div>";
insertSpecifiedText('TEXT')
echo "</div>";
div ausgeben. insertSpecifiedText ausgeben. div-zu ausgeben.

(PS: Ich weiss, dass man echo nicht als Funktion (echo()) schreiben sollte, weils auch keine ist - ist aber, denke ich, übersichtlicher so)
Mit Zitat antworten
  #5 (permalink)  
Alt 02.04.2008, 20:05
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.035
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von Wasili Beitrag anzeigen
(PS: Ich weiss, dass man echo nicht als Funktion (echo()) schreiben sollte, weils auch keine ist - ist aber, denke ich, übersichtlicher so)
In deinem Beispiel hast du es ja auch nicht gemacht

Übrigens sollte man nie ein echo in einer Funktion/Methode haben, sondern statt dessen einen Rückgabewert (return) verwenden. Wenn man mit dem Wert arbeiten möchte, hat man bei der echo-Variante ein Problem.
Mit Zitat antworten
  #6 (permalink)  
Alt 02.04.2008, 20:06
Glühend, brennend Rot
XHTMLforum-Mitglied
 
Registriert seit: 12.08.2006
Ort: Riehen
Beiträge: 152
Wasili befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von inta Beitrag anzeigen
In deinem Beispiel hast du es ja auch nicht gemacht
Ich meinte eigentlich den Fliesstext. Nicht den Code
Mit Zitat antworten
  #7 (permalink)  
Alt 03.04.2008, 00:12
Benutzerbild von domsson
Rookie @ HTML/CSS/PHP/SQL
neuer user
Thread-Ersteller
 
Registriert seit: 11.02.2008
Ort: Berlin
Beiträge: 88
domsson wird schon bald berühmt werden
Standard

Perfekt. Problem geloest und wieder etwas gelernt.
Danke an Gumbo, Wasili und inta fuer die Problemloesung und Aufklaerung.

Habe dementsprechend uebrigens auch gleich alle meine "insertX()"-Funktionen abgeaendert. Die geben jetzt alle den gewuenschten Text als Wert zurueck und wurden dementsprechend auch in "getX()" umbenannt. :}
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Div mit fixem Abstand und variabler Breite tc-burgi CSS 0 28.08.2010 17:33
Mysql Werte in Listenfeld (nur eines davon übertragen) mooonshadow Serveradministration und serverseitige Scripte 3 05.01.2007 11:07
Welche divs verschwinden bei kleinem Fenster? mooonshadow CSS 16 03.09.2006 17:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:13 Uhr.