PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Newbie Probleme...



bionic
10-06-2003, 17:31
Guten Tag miteinander,
Ich beschäftige mich seit kurzem (wieder) mit PHP und schlage mich mit ein paar Newbie PHP Problem rum... Vielleicht könnt ihr mir ja helfen. Das Problem ist, dass der Server immer crashed und Errors am Laufband ausspuckt, wenn ich versuche das Script aufzurufen.



<?PHP
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE-CH"> \n";
echo "<html> \n";
echo "<head> \n";
echo "<title>Titel2003</title> \n";
echo "</head> \n";

readfile ("../modules/style.php");

readfile ("../modules/javascript.php");

echo "<body topmargin=\"0\" leftmargin=\"0\" bgcolor=\""; echo $background; echo"\">";

echo "<div align=\"center\">";
echo "<center>";


echo "<table border=\"0\" width=\"";if ($nav < 1) {echo "600";} else {echo "700";} echo"\">";
echo "<tr>";


if ($nav < 1) {
echo "";
}

else {
readfile ("../modules/nav.php");
}

echo "<td width=600>";

echo "<table border=\"1\" width=\"600\" cellspacing=\"0\" height=\"0\" bordercolorlight=\"";echo $border1;echo "\" bordercolordark=\"";echo $border1;echo "\" bordercolor=";echo $border2;echo" bgcolor=";echo $bginside;echo">";

echo "<tr>";
echo "<td width=\"0\" height=\"60\" colspan=\"5\" bgcolor=\"#FFFFFF\">";
echo "</tr>";
echo "<tr valign=\"middle\">";

echo "<td height=\"18\" align=\"center\" bgcolor=\"";echo $menu1;echo "\" onMouseOver=\"cOn(this);\" onMouseOut=\"cOut(this);\" bordercolor=\"";echo $bordermenu;echo "\">";
echo "<a href=\"./index.php?section=home\">Home</a>";

echo "<td height=\"18\" align=\"center\" bgcolor=\"";echo $menu1; echo"\" onMouseOver=\"cOn(this);\" onMouseOut=\"cOut(this);\" bordercolor=\"";echo $bordermenu;echo "\">";
echo "<a href=\"./index.php?section=produkte\">Produkte</a>";

echo "<td height=\"18\" align=\"center\" bgcolor=\"";echo $menu1;echo "\" onMouseOver=\"cOn(this);\" onMouseOut=\"cOut(this);\" bordercolor=\"";echo $bordermenu;echo "\">";
echo "<a href=\"./index.php?section=about\">Über Uns</a>";

echo "<td height=\"18\" align=\"center\" bgcolor=\"";echo $menu1;echo "\" onMouseOver=\"cOn(this);\" onMouseOut=\"cOut(this);\" bordercolor=\"";echo $bordermenu;echo "\">";
echo "<a href=\"./index.php?section=faq\">FAQ</a>";

echo "<td height=\"18\" align=\"center\" bgcolor=\"";echo $menu1;echo "\" onMouseOver=\"cOn(this);\" onMouseOut=\"cOut(this);\" bordercolor=\"";echo $bordermenu;echo "\">";
echo "<a href=\"./index.php?section=kontakt\">Kontakt</a>";

echo "</tr>";
echo "<tr>";

echo "<td width=\"0\" height=\"17\" colspan=\"5\" bgcolor=\"";echo $bgshow;echo "\" bordercolor=\"";echo $border1;echo "\">";

echo "<B><font size=\"3\" font color=\"";echo $fontshow;echo "\">";

if (!isset($section)){
echo "home";
}
else {
echo $section;
}

echo "</B>";
echo "</td>";
echo "</tr>";
echo "<tr>";

echo "<td width=\"0\" height=\"0\" colspan=\"5\" valign=\"top\" align=\"left\" bgcolor=\"";echo $bginside;echo "\" bordercolor=\"";echo $border1;echo "\">";

$PATHTO = "../content";
if(eregi("^[a-z]+$", $section))
include("$PATHTO/$section.txt");
elseif(!isset($section))
include("$PATHTO/home.txt");
else
die("Section not found");

echo "<p></p>";
echo "</td>";
echo "</tr>";
echo "<tr>";

echo "<td width=\"0\" height=\"22\" colspan=\"5\" bgcolor=\"";echo $bgshow;echo "\" bordercolor=\"";echo $border1;echo "\">";
readfile ("../modules/copyright.php");

echo "</td>";

echo "</tr>";

echo "</table>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</center>";
echo "</div>";
echo "</body>";
echo "</html>";
?>


