Gå til innhold

Spørsmål om XHTML og XML [LØST]


Anbefalte innlegg

Videoannonse
Annonse

Men driver å prøver meg med stil skiftings scriptet til lokaltog.

 

Jeg får XML error på denne kodesnutten

<?php
foreach($styles as $tittel => $filnavn)
{
   echo '
<a href="'.$self.'?'.htmlspecialchars($query). '&stilark='.$filnavn.'" />'. $tittel .'</a><br />';
}
?>

 

XML sier at jeg mangler en </div>, men det stemmer ikke!

 

HTML

<body>

<div id="side">
 <div class="head">
  </div>
   <div class="meny">
    <ul class="lister">
     <li class="lister">
    <a href="index.php?side=oss">Om oss</a></li>
     <li><a href="index.php?side=produksjon">Produksjon</a></li>
    <li><a href="index.php?side=#">#</a></li>
   <li><a href="index.php?side=kontakt">Kontakt</a></li>
 <li><a href="index.php?side=gjestebok">Gjestebok</a></li>
</ul>

<p>
<h3>Farger/temaer:</h3>
</p>

<?php
foreach($styles as $tittel => $filnavn)
{
   echo '
<a href="'.$self.'?'.htmlspecialchars($query). '&stilark='.$filnavn.'" />'. $tittel .'</a><br />';
}
?>

</div>

 

noen som veit løsningen?

 

-Dan

Lenke til kommentar
<form />

og

onclick="window.open(this.href,'_blank');return false;"

 

fikser biffen

form-elementet trenger ikke å lukkes på denne måten, siden det både har en start-tag og slutt-tag. (<form> Innhold i skjemaer </form>)

 

 

Vær obs på å ha korrekt URI, og ikke "#", som verdi i href-attributten når javascript brukes til å simulere et popup-vindu:

 

<a href="http://example.org/2005/" onclick="window.open(this.href='http://example.org/','_blank');return false;">http://example.org/2005/</a>

Lenke til kommentar

En begynnelse måtte være å fjerne header()-feilen som kommer helt på toppen av dokumentet ditt.

 

Edit: den delen av scriptet mitt som lager linker til skifteren må stå inni en div, p eller et liknende element.

Edit 2: i tillegg ser det ut til at du ikke har lukket alle div-elementene dine.

Endret av Lokaltog
Lenke til kommentar

Nå står linkene som skal skifte stiler inni et <p> element, men som du ser så spør den nå etter et </p> element! Hva mente du med header() feilen?

 

Jeg har da lukket alle <div>ene mine! Tror jeg.

 

Her er hele koden

<?php
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']))
header('Content-Type: text/html; charset=iso-8859-1');
else
header('Content-Type: application/xhtml+xml; charset=iso-8859-1');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <?php
$stilark = & $_GET['stilark'];
$self    = & $_SERVER['PHP_SELF'];
$query   = & $_SERVER['QUERY_STRING'];
$styles = array(
   "Grønn/orange" => "alternativstyle",
   "Blå/orange" => "style"
);

$standard = 'style';

if($_COOKIE['stil'] && empty($stilark))
{
   $stil = $_COOKIE['stil'];
}
elseif(!empty($stilark))
{
   setcookie("stil", $stilark, time() + 14400000);
   $stil = $stilark;
   unset($_GET['stilark']);
   foreach ($_GET as $key => $value)
   {
       $newquery .= "&$key=$value";
   }
   header("Location: $self?$newquery");
}
else
{
   setcookie("stil", $standard, time() + 14400000);
   $stil = $standard;
}
?>
<html xml:lang="no" xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Åsnes Gård</title>
<meta name="keywords" content="Pottis, poteter, gård, traktor, spade, korn, åsnes" />
<meta name="description" content="Åsnes Gård" />
<meta name="revised" content="Dan Lagergren, 2005-01-22" />
<?php
echo '
<link
   rel="stylesheet"
   type="text/css"
   href="style/'. $stil .'.css"
   media="screen" />

';


foreach($styles as $tittel => $filnavn)
{
   echo '
   <link
   rel="alternate stylesheet"
   type="text/css"
   href="css/'. $filnavn .'.css"
   title="'. $tittel .'"
   media="screen" />

';

}
?>
</head>
<body>

<div id="side">

<div class="head">
  </div>
  
<div class="meny">
    <ul class="lister">
     <li class="lister">
    <a href="index.php?side=oss">Om oss</a></li>
     <li><a href="index.php?side=produksjon">Produksjon</a></li>
    <li><a href="index.php?side=#">#</a></li>
   <li><a href="index.php?side=kontakt">Kontakt</a></li>
 <li><a href="index.php?side=gjestebok">Gjestebok</a></li>
</ul>
 
<p>
<h3>Farger/temaer:</h3>


<?php
foreach($styles as $tittel => $filnavn)
{
   echo '
<a href="'.$self.'?'.htmlspecialchars($query). '&stilark='.$filnavn.'" />'. $tittel .'</a><br />';
}
?>
</p>
</div>

 <div class="innehold">
 <?php
 $filnavn = $_GET['side'];
 $fil = '.php';
 if (isset($filnavn)) {
 if (eregi("^[a-z0-9]+$", $filnavn)) {
 include $filnavn . $fil;
 }
 else {
 include "404.php";
 }
 }
 else {
 include "oss.php";
 }
 ?>
 </div>

