If else Anweisung mit 3 Bedingungen

Egoiste

Grünschnabel
Hi.

Ich komme einfach nicht weiter. Ich habe in meinem Magazin 3 Kategorien: News; Artikel und Blog. Ich habe für mein Magazin eine inc.header.php wo auch die Meta Angaben drin sind.

Ich kann bei der Erstellung eines Artikels, einer News oder eines Blogs immer eine Meta Beschreibung und auch die passenden Keywords eingeben. Die Kategorie Blog ist neu hinzugekommen. Bei den beiden Kategorien News und Artikel klappte die Zuordnung der Meta Angaben ohne Probleme, doch mit der 3 und neuen Kategorie funktioniert es nicht. Die Angaben bleiben leer! Wie bekomme ich die Abfrage für die 3. Kategorie hin? Kann mir jemand helfen? ;-)

PHP:
			if ($row = $dblink->get_row("SELECT titolo,description,keywords,fullscreen,rank,enabled FROM pm_news WHERE nome='$news'")) {
				$pagetitle = outCode($row['titolo']);
				$fullScreen = intval($row['fullscreen']);			
				$pgkw = outCode($row['keywords']);
				$pgds = outCode($row['description']);
				$rankPage =  intval($row['rank']);
				$enabledPage = intval($row['enabled']);
				$sitetitle .= $pagetitle." | ";
				$virtualpagerequest = false;
			} else if ($row = $dblink->get_row("SELECT title,content,description,keywords,fullscreen,rank,enabled FROM pm_article WHERE name='$article'")) {
				$pagetitle = outCode($row['title']);
				$pageContent = outCodeVP($row['content']);
				$fullScreen = intval($row['fullscreen']);			
				$pgkw = outCode($row['keywords']);
				$pgds = outCode($row['description']);
				$rankPage =  intval($row['rank']);
				$enabledPage = intval($row['enabled']);
				$sitetitle .= $pagetitle." | ";
			} else if ($row = $dblink->get_row("SELECT ntitle,ncontent,description,keywords,fullscreen,rank,enabled FROM pm_blog WHERE name='$blog'")) {
				$pagetitle = outCode($row['ntitle']);
				$pageContent = outCodeVP($row['ncontent']);
				$fullScreen = intval($row['fullscreen']);			
				$pgkw = outCode($row['keywords']);
				$pgds = outCode($row['description']);
				$rankPage =  intval($row['rank']);
				$enabledPage = intval($row['enabled']);
				$sitetitle .= $pagetitle." | ";
			} else {
				$pgkw = "";
				$pgds = "";
				$fullScreen = 0;
				
			}
		} else {
			$pgkw = "";
			$pgds = "";
			$fullScreen = 0;
			
		}
		$sitetitle .= $siteConfig['site_name'];
		
		memRunHooks('SiteTitleEnd',array(&$sitetitle));
	}
	
	echo "<title>$sitetitle</title>\n";
	
	//===================================================
	//Meta tags
	//===================================================
	if (memRunHooks('MetaTags')) {
		if (!defined("_LANG_CHARSET_")) { define("_LANG_CHARSET_","utf-8"); }
		echo "<meta http-equiv='Content-Type' content='text/html;charset="._LANG_CHARSET_."'>\n";
		echo ($pgkw!="") ? "<meta name='keywords' content=\"$pgkw\">\n" : "<meta name='keywords' content='".$siteConfig['metatags']."'>\n" ;
		echo ($pgds!="") ? "<meta name='description' content=\"$pgds\">\n" : "<meta name='description' content='".$siteConfig['site_description']."'>\n" ;	
		echo "<meta name='robots' content='index, follow'>\n";
		echo "<meta name='revisit-after' content='1 days'>\n";
		echo "<base href='".$siteConfig['site_url']."/'>\n";
		
		memRunHooks('MetaTagsEnd');
	}
 
Läuft der Code überhaupt? Sieht so aus als ob die den ELSE Abschnitt doppelt drin hättest.
 
Ok, dann ist das da oben aber nur ein Teil des Codes! Es beginnt mit IF und endet mit 2 versetzten ELSE Abschnitten.

Was passiert wenn du dir die SQL Anweisung mal mit echo ausgeben lässt und sie dann direkt in der Datenbank testest?
 
Ja, ist nur der Teil mit der Abfrage.
Habe jetzt einfach mal die
echo "$pgkw\n";
echo "$pgds\n";
abgefragt.

Beim Blog bleibt die Seite weiss und bei den beiden anderen zeigt er mir die Keywords und die Beschreibung!
 
Geh mal her und nimm folgende Zeile zusätzlich auf:

PHP:
echo "SELECT ntitle,ncontent,description,keywords,fullscreen,rank,enabled FROM pm_blog WHERE name='$blog'";

Die Ausgabe kopierst du dann im phpMyAdmin und führst sie aus. Vielleicht ist ja in der SQL-Anweisung ein Fehler so das der IF-Block deshalb nicht ausgeführt wird.

Oder kann es sein das eine der anderen IF-Blöcke ausgeführt wird, dann aber kein Ergebnis liefert?
 
Also, die SQL Anbindungen stimmen, aber der IF-Block Blog gibt kein Ergebnis. Nur wenn ich den IF-Block News entferne stimmen die Meta-Angaben in der Blog Kategorie? Ich bin echt verwirrt!
 
Gib doch mal innerhalb jedes IF-Block eine echo Anweisung ein anhand der du erkennst welcher IF-Block durchlaufen wird und welcher nicht.

Wenn die SQL-Anweisungen korrekt sind, dann wird wohl die falsche Anweisung ausgeführt.

PHP:
<?php
$a = 5;

if ($a == 6) {
	echo "IF 1";
} else if ($a == 5) {
	echo "IF 2";
} else if ($a == 5) {
	echo "IF 3";
}
?>

In diesem Beispiel wird nie "IF 3" ausgegeben weil der 2. Block durchlaufen wird. So in etwa wird es bei dir auch sein.
 
Du hast recht, die Anweisung ist falsch. Wenn ich in der Kategorie News bin stimmen die Meta Angaben, so auch in der Kategorie Artikel, aber den IF-Block Blog durchläuft er nicht. Ich weiß nur nicht WARUM?
Werde wohl den inc.header aufgeben müssen und für jede Kategorie einen neuen machen und dann da die Metas abfragen. Oder hast du eine Idee?
 
Es wird immer nur ein Block durchlaufen, das ist so gewollt.

Du musst die Prüfung anders aufbauen indem du z.B. für jede Kategorie eine entsprechende Variabele oder einen entsprechenden Wert mitgibst.

Wenn ich den Ablauf besser kennen würde, könnte ich dir vielleicht besser helfen.
 
Zurück