Wahrscheinlich habe ich sowieso den falschen Ansatz verfolgt, oder?

Vielen Dank für eure Hilfe, ich bin wirklich ein totaler N00b...
bionic

igel
10-06-2003, 21:25
Moin!


<?PHP
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE-CH"> \n";Hier hast du vergessen, die " zu escapen. Also " -> \" :)

Alternativ könntest du auch erst später mit dem PHP anfangen, also so:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE-CH">
<html>
<head>
<title>Titel2003</title>
</head>

<?php
readfile ("../modules/style.php");
...

Ansonsten wäre es mal interessant, die Fehlermeldungen zu kennen. Und glücklicherweise arbeiten wir nicht zusammen an einem Projekt, unser Codingstyle unterscheidet sich etwas (z. B. mach ich nur einen Befehl pro Zeile und fange nach max. 80 Zeichen eine neue an). Aber jeder wie er will :D

Seh ich erst gerade: Die Sprache, die du im DOCTYPE definierst, ist nicht die Sprache, in der der Text der Seite gehalten ist, sondern der, in der die Tags gehalten sind, und das ist nunmal Englisch. Wenn du die Sprache der Seite angeben willst, kannst du das entweder mit metatags machen
<meta name="DC.Language" content="de"> oder indem du es in den HTTP-Headerdaten angibst. Das machst du so:
<?php
header("Content-Language: de-CH");
...Alle Header müssen abgeschickt werden, bevor die Ausgabe angefangen hat, also schreib die Anweisung am besten ganz an den Anfang. Du kannst PHP ja erstmal wieder zumachen (?>), wenn du den HTML-Kopf ausgeben willst (siehe oben).

iGEL

bionic
15-07-2003, 16:36
Danke iGEL!

Ich habe aber leider nun ein neues Problem:


echo "<table border=\"0\" width=\"";if ($nav < 1) {echo "600";} else {echo "700";} echo"\">";
echo "<tr>";


if ($nav < 1) {
echo "";
}

else {
readfile ("../modules/nav.php");
}



Die Idee hierbei ist, dass durch die Variable $nav bestimmt wird, ob das Menü geladen wird und wie gross der Rahmen wird. Weiss jemand was hier falsch ist?

Vielen Dank,
bionic
P.S.: Sorry für die späte Antwort...

Gaert
15-07-2003, 17:20
Hallo!

Sieht so aus als hättest du ein leerzeichen bei dem letzten echo in der ersten Zeile vergessen.
Es wäre schöner, wenn du das auf mehrere Zeilen verteilen würdest.
Falls es das nicht war würde es helfen die Fehlermeldung zu posten.

Pingu
15-07-2003, 19:12
Hi,

ich habe Dir mal dein Script bearbeitet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Titel2003</title>
</head>

<?php

include("../modules/style.php");
include("../modules/javascript.php");

?>
<body topmargin="0" leftmargin="0" bgcolor="<?php echo $background; ?>">
<div align="center">
<center>
<table borde="0" width="<?php echo ($nav < 1) ? "600" : "700" ?>">
<tr>
<?php if ($nav > 0) { include("../modules/nav.php"); } ?>
<td width=600>
<table border="1" width="600" cellspacing="0" height="0" bordercolorlight="<?php echo $border1; ?>" bordercolordark="<?php echo $border1; ?>" bordercolor="<?php echo $border2; ?>" bgcolor="<?php $bginside; ">
<tr>
<td width="0" height="60" colspan="5" bgcolor="#FFFFFF"></td>
</tr>
<tr valign="middle">
<td height="18" align="center" bgcolor="<?php echo $menu1; ?>" onMouseOver="cOn(this);" onMouseOut="cOut(this);" bordercolor="<?php echo $bordermenu; ?>">
<a href="index.php?section=home">Home</a>
</td>
<td height="18" align="center" bgcolor="<?php echo $menu1; ?>" onMouseOver="cOn(this);" onMouseOut="cOut(this);" bordercolor="<?php echo $bordermenu; ?>">
<a href="index.php?section=produkte">Produkte</a>
</td>
<td height="18" align="center" bgcolor="<?php echo $menu1; ?>" onMouseOver="cOn(this);" onMouseOut="cOut(this);" bordercolor="<?php echo $bordermenu; ?>">
<a href="index.php?section=about">&Uuml;ber Uns</a>
</td>
<td height="18" align="center" bgcolor="<?php echo $menu1; ?>" onMouseOver="cOn(this);" onMouseOut="cOut(this);" bordercolor="<?php echo $bordermenu; ?>">
<a href="index.php?section=faq">FAQ</a>
</td>
<td height="18" align="center" bgcolor="<?php echo $menu1; ?>" onMouseOver="cOn(this);" onMouseOut="cOut(this);" bordercolor="<?php echo $bordermenu; ?>">
<a href="index.php?section=kontakt">Kontakt</a>
</td>
</tr>
<tr>
<td width="0" height="17" colspan="5" bgcolor="<?php echo $bgshow; ?>" bordercolor="<?php echo $border1; ?>">
<B><font size="3" font color="<?php echo $fontshow; ?>"><?php
if (!isset($section)) {
echo "home";
}
else {
echo $section;
}
?></B>
</td>
</tr>
<tr>
<td width="0" height="0" colspan="5" valign="top" align="left" bgcolor="<?php echo $bginside; ?>" bordercolor="<?php echo $border1; ?>">
<?php
$PATHTO = "../content";
if(eregi("^[a-z]+$", $section)) {
include("$PATHTO/$section.txt");
}
else if(!isset($section)) {
include("$PATHTO/home.txt");
}
else {
echo "Section not found";
}
?>
<p></p>
</td>
</tr>
<tr>
<td width="0" height="22" colspan="5" bgcolor="<?php echo $bgshow; ?>" bordercolor="<?php echo $border1; ?>">
<?php include("../modules/copyright.php"); ?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>

