• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

mehrfache Überprüfung bei Datenbankabfrage

Als Basis dafür nehme ich folgenden Code :
Code:
<?php
if ( $sectionid == 0) {
   Bereits vorhandener Code - der Übersicht halber weggelassen
} else {
   Code welcher zwei Felder Kontollieren, und den Wert eines dritten Feldes ausgeben soll
}
?>


If tritt nur ein, wenn es sich um einen Bericht handelt, es tritt nicht ein, wenn es eine Inhaltsangabe ist. Ist das die Regel erfüllt, wird eine Datenbankabfrage gemacht, und ein Ergebnis angezeigt. Dabei handelt es sich z.B. um das Datum. Wird die Regel nicht erfüllt, fehlt die Datumsangabe. Dort soll dann das Datum aus aktuellste Bericht der in diesem Inhaltsverzeichnis angezeigt werden.
Was hinter else kommt ist das Problemkind.

Die Contenttabelle in MySQL führt alle Berichte auf, sowohl die News von 2005 und 2006. Das Inhaltsverzeichnis ist als Category News 2006 als Section News.
Die Abfrage müsste so sein, dass sie nur in dem Inhaltsverzeichnis mit übereinstimmenden Section/Categorien sucht. Das wären dann die id's aus der Spalte sectionid und catid. In beiden Fällen wäre es 1. Der Code soll aber heraussuchen, um welche Section und Categorry es sich handelt, dann bleiben nur noch die Berichte aus der Tabelle übrig, die im Inhaltsverzeichnis angezeigt werden. Jetzt gilt es nur noch das aktuellste Datum herauszufinden, und dann anzuzeigen.

Wie sieht der Code, bzw die Codeteile aus, der in die Klammer nach dem else reinkommt.
 
Hier die Struktur von jos_content:
db-struxtur-content.jpg

section und category kann ich bei Bedarf auch posten.
 
Ich bin ein Stück weiter:
Code:
$query = "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid";

Hier erhalte ich mehrere "Introtexte" die in der section sind. Erweitere ich das:

Code:
$query = "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' ORDER BY  catid ";

Wird nach der catid von oben die kleinste das Ergebnis runter gezählt. Ich müsste jetzt irgendwie einen weiteren Wert habe.

Es sei noch erwähnt, dass der "else" Code eingebunden ist und funktioniert. Also Teil 1 super klappt, Teil 2 aber wie beschrieben hapert.

Code:
<?php
{Teil1
} else {
 Teil2
}
?>
 
Folgende Zeile ändern:

Code:
$query = "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' AND catid = '$id'";

Dann funktioniert es .
 
Das Ergebnis des obenangezeigten Codes ist:

Code:
<?php
global $database;

$id = mosGetParam( $_REQUEST, 'id', 'com_content', 'sectionid', 'catid' );

if ( $sectionid == 0 ) {
$query = "SELECT introtext FROM `jos_content` WHERE id='$id' ";
} else {
$query = "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' AND catid = '$id'";
}
$result = mysql_query($query) ;

/* Ausgabe der Ergebnisse in HTML */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td><div class=\"grauzone\">$col_value</div></td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

/* Freigeben des Resultsets */
mysql_free_result($result);
?>
 
Oben