<div id="footer">
<span class="text_footer_vali">
Webmaster | <a href="mailto:[email protected]">Dan S. Lagergren</a> | Design | <a href="http://www.danweb.cjb.net">www.danweb.cjb.net</a><br />
<a href="http://jigsaw.w3.org/css-validator/">css2</a> | 
<a href="http://validator.w3.org/check?uri=referer">xhtml 1.1</a> 
</span>
</div>

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


Lenke til kommentar

headerfeilen skyldes at output sendes før HTTP-headerne. Det står i guiden min at denne kodeblokken MÅ stå før all output (dvs. før all HTML):

<?php
$stilark = & $_GET['stilark'];
$self    = & $_SERVER['PHP_SELF'];
$query   = & $_SERVER['QUERY_STRING'];
$styles = array(
  "Grønn/orange" => "alternativstyle",
  "Blå/orange" => "style"
);

$standard = 'style';

if($_COOKIE['stil'] && empty($stilark))
{
  $stil = $_COOKIE['stil'];
}
elseif(!empty($stilark))
{
  setcookie("stil", $stilark, time() + 14400000);
  $stil = $stilark;
  unset($_GET['stilark']);
  foreach ($_GET as $key => $value)
  {
      $newquery .= "&$key=$value";
  }
  header("Location: $self?$newquery");
}
else
{
  setcookie("stil", $standard, time() + 14400000);
  $stil = $standard;
}
?>

Endret av Lokaltog
Lenke til kommentar

Ahh.. dumme meg :wallbash:

 

men hvis du føger linken nå står det at jeg sender header 2 ganger,? Er litt grønn på dette med header info!

 

kode

 <?php
$stilark = & $_GET['stilark'];
$self    = & $_SERVER['PHP_SELF'];
$query   = & $_SERVER['QUERY_STRING'];
$styles = array(
   "Grønn/orange" => "alternativstyle",
   "Blå/orange" => "style"
);

$standard = 'style';

if($_COOKIE['stil'] && empty($stilark))
{
   $stil = $_COOKIE['stil'];
}
elseif(!empty($stilark))
{
   setcookie("stil", $stilark, time() + 14400000);
   $stil = $stilark;
   unset($_GET['stilark']);
   foreach ($_GET as $key => $value)
   {
       $newquery .= "&$key=$value";
   }
   header("Location: $self?$newquery");
}
else
{
   setcookie("stil", $standard, time() + 14400000);
   $stil = $standard;
}
?>

<?php
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']))
header('Content-Type: text/html; charset=iso-8859-1');
else
header('Content-Type: application/xhtml+xml; charset=iso-8859-1');   ||||||38||||
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xml:lang="no" xmlns="http://www.w3.org/1999/xhtml">

<head>

 

står at feilen er på linje 38

Lenke til kommentar

Om du ser på linje 1 i koden din så er det en tom linje, den må vekk. Deretter rundt linje 34 er det på ny et "hvittegn" (mellomrom, linjeskift, etc).

 

INGEN slike ting kan du ha før du sender ut en header ellers skjærer alt seg. Tingen er det at du sender 2 forskjellige headere, men du sender begge etter at du har startet å sende ting til klienten og ettersom header informasjon er det første som må sendes (se PHP dokumentasjon) oppstår det problemer når du prøver å sende det etterpå.

 

Coq Rouge (gjør alltid samme feil selv)

Lenke til kommentar

Jeg er ikke sikker på hvordan jeg skal kunne sende de andre header'ene før, når stilskift scriptet skal ligge helt på toppen?

 

her er koden

<?php
$stilark = & $_GET['stilark'];
$self    = & $_SERVER['PHP_SELF'];
$query   = & $_SERVER['QUERY_STRING'];
$styles = array(
   "Grønn/orange" => "alternativstyle",
   "Blå/orange" => "style"
);
$standard = 'style';

if($_COOKIE['stil'] && empty($stilark))
{
   $stil = $_COOKIE['stil'];
}
elseif(!empty($stilark))
{
   setcookie("stil", $stilark, time() + 14400000);
   $stil = $stilark;
   unset($_GET['stilark']);
   foreach ($_GET as $key => $value)
   {
       $newquery .= "&$key=$value";
   }
   header("Location: $self?$newquery");
}
else
{
   setcookie("stil", $standard, time() + 14400000);
   $stil = $standard;
}
?>
<?php
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']))
header('Content-Type: text/html; charset=iso-8859-1');
else
header('Content-Type: application/xhtml+xml; charset=iso-8859-1');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="no" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Åsnes Gård</title>
<meta name="keywords" content="Pottis, poteter, gård, traktor, spade, korn, åsnes" />
<meta name="description" content="Åsnes Gård" />
<meta name="revised" content="Dan Lagergren, 2005-01-22" />
<?php
echo '
<link
   rel="stylesheet"
   type="text/css"
   href="style/'. $stil .'.css"
   media="screen" />