Puh ... fertig

Pingu

Pingu
15-07-2003, 19:22
Also für kleinere Seiten ohne viel Scripte, kann man das schon so schreiben.

Ansonsten zur Leserlichkeit, warum schreibst:
echo "<tag attr=\"value\">";und nicht
echo '<tag attr="value">';oder
echo "<tag attr='value'>";
Dann könntest Du auch statt
echo "<tag attr='"; echo $var; echo "'>";gleich schreiben
echo "<tag attr='$var'>";

Du hattest auch einige Fehler mit den HTML-Tags selbst: Du machst nicht gerne die Spalten zu oder? ;)

Von den Links her, ich würde nicht mit "index.php?section=seite" arbeiten, da dies Suchmaschinen feindlich ist. Denn Suchmaschinen indizieren keine Seiten mit Parameteraufrufen.

Alles nur mal so ein paar Gedanken.

Gruß

Pingu

Gaert
15-07-2003, 19:40
Original geschrieben von Pingu
...gleich schreiben
echo "<tag attr='$var'>";

Du hattest auch einige Fehler mit den HTML-Tags selbst: Du machst nicht gerne die Spalten zu oder? ;)

Von den Links her, ich würde nicht mit "index.php?section=seite" arbeiten, da dies Suchmaschinen feindlich ist. Denn Suchmaschinen indizieren keine Seiten mit Parameteraufrufen.

Alles nur mal so ein paar Gedanken.

Gruß

Pingu [/B]

@Pingu
Einfache Anführungszeichen in HTML Tags sind AFAIK nicht W3C Konform, also kein schöner Stil, ansonsten ACK!

Das mit den Suchmaschinen war einmal so, hat sich mittlerweile aber geändert!

Pingu
15-07-2003, 19:56
Original geschrieben von Gaert
@Pingu
Einfache Anführungszeichen in HTML Tags sind AFAIK nicht W3C Konform, also kein schöner Stil, ansonsten ACK!
Ich komme von C und schreibe deswegen sowie und meistens (tolle Wortkonstruktion *g*): printf('<tag attr="%s">', $var); Denn hierbei hat man nun mal viel mehr Möglichkeiten die Ausgabe zu steuern.


Das mit den Suchmaschinen war einmal so, hat sich mittlerweile aber geändert! Also dazu kann ich nur aus der aktuellen ix wieder geben
aus ix 8 (August 2003)
Google, FAST und Altavista nehmen inzwischen zwar teilweise auch Seiten mit Parametern auf, allerdings ist nicht nachvollziehbar, nach welcher Logikdies geschieht. Darum sollten Webmaster, deren Seiten Fragezeichen in der URL enthalten, lieber eine andere Lösung wählen.

Pingu

Gaert
15-07-2003, 20:57
Fakt ist aber, dass die Suchmaschinen die Seiten jetzt indizieren... aber (da hab ich sogar der IX offensichtlich was voraus) nur bis zur zweiten oder dritten ebene um overhead zu vermeiden. In dem hier beschriebenen Fall gibt es nur eine Ebene, also keine Probleme...