"echo" und die Funktion?

Seven Secrets

Erfahrenes Mitglied
So, jetzt mal ne grundlegende Funktionsfrage zu dem echo-Befehl!

Ich weiß, das Echo auch HTML ausgeben kann. Wie sieht es aber aus, wenn ich in diesem HTML-Code eine include-Funktion habe. Ich weiß, das er es nicht anzeigt. besteht die Möglichkeit dies zu umgehen? Oder es anders zu lösen.

Grundlage ist eine if-Bedingung, wobei echo die jeweilige Ausgabe des Ereignisses übernimmt.

PHP:
if ($submit)
{
 if ($betreff=="" || $name=="" || $email=="" || $kommentar=="" || $checkbox=="")
 {
 echo "<html>
<body background=\"grafik/back.jpg\" leftmargin=\"3\" topmargin=\"3\">
<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr>
    <td width=\"140\" align=\"center\" valign=\"top\">
	<?PHP
	include("navi/navimain.php");
	?>
	</td>
    <td align=\"center\" valign=\"middle\">
    Bitte füllen Sie alle Felder mit einem * aus und vergessen Sie das Senden nicht zu bestätigen.
    <br><br><a href=\"javascript:history.back()\">Zur&uuml;ck/back</a>
    </td>
    <td width=\"140\" align=\"center\" valign=\"top\">
    <?PHP
	include("navi/bridge.php");
	?>
    </td>
  </tr>
</table>
</body>
</html>";
 exit();
 }
else
{
 echo "<html>
<body background=\"grafik/back.jpg\" leftmargin=\"3\" topmargin=\"3\">
<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr>
    <td width=\"140\" align=\"center\" valign=\"top\" >
	<?PHP
	include("navi/navimain.php");
	?>
	</td>
    <td align=\"center\" valign=\"middle\">
    Vielen Dank für Ihre Mail. Wir werden diese schnellstmöglich bearbeiten und uns bei Ihnen melden.
    </td>
    <td width=\"140\" align=\"center\" valign=\"top\">
    <?PHP
	include("navi/bridge.php");
	?>
    </td>
  </tr>
</table>
</body>
</html>";
 
test es mal so:

PHP:
<?php
if ($submit)
{
 if ($betreff=="" || $name=="" || $email=="" || $kommentar=="" || $checkbox=="")
 {
 echo "<html>
<body background=\"grafik/back.jpg\" leftmargin=\"3\" topmargin=\"3\">
<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr>
    <td width=\"140\" align=\"center\" valign=\"top\">
    ".
    include("navi/navimain.php");
    ."
    </td>
    <td align=\"center\" valign=\"middle\">
    Bitte füllen Sie alle Felder mit einem * aus und vergessen Sie das Senden nicht zu bestätigen.
    <br><br><a href=\"java script:history.back()\">Zur&uuml;ck/back</a>
    </td>
    <td width=\"140\" align=\"center\" valign=\"top\">
    ".
    include("navi/bridge.php");
    ."
    </td>
  </tr>
</table>
</body>
</html>";
 exit();
 }
else
{
 echo "<html>
<body background=\"grafik/back.jpg\" leftmargin=\"3\" topmargin=\"3\">
<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  <tr>
    <td width=\"140\" align=\"center\" valign=\"top\" >
    ".
    include("navi/navimain.php");
    ."
    </td>
    <td align=\"center\" valign=\"middle\">
    Vielen Dank für Ihre Mail. Wir werden diese schnellstmöglich bearbeiten und uns bei Ihnen melden.
    </td>
    <td width=\"140\" align=\"center\" valign=\"top\">
    ".
    include("navi/bridge.php");
    ."
    </td>
  </tr>
</table>
</body>
</html>";
?>
 
Hi!

Warum packst du deine If-Anweisung nicht direkt in den HTML-Code?

Dann hast du keine Probleme
Code:
{
if {$bedingung1==true AND $bedingung2==true}
echo"Text"
}

grüsse
daDom
 
Dass dein Code nicht funktioniert, liegt nicht daran, dass echo ein Problem mit Includes hat, sondern daran, dass auf dem Browser keine PHP Skript interpretiert werden.
Das PHP Skript muss ja bereits vom Server interpretiert werden.

Ich würde das so machen:
if ($submit)
{
if ($betreff=="" || $name=="" || $email=="" || $kommentar=="" || $checkbox=="")
{
$meldung = "Bitte füllen Sie alle Felder mit einem * aus und vergessen Sie das Senden nicht zu bestätigen.
<br><br><a href=\"java script:history.back()\">Zur&uuml;ck/back</a>";
}
else
{
$meldung = "Vielen Dank für Ihre Mail. Wir werden diese schnellstmöglich bearbeiten und uns bei Ihnen melden.";
}

print "<html>\n";
print "<body background=\"grafik/back.jpg\" leftmargin=\"3\" topmargin=\"3\">\n";
print "<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n";
print " <tr>\n";
print " <td width=\"140\" align=\"center\" valign=\"top\">\n";
include("navi/navimain.php");
print " </td>\n";
print " <td align=\"center\" valign=\"middle\">\n";
print " {$meldung}\n";
print " <br><br><a href=\"java script:history.back()\">Zur&uuml;ck/back</a>\n";
print " </td>\n";
print " <td width=\"140\" align=\"center\" valign=\"top\">\n";
include("navi/bridge.php");
print " </td>\n";
print " </tr>\n";
print "</table>\n";
print "</body>\n";
print "</html>";\n";
exit();
}

...
Damit sollte es im Prinzip funktionieren und ist auch noch viel kürzer und übersichtlicher
 
@ Devil Noxx

die Variante funktioniert nicht!

@ daDom

da verstehe ich nicht, wie du das realisieren willst. Die if-Anweisung kontrolliert das ausgefühlt sein von verschiedenen Feldern. Und dann wird das Formular gesendet.

Die Includeten Dateien sind die jeweiligen Navigationen und sollten dann wieder erscheinen.
 
Hi!

Kann es vielleicht daran liegen, das du in einer schon aktiven PHP-Funktion (<? php ?>) noch einmal <? PHP ?> drin hast?
Devil NoxX hat es ja schon weggelassen, wie ich gerade sehe...

Und generell kannst du schon eine Include Funktion darin ausgeben... :rolleyes:

Oder mache für jedes eine seperate Funktion:

PHP:
<? PHP
Funktion1 (Vergleich, ob Variable eingegeben, dann HTML ausgeben)
 ?>

<? PHP
Funktion2 (PHP-Dateien includen)
 ?>
 
@dadom: Wie soll das denn deiner Meinung nach funktionieren?
Ich meine einen php inlude in einem Echo einbinden?

Der Browser wird beim Befehl:

echo "<?php include ... ?>"

ganz einfach <?php include... ?> ausgeben.

So und jetzt die Frage. Wer soll nun den PHP-Code interpretieren?
Der Browser definitiv nicht.

Das muss vorher auf dem Server passiert sein. Und der wird bestimmt nur den Text ausgeben, den er vom echo bekommen hat.
 
So sollte es funktionieren (ungetestet):

PHP:
<?PHP if($submit)
{ ?>
<html>
<body background="grafik/back.jpg" leftmargin="3" topmargin="3">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="140" align="center" valign="top">
    	<?PHP include("navi/navimain.php"); ?>
    </td>
    <td align="center" valign="middle">
	    <?
	    if ($betreff=="" || $name=="" || $email=="" || $kommentar=="" || $checkbox=="")
	 	{
	    	echo"Bitte füllen Sie alle Felder mit einem * aus und vergessen Sie das Senden nicht zu bestätigen.<br>
	    	<br>
	    	<a href=\"java script:history.back()\">Zur&uuml;ck/back</a>";
	    }
	    else
	    {
	    	echo"Vielen Dank für Ihre Mail. Wir werden diese schnellstmöglich bearbeiten und uns bei Ihnen melden.";
	    } ?>   
    </td>
    <td width="140" align="center" valign="top">
    	<?PHP include("navi/bridge.php"); ?>
    </td>
  </tr>
</table>
</body>
</html>
<? } ?>
 
Also erstmal: Zeilenlange echos oder prints sind unschön.
Sieht ersten schlecht aus und zweitens machst du dir die ganze Mühe mit dem Escapen der Quotes, usw...

Längere HTML-Passagen gibts man so aus:
PHP:
<?php
// PHP Code
?>
<!--HTML Code-->
<?php
// PHP Code
?>
Noch schöner ist es natürlich mit Templates, aber das ist bei kleinen Scripten eigentlich weniger sinvoll.

Dann:
Ein include, include_once, require oder require_once fügen den Code einfach ins Script ein.
Du musst dir nur vor dem Include ein ?> und danach ein <?php denken.
Sprich: Jeder Text, der in der Datei steht, die includet wird, wird einfach ausgegeben, solange er nicht in PHP-Tags steht!
 
Schau doch mal meinen ersten Post an... Habs zwar nicht geparst (d.h. evtl. Syntaxfehler drin), aber vom Prinzip her wirds genau das sein, was seven secrets wollte. Zudem ich gleich noch den if - optimiert haben.
 
Zurück