• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] [(X)HTML-Validator] Was bedeutet dieser Error ?

Status
Für weitere Antworten geschlossen.
Oh, hatte die beiden Postings über mir gar nicht gelesen, wurden geschrieben, während ich meinen Beitrag schrieb.

Ich werde dann morgen mal versuchen ein <fieldset> um die einzelnen Formularelemente zu legen.

Beim Doctype xhtml 1.0 strict, kommen ja beim validieren wirklich mehr neue Fehler, als man behebt. :oops:

Warum bespielsweise, sollen die Elemente innerhalb eines Formulars in ein Blockelement? Das ging bisher auch prima ohne. :D
 
Werbung:
Sorry, dass ich schon wieder nerve, aber ihr seid hier einfach so gut. ;)

Ich find in folgendem Code einfach keinen Fehler:

HTML:
  echo "<table id=\"uploadtable\">";
  echo "<tr><td colspan=\"2\">Angaben zur hochgeladenen Datei</td></tr>";
  echo "<tr><td class=\"td\">Datei</td><td class=\"td\">$name</td></tr>";
  echo "<tr><td class=\"td\">Groesse</td><td class=\"td\">$size Bytes</td></tr>";
  echo "<tr><td class=\"td\">Dateityp</td><td class=\"td\">$endung</td></tr>";
  echo "<tr><td class=\"td\">Beschreibung</td><td class=\"td\">$beschreibung</td></tr>";

  if ($endung=="exe" || $endung=="php")
  {
   echo "<div>FEHLER: Die von Ihnen ausgewaehlte Datei ist nicht zulässig, bitte keine .exe oder .php Dateien hochladen.";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a></div>");
   exit;
  }
  if ($size==0)
  {
   echo "<div>FEHLER: Bitte wählen Sie eine Datei aus.";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a></div>");
   exit;
  }

   echo "<tr><td>";
  // bestehende datei darf nicht ueberschrieben werden
  if (file_exists($uploaddir.$name))
  {
   echo "Die Datei kann nicht hochgeladen werden, da schon eine Datei mit dem gleichen Namen existiert";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a>");
   exit; //geht das?
  } else
  {
   // datei darf hochgeladen werden
   if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile))
   {
     echo "Die Datei wurde fehlerfrei hochgeladen.";
     echo ("<br />weitere Datei <a style=\"font-size:16px;\" href=\"fileupload.php\">hochladen</a>");
   } else
   {
     echo "Die Datei konnte nicht hochgeladen werden.";
     echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a>");
   }
  } // if datei vorhanden
  
  echo "</td></tr></table>";
Der Validator, zeigt mir aber vorallem folgendes an:

"Line 52, Column 356: document type does not allow element "div" here …ng</td><td class="td"></td></tr><div>FEHLER: Bitte wählen Sie eine Datei aus."

und haufenweise Fehler, dass ich angblich irgendwo etwas asgelassen hätte.

zB hier:
"Line 52, Column 468:
end tag for "table" omitted, but OMITTAG NO was specified

…ef="fileupload.php">zurück</a></d…"


Ich weiss, der Quellcode ist wegen des Phps etwas undurchsichtig, ich hoffe ihr habt trotzdem eine Lösung für mein Problem.

Danke schon jetzt.

Gruß Theo

Edit: Ich hab den ganzen code noch mal durchgeschaut. Für jedes geöffnete div, schließe ich auch eins. <table> wird geöffnen und geschlossen... Ich hab keine Ahnung was das Problem sein soll.
 
Zuletzt bearbeitet:
Ein <div> darf nicht zwischen 2 <tr> stehen, höchstens in einem <td>. Bei dir ist das <div> aber zwischen 2 Zeilen, das ist nicht erlaubt.

Abgesehen davon ist ein <div> für die Fehlermeldung das falsche Tag. Eine Fehlermeldung ist etwas wichtiges, also <em> oder <strong>.
 
Werbung:
Ich habe mir das zu Herzen genommen und die divs um die Fehlermeldungen nun durchs <strong> ersetzt.
Ausserdem habe ich die Tabelle früher beendet.

Ich habe mir vom Validator mal den Source Code anzeigen lassen und da fallen 2 Dinge auf:

1. Der gesamte Code wird irgendwie in die Zeile 52 gehauen, warum auch immer.
2. Nach der Zeile 52 wird kein Code mehr validiert, offenbar kann der Validator nix mehr von dem lesen, was ich danach gecoded habe. Daher fehlt laut Validator dann natürlich auch ein </div>, ein </body> usw.

Weiß jmd woran es liegt, dass der Validator nach Zeile 52 plötzlich nix mehr validieren kann?

http://validator.w3.org/check?uri=h...&ss=1&group=0&user-agent=W3C_Validator/1.6543
 
Werbung:
Ich dachte ich könnte uns den gesamten Code ersparen, aber leider scheinbar nicht. :D

