Zum Inhalt springen

Datensätze filtern und Ergebnisse verteilen

Erstellt am 23. August 2005 · 1 Antwort · letzte Antwort am 4. September 2005

Tags: Datenbank, Frage

heureka ·

Hallo,

bezugnehmend auf Beispiel 11-15 von "Praxiswissen Typo3" habe ich gelernt, wie das Ergebnis EINER Datenbankabfrage auf einer Seite angezeigt wird.
Diese Abfrage würde ich gerne um zusätzliche Filtervariablen erweitern, die mir jeweils unterschiedliche Ergebnisse auf unterschiedlichen Seiten ausgeben sollen. Wenn es z.B. in der Tabelle "user_rmmitarbeiter_main" also neben den Snowboard-Lehrern noch andere Mitarbeiter wie z.B. Ski-Lehrer gäbe, dann sollen die aus der Tabelle gefiltert und das Ergebnis auf einer anderen Seite dargestellt werden.

Ist sowas mit einer Anpassung der Extension und/oder des templates überhaupt machbar, und falls ja, hat eine(r) die Idee?

Hier der Ausgangscode:

<?php
function main($content,$conf) {
$this->conf=$conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
$this->pi_USER_INT_obj=1; // Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!

// Variablen setzen
$content = "";
$marker = array();
$img_pfad = "uploads/tx_userrmmitarbeiter/";

// Die Designvorlage laden
$tmpl = $this->cObj->fileResource($conf["templateFile"]);

// Die Datenbank ansprechen und in einer Schleife ausgeben
$query = "SELECT * FROM user_rmmitarbeiter_main";
$query.= " WHERE deleted = 0 AND hidden = 0";

$res = mysql(TYPO3_db,$query);
while($row = mysql_fetch_assoc($res)) {

// Ein Array mit Platzhaltern als Schlüssel mit den Werten füllen
$marker["###NAME###"] = $row["vorname"]." ".$row["nachname"];
$marker["###BILD###"] = $row["bild"];
$content .= $this->cObj->substituteMarkerArrayCached($tmpl, $marker);

// Das Bild auslesen und verarbeiten
$conf["bild."]["10."]["file"]= $img_pfad.$row["bild"];
if ($this->cObj->fileResource($img_pfad.$row["bild"])) {
$marker["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild"], $conf["bild."]);
} else {
$marker["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild_default"], $conf["bild_default."]);
}

}
// Ergebnis ausgeben
return $content;
}
}

if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/user_pmrubrik/pi1/class.user_pmrubrik_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/user_pmrubrik/pi1/class.user_pmrubrik_pi1.php"]);
}

?>

Vorab besten Dank,
heureka

anj ·

So weit ich dich richtig verstanden habe ...

Du hast eine Tabelle:
user_rmmitarbeiter_main

diese hat angenommen eine Spalte: mitarbeiter
Damit kannst du deinen DB-Anfrage erweitern z.b.

 // Die Datenbank ansprechen und in einer Schleife ausgeben
$query = "SELECT * FROM user_rmmitarbeiter_main";
$query.= " WHERE deleted = 0 AND hidden = 0 and mitarbeiter = 'skilehrer'";

oder

 // Die Datenbank ansprechen und in einer Schleife ausgeben
$query = "SELECT * FROM user_rmmitarbeiter_main";
$query.= " WHERE deleted = 0 AND hidden = 0 and mitarbeiter like 'ski%'";

damit könntest du dir z.b. mehrer anfragen machen .. oder du machst noch was anderes:

du hohlst dir alle daten wie du es jetzt machst ... und in deiner Schleife fragst du ab

 $res = mysql(TYPO3_db,$query);
while($row = mysql_fetch_assoc($res)) {

if ($row['mitarbeiter'] == 'skilehrer') 
{
// mache hier irgendwas für skilehrer
}
else {}

// bzw. bei mehreren Mitarbeitertypen bietet sich auch switch() an.

// Ein Array mit Platzhaltern als Schlüssel mit den Werten füllen
$marker["###NAME###"] = $row["vorname"]." ".$row["nachname"];
$marker["###BILD###"] = $row["bild"];
$content .= $this->cObj->substituteMarkerArrayCached($tmpl, $marker);

// Das Bild auslesen und verarbeiten
$conf["bild."]["10."]["file"]= $img_pfad.$row["bild"];
if ($this->cObj->fileResource($img_pfad.$row["bild"])) {
$marker["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild"], $conf["bild."]);
} else {
$marker["###BILD###"] = $this->cObj->cObjGetSingle($conf["bild_default"], $conf["bild_default."]);
}

viel Glück!

Gruss[/quote]