Fehler in PHP Script

madhead

Well-known member
ID: 6395
L
27 April 2006
1.035
25
Hallo,

bei folgendem Code wird meta - keywords und meta description aus der Datenbank bezogen aber irgendwie nicht in der html Seite ausgegeben.

Beim Title funktioniert es problemlos. Kann mir jemand bei diesem Fehler helfen?

Danke schon mal im voraus.

mfg. Madhead


PHP:
echo "<html><head><title>";

if($d=="artikel" && $id!=""){
echo $uct[titel]." - ".$wstitel;
}elseif($d=="kats" && $kat == "0" && $sub !=""){
echo "".$kati[metatitel]."";
}elseif($d=="kats" && $kat !=""){
echo "".$kati[metatitel]."";
}else{
echo $wstitel."  ".$wssbttl;
}

echo "</title><meta name=\"keywords\" content=\"";

if($d=="artikel" && $id!=""){
echo "".$uct[meta]."";
}elseif($d=="kats" && $kat == "0" && $sub !=""){
echo "".$kati[metakeywords]."";
}elseif($d=="kats" && $kat !=""){
echo "".$kati[metakeywords]."";
}else{
echo "Artikelverzeichnis,Promotion,Artikel schreiben,veröffentlichen";
}

echo "\"><meta name=\"description\" content=\"";

if($d=="artikel" && $id!=""){
echo "".$uct[metadescription]."";
}elseif($d=="kats" && $kat == "0" && $sub !=""){
echo "".$kati[metabeschreibung]."";
}elseif($d=="kats" && $kat !=""){
echo "".$kati[metabeschreibung]."";
}else{
echo "Artikelverzeichnis - Teilen Sie ihr Wissen Anderen mit, oder informieren Sie die Onlinewelt über interesante Webseiten .";
 
Zuletzt bearbeitet:
Wie werden denn $kati und $uct gefüllt? Was sagt denn var_dump() zu denen?

Und ganz abgesehen davon, dass vermutlich auch das restliche Script von Zwischenausgaben durchsetzt ist und es eh maximal ein Tropfen auf den heißen Stein ist... Vielleicht findest du ja Gefallen an einem etwas anderen Ansatz:
PHP:
$headvalsStandard = array(
  'title'       => $wstitel."  ".$wssbttl
 ,'keywords'    => "Artikelverzeichnis,Promotion,Artikel schreiben,veröffentlichen"
 ,'description' => "Artikelverzeichnis - Teilen Sie ihr Wissen Anderen mit, oder informieren Sie die Onlinewelt über interesante Webseiten ."
);
$headvals = $headvalsStandard;
if ($d == "artikel" AND $id != ""){
  $headvals['title']       = $uct['titel']." - ".$wstitel;
  $headvals['keywords']    = $uct['meta'];
  $headvals['description'] = $uct['metadescription'];
} elseif ($d == "kats" AND (($kat == "0" AND $sub != "") OR $kat != "")) {
  $headvals['title']       = $kati['metatitel'];
  $headvals['keywords']    = $kati['metakeywords'];
  $headvals['description'] = $kati['metabeschreibung'];
}    
$headvalTpls = array(
  '*'     => '<meta name="{key}" content="{val}" />'
 ,'title' => '<title>{val}</title>'
);
$headvalsHtml = array();
foreach ($headvals as $key => $val){        
  if (strlen(trim($val)) == 0){
    trigger_error('Für '.$key.' ist kein Wert übergeben worden!'); // Debug, im Produktivsystem rausnehmen.
    $val = $headvalsStandard[$key];
  } 
  $headval = (isset($headvalTpls[$key])) ? $headvalTpls[$key] : $headvalTpls['*'];
  $headval = str_replace('{key}', $key, $headval);
  $headval = str_replace('{val}', $val, $headval);
  $headvalsHtml[] = $headval;
}
echo '<html><head>'.implode("\n", $headvalsHtml).'</head>';
 
Ich wollte auch fragen ob die Variablen überhaupt definiert wurden.

Dann musste ich mit Erschrecken joschileins Vorschlag zur Kenntnis nehmen.
Meine Lösung ist nicht so Variabel und elegant, macht den Code (auch (nur)) übersichtlich. Ohne Aussagen zur Variablendefinition geht sonst nix
PHP:
<?
//Headeinträge definieren
$meta_title = $wstitel.'  '.$wssbttl;
$meta_keywords = 'Artikelverzeichnis,Promotion,Artikel schreiben,veröffentlichen';
$meta_description = 'Artikelverzeichnis - Teilen Sie ihr Wissen Anderen mit, oder informieren Sie die Onlinewelt über interesante Webseiten .';

if ($d == 'artikel' && $id != ''){
    $meta_title = $uct['titel'].' - '.$wstitel;
    $meta_keywords = $uct['meta'];
    $meta_description = $uct['metadescription'];
} elseif ($d == 'kats' && (($kat == '0' && $sub != '') || $kat != '')) {
    $meta_title = $kati['metatitel'];
    $meta_keywords = $kati['metakeywords'];
    $meta_description = $kati['metabeschreibung'];
} 

//HEAD ausgeben
echo '<html>

<head>
    <title>'.$meta_title.'</title>
    <meta name="keywords" content="'.$meta_keywords.'">
    <meta name="description" content="'.$meta_description.'">
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
';
?>
 
Hallo,


danke für eure Antworten! Ich hatte noch vergessen zu erwähnen, das ich von php so gut wie keine Ahnung habe...

Ich habe vor einiger Zeit mal etwas am script erweitern lassen,und habe gestern durch Zufall festgestellt, dass eben diese Angaben im Quellcode fehlen.

Meintet ihr diese Definitionen?

PHP:
}elseif($d=="kats" && $kat == "0" && $sub !=""){
$kres = mysql_query("SELECT * FROM artikelix_kats WHERE id='".$sub."'");
$kati = mysql_fetch_array($kres);
}elseif($d=="kats" && $kat != ""){
$kres = mysql_query("SELECT * FROM artikelix_kats WHERE id='".$kat."'");
$kati = mysql_fetch_array($kres);
}

Die stehen direkt über dem oben geposteten Schnipsel...

Danke! Madhead
 
Ich hole mal meine Glaskugel raus...

Irgendwo darüber steht sowas wie
PHP:
$kat = $_GET['kat'];
$sub = $_GET['sub'];
Stimmts? ;)