• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

DOCTYPE nach php?

annex

New member
ich hab eine site mit php code und anschließendem html.
das soll möglichst valide nach css und xhtml sein.
dementsprechend hab ich im dokument zuerst den php-code aufgeführt und anschließend mittels doctype die site definiert:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de" />


trotzdem erkennt der html-validator den doctype nicht.
wo muss der doctype hin, damit er korrekt erkannt wird?

der betreffende code:

PHP:
<?PHP

//--- folgendes anpassen:
$letzte_seite = 13; //wie viele Seiten hat die Umfrage?
$weiterleitung = "danke.htm";


if ($seite < 1)
	{
	$url="formular1.htm";
	}

if($_POST)
	{

//--- fortlaufende Nummerierung der Teilnehmer
//--- Initialisierung nur auf der ersten Seite nötig!

if ($seite < 1)
	{	
	$seite = 1;
	$datei = fopen("pointer.txt", "r");
	$teilnehmer = fgets($datei, 128);
	fclose($datei);
	
	$teilnehmer = $teilnehmer + 1;
	
	$datei = fopen("pointer.txt", "w");
	fwrite ($datei,$teilnehmer);
	}


//--- allgemeiner Teil
//--- Datenübergabe vorbereiten

$seite = $seite + 1;
if ($seite > $letzte_seite)
	{
	$url = $weiterleitung;
	}
else
	{
	$url= "formular".$seite.".htm";
	}


//--- Datenformatierungen

$strDelimiter  = ";";
$miss = "0";


//--- Formularauswertung ...

$filename = "teilnehmer_".$teilnehmer.".csv";

 	$strMailtext = "";
	while(list($strName, $value) = each($_POST))
 		{
  		if(is_array($value))
  			{
   			foreach($value as $value_array)
   					{
					IF ($strName !== "teilnehmer")
						{
						IF ($strName !== "seite")
							{
    							$case .= $value_array.$strDelimiter;
							}
						}
   					}
  			}			
  		else
  			IF ($strName !== "teilnehmer")
						{
						IF ($strName !== "seite")
							{
    							$case .= $value.$strDelimiter;
							}
						}
 		}

 	if(get_magic_quotes_gpc())
 		{
  		$case = stripslashes($case);
 		}


//--- ... Speichern ... ("./" damit die serverrechte eingehalten werden) 

	$handle = fopen("./$filename", "a");
	fwrite ($handle, $case);
	fclose($handle);

	}


if ($seite > $letzte_seite)
	{
	header("location: $url");
	}


?>

<?xml version="1.0" encoding="iso-8859-1"?> <!-- test -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de" />

<head>
...
</html>
 
Zuletzt bearbeitet von einem Moderator:
Der Validator erkennt Deinen XML-Prolog nicht, da er ihn noch für PHP-Code hält.
PHP:
<?php
Dein PHP-Code
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n";
?>

Nächstes Mal bitte Codetags benutzen!
 
Zuletzt bearbeitet:
Der Validator erkennt Deinen XML-Prolog nicht, da er ihn noch für PHP-Code hält.
PHP:
<?php
Dein PHP-Code
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n";
?>

du meinst der php-code wird nicht korrekt mit ?> abgeschlossen?

aber er lautet doch:
PHP:
<?PHP 
(php-code)
?>

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de" />

wäre er nicht abgeschlossen, würde verhindert werden, dass das nächste formular geöffnet wird.

p.s. danke für den hinweis
Nächstes Mal bitte Codetags benutzen!
 
Schau Dir mal an, wie ein PHP-Script begonnen und beendet wird.
Dann schau Dir an, wie ein XML-Prolog begonnen und beendet wird.
 
die datei-endung ist .php
darin hab ich php-code und anschließend html-code (mit css-design-elementen).
durch die endung .php kann ich kein xml mittels <? beginnen. ok, verstanden.
also kein <?xml version="1.0" encoding="UTF-8"?>

welche faustregeln gibt es, welchen doctype oder welches coding ich statt dessen verwenden sollte, um valide zu bleiben?
 
Ich hatte Dir doch schon die Lösung gepostet!
PHP:
<?php
Dein PHP-Code
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n";
?>
Und nach dem Prolog fügst Du ganz normal den Doctype ein.


By the way:
Den XML-Prolog kannst Du auch getrost weglassen.
Zudem switcht der IE 5.5+6 dadurch in den Quirks-Mode.
 
die site wird firmenintern ausschließlich mit dem IE geöffnet (99.9%)
also drauf ges...
ich geh zurück zu 4.01 transitional :icon8:
 
Ach, was mir jetzt erst auffällt: Der Backslash ist unzulässig!
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de" />

Und nach xhtml1-transitional.dtd" fehlt das abschließende >
 
Zurück
Oben