HTML:
<?php 
    /*error_reporting(E_ALL);
    include('auth.php');*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Alexander Becker" />
<meta name="description" lang="de" content="Dies ist die Onlinepräsenz des Pflegelehre-jetzt Teams." />
<meta name="description" lang="en" content="This is the homepage of Pflegelehre-jetzt." />
<meta name="keywords" lang="de" content="Pflegelehre-jetzt, Krankenpflegerhelfer Ausbildung, Kontakt," />
<meta name="keywords" lang="en" content="Pflegelehre-jetzt, nurse training, contact," /> 
<meta name="date" content="2009-09-30" />
<meta name="robots" content="nofollow" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<title>Pflegelehre-jetzt - Interner Bereich - Datei hochladen</title>
<link rel="stylesheet" type="text/css" href="../style.css" />
<style type="text/css">
<!--
#upload {
border:1px solid #ffffff;
background-color:#669999;
padding:0 15px;
color:#ffffff;
text-align:left;
min-height:450px;
height:auto !important;
height:500px;
position:relative;
}

.td {
background-color:#919191;
}
-->

</style>
<script type="text/javascript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

</head>


<body>
<div id="upload">
<?php
 // Zielverzeichnis festlegen
$uploaddir = '/homepages/21/d294261804/htdocs/intern/uploaded/';
$uploadfile = $uploaddir. basename($_FILES['datei']['name']);

$name = $_FILES['datei']['name'];
$type = $_FILES['datei']['type'];
$size = $_FILES['datei']['size'];
$tmp_name = $_FILES['datei']['tmp_name'];
$error = $_FILES['datei']['error'];
$beschreibung = $_POST['beschreibung'];
$benutzer = $_SESSION['benutzer'];
$date = date("Y\-m\-d H:i:s");

    if ($name!="") {
    $filename = $name;
    $done = true;
    $counter = 0;

    while($done)
    {
        $counter--;

        if(substr($filename, $counter, 1)==".")
        {
            $done = false;
        }

        else
        {
            $endung = (substr($filename, $counter, 1).$endung);
        }
    }
    }
    else {
    echo "Bitte wählen Sie eine Datei aus.";
    }


  echo "<table id=\"uploadtable\">";
  echo "<tr><td colspan=\"2\">Angaben zur hochgeladenen Datei</td></tr>";
  echo "<tr><td class=\"td\">Datei</td><td class=\"td\">$name</td></tr>";
  echo "<tr><td class=\"td\">Groesse</td><td class=\"td\">$size Bytes</td></tr>";
  echo "<tr><td class=\"td\">Dateityp</td><td class=\"td\">$endung</td></tr>";
  echo "<tr><td class=\"td\">Beschreibung</td><td class=\"td\">$beschreibung</td></tr></table>";

  if ($endung=="exe" || $endung=="php")
  {
   echo "<strong>FEHLER: Die von Ihnen ausgewaehlte Datei ist nicht zulässig, bitte keine .exe oder .php Dateien hochladen.";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a></strong>");
   exit;
  }
  if ($size==0)
  {
   echo "<strong>FEHLER: Bitte wählen Sie eine Datei aus.";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a></strong>");
   exit;
  }


  // bestehende datei darf nicht ueberschrieben werden
  if (file_exists($uploaddir.$name))
  {
   echo "Die Datei kann nicht hochgeladen werden, da schon eine Datei mit dem gleichen Namen existiert";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a>");
   exit; 
  } else
  {
   // datei darf hochgeladen werden
   if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile))
   {
     echo "Die Datei wurde fehlerfrei hochgeladen.";
     echo ("<br />weitere Datei <a style=\"font-size:16px;\" href=\"fileupload.php\">hochladen</a>");
   } else
   {
     echo "Die Datei konnte nicht hochgeladen werden.";
     echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a>");
   }
  } // if datei vorhanden
  
    $connection =  mysql_connect("xxx","xxx","xxx") or die ("<br /><br />Konnte nicht auf die Datenbank zugreifen!");
    $db =  mysql_select_db("xxx",$connection);

    $sql = "INSERT INTO files (file_name, file_size, file_type, file_date, file_author, file_description) 
    VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string($size)."', '".mysql_real_escape_string($endung)."', '".mysql_real_escape_string($date)."', '".mysql_real_escape_string($benutzer)."', '".mysql_real_escape_string($beschreibung)."')";
    mysql_query($sql);
    mysql_close($connection);
 
?>

</div>
</body>
</html>

In meiner Datei ist das alles vorhanden. Der Validator sagt aber, nach dem letzten <strong> sei mein Code zuende. Ich hab doch alles richtig zugemacht. Ich zweifel grade an mir selbst. ;)
 
Werbung:
so wie das aussieht, bricht das script irgendwo vorm ende ab. wohl bei dem exit(). wenn damit beendet wird, bricht die komplette seite ab.

Nils aka XraYSoLo
 
Das komische ist nur, dass die vom Browser ganz normal ausgeführt wird. Es funktioniert also alles, nur der Validator meckert rum.

Kann man da irgendwas dran drehen? Wenn schon alles validiert ist, dann auch die Seite.:D
Will den Code ja sauber haben.
 
Werbung:
Laut php manual entspricht die() exit(). Also dürfte das keinen großen Unterschied machen.

Umschreiben wäre natürlich ne Option, allerdings frage ich mich, warum das exit im Fall darüber beim Validieren keine Probleme bereitet...
Gruß Theo
 
Ich habe das Problem jetzt einfach so gelöst:
HTML:
  if ($size==0)
  {
   echo "<strong>FEHLER: Bitte wählen Sie eine Datei aus.";
   echo ("<br /><a style=\"font-size:16px;\" href=\"fileupload.php\">zurück</a></strong>");
   echo ("</div></body></html>");
   exit;
  }
[...]


</div>
</body>
</html>

Sprich, wenn die if-bedingung zutrifft, wird das script durch exit() beendet, er konnte vorher das Schliessen von div, body und html so natürlich nie erreichen.
Für den Fall, dass $size==0 ist, wird vor dem Beenden des Scripts jetzt noch fix alles geschlossen, was noch zu beenden ist.

Der Validator meckert jetzt nicht mehr.
Habe ich den Validator damit jetzt ausgetrickst, oder ist das durchaus eine legitime Variante?
 
Werbung:
alles ist legitim, solange die standards eingehalten werden. wenn dennoch nichts angezeigt wird, muss es geändert werden.

Nils aka XraYSoLo
 
Moin!
Hab hier ein Error:

error.png
Line 90, Column 6: document type does not allow element "br" here; missing one of "ins", "del", "h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "pre", "address", "fieldset" start-tag <br />
The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.
One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>")


Wie genau kann ich diesen beheben?
 
Werbung:
Na das ist ja mal eine kompetente Aussage!
1. Es gibt kein </br>
2. <br /> statt <br> zu schreiben muss man nur bei XHTML.

Meine Antwort:
1. <br> braucht man nur in den seltensten Fällen.
2. Statt die Fehlermeldung zu posten, hättest Du besser einen Link zum Validierungsergebnis gepostet. Dann hätte man den Sourcecode sehen können. Denn Du willst ja nicht nur hören: "<br> ist an der Stelle nicht erlaubt." Das ist zwar richtig, könnte aber viele Ursachen haben.
 
Also ich verwende <br />
Das ist doch eigenlich valides html?


Hier mein QT:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test</title>
<meta name="robots" content="index,follow" />
<meta name="language" content="de" />

<style type="text/css">
body {
font: normal 0.8em verdana, tahoma, 'sans-serif';
color: #000;
background-color: #EFEFEF;
}

.post{
border: 1px solid #808080;
background-color: #FFF;
padding: 5px;
width: 75%;
}

.titel{ border-bottom: 1px solid #EFEFEF; }

.error{ font-weight: bold; color: #A61212; }

span{ font-style:italic; color: #395B7D; }

a {
color: #49565E;
font-weight: bold;
text-decoration: none;
}

a:visited {
color: #63909C;
text-decoration: none;
}

a:hover, a:active {
color: #7EB1C0;
text-decoration: none;
}
</style>
</head>



<div>

</div>
<br />

<form action="" method="post" id="eingabe">
<p>Name:</p> <input type="text" name="name" size="20" /><br /> <br />
<p>Deine Msg:</p> <textarea cols="55" rows="10" value="msg" name="msg"></textarea>

<p>Spamschutzfrage: <br />
<b>Welche Farbe hat der Himmel?</b> Antwort:
<input size="4" name="spam" type="text" /></p>

<input type="submit" value="Beten" title="Gooo" name="los" />


<br /> <br />
</form>
1 <a href='#'>2</a> <br /><br /><div class="post">

<div class="titel">
17 - <a target="blank" href="">asd</a>
schrieb
am 11.12.2009 um 10:58 Uhr
</div>

<p>asdasdd</p>


</div>
<br />
<div class="post">

<div class="titel">
16 - <a target="blank" href="">asd</a>
schrieb
am 11.12.2009 um 10:58 Uhr
</div>

<p>asd</p>


</div>
<br />
<div class="post">

<div class="titel">
15 - <a target="blank" href="">Fucks</a>
schrieb
am 11.12.2009 um 10:58 Uhr
</div>

<p>Danke für das rote Fell</p>

</div>
<br />
<div class="post">

<div class="titel">
14 - <a target="blank" href="">Tester</a>
schrieb
am 11.12.2009 um 10:57 Uhr
</div>

<p>Jaaa freu mich halt</p>


</div>
<br />
<div class="post">

<div class="titel">
13 - <a target="blank" href="">tester</a>
schrieb am 11.12.2009 um 08:49 Uhr
</div>

<p>Danke für meine Intelligenz!</p>


</div>
<br />
<p><br />Es wurde <strong>6</strong> mal geschrieben!</p>
<br /><br />
<a href="#">Admin</a>

</body>
</html>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben