Falsche Ausgabe

YStadler

Mitglied
Hallo,

mal wieder ein kleines Problem, wo ich grade vor lauter Code nicht mehr durchsteige.
Baue mir ein kleines CMS für mich selbst und bin noch ganz am Anfang.
Ich erstelle mir grade den <head>, wo ich die Metas und den Titel automatisch auslesen lassen möchte.
Klappt auch alles ganz gut, nur wenn ich das ganze ausgebe, ist die Reihenfolge ganz falsch.
Mal der Code und dann was ausgegeben wird:

PHP:
function pagetitel() {
	$result = mysql_query("SELECT * FROM settings WHERE name='pagetitle'");
	$pagetitle = mysql_fetch_array($result); $pagetitle = $pagetitle['value'];
	
	echo $pagetitle;
}
function meta() {
	$result = mysql_query("SELECT * FROM meta WHERE meta='description'");
	$meta = mysql_fetch_array($result); $description = $meta['value'];
	$result = mysql_query("SELECT * FROM meta WHERE meta='keywords'");
	$meta = mysql_fetch_array($result); $keywords = $meta['value'];
	$result = mysql_query("SELECT * FROM meta WHERE meta='author'");
	$meta = mysql_fetch_array($result); $author = $meta['value'];
	$result = mysql_query("SELECT * FROM meta WHERE meta='email'");
	$meta = mysql_fetch_array($result); $email = $meta['value'];
	
	echo'
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="content-language" content="de" />
		<meta name="description" content="'.$description.'" />
		<meta name="keywords" content="'.$keywords.'" />
		<meta name="author" content="'.$author.'" />
		<meta name="copyright" content="Stadler-Design, www.stadler-design.de" />
		<meta name="page-type" content="Private Homepage" />
		<meta http-equiv="reply-to" content="'.$email.'" />
		<meta name="revisit-after" content="2 days" />
	';
}
function kopf() {
	echo'
		<!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">
		<head>
		'.meta().'
		<title>'.pagetitel().'</title>
		<link rel="stylesheet" href="style/sheet.css" type="text/css" />
		</head>
		<body>
	';
}

HTML:
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="content-language" content="de" />
		<meta name="description" content="Dies ist die Testversion von dem CMS Stade aus dem Hause Stadler. Die derzeitige Version ist 1.0" />
		<meta name="keywords" content="Stadler, Design, Yannic, Webdesign, Programmierung, CMS, Stade, 1.0" />
		<meta name="author" content="Yannic Stadler" />
		<meta name="copyright" content="Stadler-Design, www.stadler-design.de" />
		<meta name="page-type" content="Private Homepage" />
		<meta http-equiv="reply-to" content="info@yannic-stadler.de" />

		<meta name="revisit-after" content="2 days" />
	Das ist eine Testseite
		<!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">
		<head>
		
		<title></title>
		<link rel="stylesheet" href="style/sheet.css" type="text/css" />
		</head>
		<body>

Woran kann das liegen?
LG und danke schonmals :)
 
Die meta()-Funktion gibt die Daten auch direkt aus und nicht als Rückgabewert wieder.
 
Entweder du probierst es mit return, oder aber du gibst die Funktion mit einem eigenen echo aus also:

PHP:
function kopf() {
    echo'
        <!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">
        <head>';
        echo''.meta().'';

        echo'<title>';
echo''.pagetitel().';'
echo'</title>
        <link rel="stylesheet" href="style/sheet.css" type="text/css" />
        </head>
        <body>
    ';
}

Ich seh gerade, du hast die return Variante benutzt die folgende Frage bleibt:

Ich habe aber mal eine Frage, hat es einen speziellen Sinn, dass du für jeden Wert einen neuen query startes? Wozu benutzt Du denn mysql_fetch_array (im übrigen solltest du mysql_fetch_assoc nehmen, da es Resourcenschonender ist).
 
Zuletzt bearbeitet:
Hmm mir fällt grade noch etwas dabei auf.
Wenn ich das ganze als Schleife (for/while) mache,
bricht das doch ab, wenn ich da jetzt PHP.net richtig verstanden habe.

Wie soll ich es denn sonst machen?
Muss doch einen neuen Query starten oder?
Wird ja jedesmal was anderes ausgelesen.

LG
 
Ich habe da auch nochmal drüber nachgedacht und ich glaube, dass das Problem bei deiner DB-Struktur ist, wie ist deine Tabelle denn aufgebaut?
 
also meine Tabelle ist in 2 spalten nur aufgebaut (meta & value)
und die verschiedenen metatags lese ich dann aus:

meta ------------- value
description -------- Das ist eine Seite
keywords ---------- Seite, Homepage, ....
author --------------- Ich

Wusste nicht wie ich das anders aufbauen sollte.

LG
 
Das ist natürlich kein Vorteilhafter aufbau...

Wenn Du die Tabelle so aufbaust:

id +++ description +++ keywords +++ author
1 Das ist eine Seite dein words das bin ich


kannst Du mir nur einem query auf alles zugreifen. also:

PHP:
$res = mysql_query("SELECT * FROM Tabelle");
$row= mysql_fetch_assoc($res);

// und dann ganz einfach:

$row['description']

$row['keywords']

$row['autho']
 
Zurück