Zur Navigation

Valide

1 uwe

Hallo,
meine php sieht sauber auf dem Bildschirm aus ist aber nicht
Valide.

Gruss
Uwe

<?php

$progname = "lesentabelle1.php";
$daten_per_site = 25;

if(isset($_GET['seite'])) { 
$seite = preg_replace ("/[^0-9]/", "",  $_GET['seite']);
// wenn Seite größer 3 dann wird eins gezeigt
} 


// Startzahl
if(!isset($seite) || $seite == '') {
$seite = 1;
}
//if ($seite != 1 or $seite != 2 or $seite != 3 or $seite == "") {$seite = 1;}
if ($seite > 3) {$seite = 1;}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<title>plan</title>

<style type="text/css">
body {
background-color: #f7f7f7;
font-family: Verdana, Arial;
font-size: 11px;
color: #000000;
}
.sitenav {
background-color: #000066;
}
.sitenav td {
background-color: #e9ebef;
padding: 3px;
font-size: 11px;
text-align: center;
}
.sitenav td a {
color: #990000;
text-decoration: none;
}
.sitenav td a:hover {
color: #000066;
text-decoration: none;
}
</style>

</head>
<body>

<H2>Tidenplan   Seite <?php echo $seite; ?></H2>


<?php

// Datei in Array lesen
$fp = file("2008.txt") or die ("Kann Datei nicht lesen.");

# Zeilenanzahl der Datei festellen
$zeilen = count($fp);


# Limit fuer Query erstellen - Eintraege pro Seite 
$anz = ($seite-1) * $daten_per_site;

if ($zeilen > 0) {
$navigationslinks = sitenavi($zeilen, $seite, $daten_per_site, $progname);

echo "$navigationslinks\n";
?>
<TABLE style="font-family:verdana; empty-cells:show; font-size: 12px" border="1">
    <tr>
      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Hochwasser</td>
      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Niedrigwasser</td>
    </tr>
    <tr bgcolor="#cccccc">
      <td>Datum</td>
      <td>Tag</td>
      <td>Zeit</td>
      <td>Datum</td>
      <td>Tag</td>
      <td>Zeit</td>
    </tr>
<?php
//echo "<ul>\n";


$j = date('Y');
$m = date('m');
$d = date('d');
$heute = mktime(0,0,0,$m,$d,$j);
$bis = mktime(0,0,0,$m,$d+60,$j);

for ($i = $anz;  $i <= ($anz-1) + $daten_per_site; $i++) {
$daten = explode("|",$fp[$i]);

        $year[0] = substr($daten[0], 6,4); 
        $month[0] = substr($daten[0], 3, 2);
        $day[0] = substr($daten[0], 0, 2);  
        $test = mktime(0,0,0,$month[0],$day[0],$year[0]);

// Zeilen ausgeben des aktuellen Bereiches
if ($daten[0] != ''&& $test > $heute ) { 
//if ($daten[0] != '' && $test > $heute ) { 
//echo "<li>$daten[0] - $daten[1]</li>\n";
//echo "<li>$daten[0] - $daten[1]- $daten[3]- $daten[3]- $daten[5]- $daten[6]- $daten[7]</li>\n";


 print("<TR>

<td>$daten[0]</td>
<td>$daten[1]</td>
<td>$daten[2]</td>
<td>$daten[3]</td>
<td>$daten[4]</td>
<td>$daten[5]</td>
</tr>");

}
}

//echo "</ul>\n";
echo "$navigationslinks\n";

} else {
echo "Keine Daten gefunden!\n";
}

echo "</TABLE>\n</body>\n</html>\n";

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
// Seitennavigation
// hier ist auch der Nicht Valide Teil
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
function sitenavi($zeilen, $seite, $pro_seite, $url) {



// alter Seitenzähler $gesamtseiten = ceil($zeilen / $pro_seite);
 $gesamtseiten = 3;

$aktuelle_seite = $seite ? $seite : 1;
$linkanzahlausgabe = 2;

$letzte = $linkanzahlausgabe + $aktuelle_seite;
if ($letzte > $gesamtseiten) {
$letzte = $gesamtseiten;
}

$startback = $aktuelle_seite - $linkanzahlausgabe;
if ($startback < 1) {
$startback = 1;
}

$navigationslinks = "&nbsp;";
if ($gesamtseiten != 1 && $zeilen) {
$seitenlink = "";

if ($aktuelle_seite != 1) {
$prevbl = $aktuelle_seite - 1;
$seitenlink .=  "<td><a href=\"$url?seite=1\">« Erste Seite</a></td><td width=\"20\"> <a href=\"$url?seite=$prevbl\">&lt;</a> </td>";
}

for ($i = $startback; $i <= $letzte; $i++) {
if ($aktuelle_seite == "$i") {
$seitenlink .= "<td width=\"20\" style=\"background-color: #ffffff\"><b>$i</b></td>";
} else {
$seitenlink .= "<td width=\"20\"><a href=\"$url?seite=$i\">$i</a></td>";
}
}

if ($aktuelle_seite != 3) {
$nextbl = $aktuelle_seite + 1;
$seitenlink .= "<td width=\"20\"> <a href=\"$url?seite=$nextbl\">&gt;</a> </td><td><a href=\"$url?seite=$gesamtseiten\">Letzte Seite »</a></td>";
}
$navigationslinks = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"sitenav\"><tr><td>Seite: $aktuelle_seite von $gesamtseiten</td> $seitenlink</tr></table>";
}

return $navigationslinks;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
?> 

Die Meldung lautet:
Line 284, Column 70: document type does not allow element "TABLE" here .

…adding="0" border="0" class="sitenav"><tr><td>Seite: 1 von 3</td> <td width="



The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).

02.12.2007 12:08

2 Rudy

Du hast <table> in ein Element geschachtelt, in dem es nicht vorkommen darf. Aus dem, was Du gepostet hast, sehe ich das übergeordnete Element leider nicht. Schau Dir die Elementabhängigkeiten von <table> an, dann findest Du wahrscheinlich den Fehler.

02.12.2007 12:31

3 uwe

Hallo Rudy,
das ist mein ganzer Quellcode....!

meine Textdatei sieht so aus:
01.01.2008|Di|06:50 Uhr|01.01.2008|Di|13:30 Uhr
01.01.2008|Di|19:20 Uhr|02.01.2008|Mi|01:40 Uhr
02.01.2008|Mi|07:40 Uhr|02.01.2008|Mi|14:20 Uhr
02.01.2008|Mi|20:10 Uhr|03.01.2008|Do|02:40 Uhr
03.01.2008|Do|08:40 Uhr|03.01.2008|Do|02:40 Uhr
03.01.2008|Do|08:40 Uhr|03.01.2008|Do|15:20 Uhr
03.01.2008|Do|21:10 Uhr|04.01.2008|Fr|03:50 Uhr
04.01.2008|Fr|09:30 Uhr|04.01.2008|Fr|16:20 Uhr
04.01.2008|Fr|22:00 Uhr|05.01.2008|Sa|04:50 Uhr
05.01.2008|Sa|10:20 Uhr|05.01.2008|Sa|04:50 Uhr
05.01.2008|Sa|10:20 Uhr|05.01.2008|Sa|17:20 Uhr
05.01.2008|Sa|22:50 Uhr|06.01.2008|So|05:50 Uhr
06.01.2008|So|11:10 Uhr|06.01.2008|So|18:10 Uhr
06.01.2008|So|23:40 Uhr|07.01.2008|Mo|06:40 Uhr


Wo muss ich was machen?

Gruss
Uwe

02.12.2007 13:49

4 Jörg Kruse

Hallo Uwe,

der oben genannte PHP-Code wurde aber nicht vom Validator getestet, sondern der fertige HTML-Code der Ausgabeseite. Diesen erhälst du, wenn du diese Seite im Browser aufrufst und dir dort den Quelltext anzeigen lässt

02.12.2007 14:08 | geändert: 02.12.2007 14:09

5 uwe

Hallo,
hier noch mal der Original PHP Code

<?php

$progname = "lesentabelle1.php";
$daten_per_site = 25;

if(isset($_GET['seite'])) { 
$seite = preg_replace ("/[^0-9]/", "",  $_GET['seite']);
// wenn Seite größer 3 dann wird eins gezeigt
} 


// Startzahl
if(!isset($seite) || $seite == '') {
$seite = 1;
}

if ($seite > 3) {$seite = 1;}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<title>plan</title>

<style type="text/css">
body {
background-color: #f7f7f7;
font-family: Verdana, Arial;
font-size: 11px;
color: #000000;
}
.sitenav {
background-color: #000066;
}
.sitenav td {
background-color: #e9ebef;
padding: 3px;
font-size: 11px;
text-align: center;
}
.sitenav td a {
color: #990000;
text-decoration: none;
}
.sitenav td a:hover {
color: #000066;
text-decoration: none;
}
</style>

</head>
<body>

<H2>Plan   Seite <?php echo $seite; ?></H2>


<?php

// Datei in Array lesen
$fp = file("2008.txt") or die ("Kann Datei nicht lesen.");

# Zeilenanzahl der Datei festellen
$zeilen = count($fp);


# Limit fuer Query erstellen - Eintraege pro Seite 
$anz = ($seite-1) * $daten_per_site;

if ($zeilen > 0) {
$navigationslinks = sitenavi($zeilen, $seite, $daten_per_site, $progname);

echo "$navigationslinks\n";
?>
<TABLE style="font-family:verdana; empty-cells:show; font-size: 12px" border="1">
    <tr>
      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Hochwasser</td>
      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Niedrigwasser</td>
    </tr>
    <tr bgcolor="#cccccc">
      <td>Datum</td>
      <td>Tag</td>
      <td>Zeit</td>
      <td>Datum</td>
      <td>Tag</td>
      <td>Zeit</td>
    </tr>
<?php
//echo "<ul>\n";


$j = date('Y');
$m = date('m');
$d = date('d');
$heute = mktime(0,0,0,$m,$d,$j);
$bis = mktime(0,0,0,$m,$d+60,$j);

for ($i = $anz;  $i <= ($anz-1) + $daten_per_site; $i++) {
$daten = explode("|",$fp[$i]);

        $year[0] = substr($daten[0], 6,4); 
        $month[0] = substr($daten[0], 3, 2);
        $day[0] = substr($daten[0], 0, 2);  
        $test = mktime(0,0,0,$month[0],$day[0],$year[0]);

// Zeilen ausgeben des aktuellen Bereiches
if ($daten[0] != ''&& $test > $heute ) { 
//if ($daten[0] != '' && $test > $heute ) { 
//echo "<li>$daten[0] - $daten[1]</li>\n";
//echo "<li>$daten[0] - $daten[1]- $daten[3]- $daten[3]- $daten[5]- $daten[6]- $daten[7]</li>\n";


 print("<TR>

<td>$daten[0]</td>
<td>$daten[1]</td>
<td>$daten[2]</td>
<td>$daten[3]</td>
<td>$daten[4]</td>
<td>$daten[5]</td>
</tr>");

}
}

//echo "</ul>\n";
echo "$navigationslinks\n";

} else {
echo "Keine Daten gefunden!\n";
}

echo "</TABLE>\n</body>\n</html>\n";

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
// Seitennavigation
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
function sitenavi($zeilen, $seite, $pro_seite, $url) {



// alter Seitenzähler $gesamtseiten = ceil($zeilen / $pro_seite);
 $gesamtseiten = 3;

$aktuelle_seite = $seite ? $seite : 1;
$linkanzahlausgabe = 2;

$letzte = $linkanzahlausgabe + $aktuelle_seite;
if ($letzte > $gesamtseiten) {
$letzte = $gesamtseiten;
}

$startback = $aktuelle_seite - $linkanzahlausgabe;
if ($startback < 1) {
$startback = 1;
}

$navigationslinks = "&nbsp;";
if ($gesamtseiten != 1 && $zeilen) {
$seitenlink = "";

if ($aktuelle_seite != 1) {
$prevbl = $aktuelle_seite - 1;
$seitenlink .=  "<td><a href=\"$url?seite=1\">« Erste Seite</a></td><td width=\"20\"> <a href=\"$url?seite=$prevbl\">&lt;</a> </td>";
}

for ($i = $startback; $i <= $letzte; $i++) {
if ($aktuelle_seite == "$i") {
$seitenlink .= "<td width=\"20\" style=\"background-color: #ffffff\"><b>$i</b></td>";
} else {
$seitenlink .= "<td width=\"20\"><a href=\"$url?seite=$i\">$i</a></td>";
}
}

if ($aktuelle_seite != 3) {
$nextbl = $aktuelle_seite + 1;
$seitenlink .= "<td width=\"20\"> <a href=\"$url?seite=$nextbl\">&gt;</a> </td><td><a href=\"$url?seite=$gesamtseiten\">Letzte Seite »</a></td>";
}
$navigationslinks = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"sitenav\"><tr><td>Seite: $aktuelle_seite von $gesamtseiten</td> $seitenlink</tr></table>";
}

return $navigationslinks;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
?> 

02.12.2007 14:24

6 Jörg Kruse

Wie gesagt: der PHP-Code wird vom HTML-Validator nicht validiert, sondern die konkrete HTML-Seite, die auch der Browser erhält. Ruf die Seite im Browser auf, lass dir (über rechte Maustaste -> Quelltext anzeigen) den Quelltext anzeigen und kopier diesen (zumindest den relevanten Ausschnitt) hier in einen Codeblock. Oder verlinke die Seite, die der Validator validiert hat

02.12.2007 14:50

7 uwe

Hallo,
so sieht es im Browser aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<title>Plan</title>

<style type="text/css">
body {
background-color: #f7f7f7;
font-family: Verdana, Arial;
font-size: 11px;
color: #000000;
}
.sitenav {
background-color: #000066;
}
.sitenav td {
background-color: #e9ebef;
padding: 3px;
font-size: 11px;
text-align: center;
}
.sitenav td a {
color: #990000;
text-decoration: none;
}
.sitenav td a:hover {
color: #000066;
text-decoration: none;
}
</style>

</head>
<body>

<H2>Plan   Seite 1</H2>


<table cellspacing="1" cellpadding="0" border="0" class="sitenav"><tr><td>Seite: 1 von 3</td> <td width="20" style="background-color: #ffffff"><b>1</b></td><td width="20"><a href="lesentabelle1.php?seite=2">2</a></td><td width="20"><a href="lesentabelle1.php?seite=3">3</a></td><td width="20"> <a href="lesentabelle1.php?seite=2">&gt;</a> </td><td><a href="lesentabelle1.php?seite=3">Letzte Seite »</a></td></tr></table>
<TABLE style="font-family:verdana; empty-cells:show; font-size: 12px" border="1">
    <tr>
      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Hochwasser</td>

      <td
 style="text-align: center; background-color: rgb(204, 204, 204);"
 colspan="3" rowspan="1" >Niedrigwasser</td>
    </tr>
    <tr bgcolor="#cccccc">
      <td>Datum</td>
      <td>Tag</td>
      <td>Zeit</td>
      <td>Datum</td>

      <td>Tag</td>
      <td>Zeit</td>
    </tr>
<TR>

<td>01.01.2008</td>
<td>Di</td>
<td>06:50 Uhr</td>
<td>01.01.2008</td>

<td>Di</td>
<td>13:30 Uhr
</td>
</tr><TR>

<td>01.01.2008</td>
<td>Di</td>
<td>19:20 Uhr</td>
<td>02.01.2008</td>
<td>Mi</td>
<td>01:40 Uhr

</td>
</tr><TR>

<td>02.01.2008</td>
<td>Mi</td>
<td>07:40 Uhr</td>
<td>02.01.2008</td>
<td>Mi</td>
<td>14:20 Uhr
</td>
</tr><TR>

<td>02.01.2008</td>
<td>Mi</td>
<td>20:10 Uhr</td>
<td>03.01.2008</td>
<td>Do</td>
<td>02:40 Uhr
</td>
</tr><TR>

/* '###hier ist der Fehler###.*/
</tr><table cellspacing="1" cellpadding="0" border="0" class="sitenav"><tr><td>Seite: 1 von 3</td> <td width="20" style="background-color: #ffffff"><b>1</b></td><td width="20"><a href="lesentabelle1.php?seite=2">2</a></td><td width="20"><a href="lesentabelle1.php?seite=3">3</a></td><td width="20"> <a href="lesentabelle1.php?seite=2">&gt;</a> </td><td><a href="lesentabelle1.php?seite=3">Letzte Seite »</a></td></tr></table>

</TABLE>
</body>
</html>
 

02.12.2007 15:55

8 Rudy

Du beginnst eine <table> innerhalb einer anderen <table>. Da fehlt anscheinend das schließende </table> nach dem letzten </tr> vor dem Fehler:

</td>
</tr><TR>

/* '###hier ist der Fehler###.*/
</tr></table><table cellspacing="1" cellpadding="0" border="0" class="sitenav">

btw. ist das <TR></tr> davor leer - also überflüssig. Bei der Tag-Schreibweise solltest Du im Hinblick auf guten Stil einheitlich bleiben, also immer Kleinbuchstaben.

02.12.2007 16:00 | geändert: 02.12.2007 16:07

10 Jörg Kruse

Eine Tabelle kann nicht direkt innerhalb einer anderen Tabelle eingeordnet werden, sondern nur in eine Tabellenzelle. Die Verschachtelung müsste korrekt also folgendermaßen aussehen:

table -> tr -> td -> table -> tr -> td

... oder du baust die zweite Tabelle unterhalb der ersten Tabelle ein, also nach dem </table>

02.12.2007 16:50 | geändert: 02.12.2007 16:51

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]