';


foreach($styles as $tittel => $filnavn)
{
   echo '
   <link
   rel="alternate stylesheet"
   type="text/css"
   href="css/'. $filnavn .'.css"
   title="'. $tittel .'"
   media="screen" />

';

}
?>
</head>
<body>

<div id="side">
 <div class="head">
  </div>
   <div class="meny">
    <ul class="lister">
     <li class="lister">
    <a href="index.php?side=oss">Om oss</a></li>
     <li><a href="index.php?side=produksjon">Produksjon</a></li>
    <li><a href="index.php?side=#">#</a></li>
   <li><a href="index.php?side=kontakt">Kontakt</a></li>
 <li><a href="index.php?side=gjestebok">Gjestebok</a></li>
</ul>
 
<p>
<h3>Farger/temaer:</h3>


<?php
foreach($styles as $tittel => $filnavn)
{
   echo '
<a href="'.$self.'?'.htmlspecialchars($query). '&stilark='.$filnavn.'" />'. $tittel .'</a><br />';
}
?>
</p>
</div>

 <div class="innehold">
 <?php
 $filnavn = $_GET['side'];
 $fil = '.php';
 if (isset($filnavn)) {
 if (eregi("^[a-z0-9]+$", $filnavn)) {
 include $filnavn . $fil;
 }
 else {
 include "404.php";
 }
 }
 else {
 include "oss.php";
 }
 ?>
 </div>

<div id="footer">
<span class="text_footer_vali">
Webmaster | <a href="mailto:[email protected]">Dan S. Lagergren</a> | Design | <a href="http://www.danweb.cjb.net">www.danweb.cjb.net</a><br />
<a href="http://jigsaw.w3.org/css-validator/">css2</a> | 
<a href="http://validator.w3.org/check?uri=referer">xhtml 1.1</a> 
</span>
</div>
</div>
</body>
</html>


 

Er som sagt ikke så god på PHP:no:

 

takk for eventulle svar

Lenke til kommentar

Spiller ingen rolle hvilken som ligger øverst, så lenge headerne sendes før all output. Prøv å forandre hele den øverste kodeblokken din til dette:

<?php
// Stilskifter her
$stilark = & $_GET['stilark'];
$self    = & $_SERVER['PHP_SELF'];
$query   = & $_SERVER['QUERY_STRING'];
$styles = array(
  "Grønn/orange" => "alternativstyle",
  "Blå/orange" => "style"
);
$standard = 'style';

if($_COOKIE['stil'] && empty($stilark))
{
  $stil = $_COOKIE['stil'];
}
elseif(!empty($stilark))
{
  setcookie("stil", $stilark, time() + 14400000);
  $stil = $stilark;
  unset($_GET['stilark']);
  foreach ($_GET as $key => $value)
  {
      $newquery .= "&$key=$value";
  }
  header("Location: $self?$newquery");
}
else
{
  setcookie("stil", $standard, time() + 14400000);
  $stil = $standard;
}

// Browser-sniffing her:
if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']))
header('Content-Type: text/html; charset=iso-8859-1');
else
header('Content-Type: application/xhtml+xml; charset=iso-8859-1');
?>

Lenke til kommentar

Har nå prøvd din verson Lokaltog, men jeg får XML error på stil skifteren din..

 

kode (tar nå bare med <body>)

 

<body>

<div id="side">
 <div class="head">
  </div>
   <div class="meny">
    <ul class="lister">
     <li class="lister">
    <a href="index.php?side=oss">Om oss</a></li>
     <li><a href="index.php?side=produksjon">Produksjon</a></li>
    <li><a href="index.php?side=#">#</a></li>
   <li><a href="index.php?side=kontakt">Kontakt</a></li>
 <li><a href="index.php?side=gjestebok">Gjestebok</a></li>
</ul>
 
<p>
<h3>Farger/temaer:</h3>


<?php
foreach($styles as $tittel => $filnavn)
{
   echo '
<a href="'.$self.'?'.htmlspecialchars($query). '&stilark='.$filnavn.'" />'. $tittel .'</a><br />';
}
?>
</p>
</div>

 <div class="innehold">
 <?php
 $filnavn = $_GET['side'];
 $fil = '.php';
 if (isset($filnavn)) {
 if (eregi("^[a-z0-9]+$", $filnavn)) {
 include $filnavn . $fil;
 }
 else {
 include "404.php";
 }
 }
 else {
 include "oss.php";
 }
 ?>
 </div>

<div id="footer">
<span class="text_footer_vali">
Webmaster | <a href="mailto:[email protected]">Dan S. Lagergren</a> | Design | <a href="http://www.danweb.cjb.net">www.danweb.cjb.net</a><br />
<a href="http://jigsaw.w3.org/css-validator/">css2</a> | 
<a href="http://validator.w3.org/check?uri=referer">xhtml 1.1</a> 
</span>
</div>
</div>
</body>

 

LINK til siden

 

Skjønner ikke dette :hmm: Har satt stilskift linkene inn i et <p> element, men får error ennå!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...