Select distinct und Titel aus medienpool auslesen
Verfasst: 29. Apr 2016, 11:25
Liebe Redaxo-Gemeinde
Ich habe mit yform eine Produkte-Datenbank erstellt. Zu jedem Produkt kann man 1 oder mehrere PDF's hinzufügen. Nun mache ich zusätzlich eine Seite, auf der alle diese PDF's nochmals aufgelistet werden, also quasi eine Download-Übersicht. Weil das selbe PDF teilweise mehreren Produkten zugewiesen wird, setzte ich für die DB-Abfrage DISTINCT ein.
Das funktioniert soweit sehr gut, alle PDF's werden nur 1x aufgelistet. Jetzt ist es unschön, dass der FIlename angezeigt wird und nicht den Title aus dem Medienpool. Hierzu wollte ich nun einfach
hinzufügen.
Somit würde der Code dann so aussehen:
Leider erscheint aber beim Aufruf der Seite dieser Fehler:
"ErrorException" thrown in rex:///module/25/output on line 15
Fatal error: Call to a member function getTitle() on null
Dieser Teil müsste aber korrekt sein, oder?
Ich habe mit yform eine Produkte-Datenbank erstellt. Zu jedem Produkt kann man 1 oder mehrere PDF's hinzufügen. Nun mache ich zusätzlich eine Seite, auf der alle diese PDF's nochmals aufgelistet werden, also quasi eine Download-Übersicht. Weil das selbe PDF teilweise mehreren Produkten zugewiesen wird, setzte ich für die DB-Abfrage DISTINCT ein.
Code: Alles auswählen
<?php
$db_table = "rex_products";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery("SELECT DISTINCT product_download FROM $db_table ");
if($sql->getRows()) {
while($sql->hasNext()) {
$dateiliste = explode(',', $sql->getValue('product_download'));
echo '<p>';
foreach ($dateiliste as $file) {
$media = rex_media::get($file);
if($media) {
echo '<a class="mbr-download__link" target="_blank" href="media/'.$file.'"><i class="fa fa-file-pdf-o" aria-hidden="true"></i> '.$file.'</a><br>';
}
}
echo '</p>';
$sql->next();
}
}
?>
Code: Alles auswählen
$title = $media->getTitle();
hinzufügen.
Somit würde der Code dann so aussehen:
Code: Alles auswählen
<?php
$db_table = "rex_products";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery("SELECT DISTINCT product_download FROM $db_table ");
if($sql->getRows()) {
while($sql->hasNext()) {
$dateiliste = explode(',', $sql->getValue('product_download'));
echo '<p>';
foreach ($dateiliste as $file) {
$media = rex_media::get($file);
$title = $media->getTitle();
if($media) {
echo '<a class="mbr-download__link" target="_blank" href="media/'.$file.'"><i class="fa fa-file-pdf-o" aria-hidden="true"></i> '.$title.'</a><br>';
}
}
echo '</p>';
$sql->next();
}
}
?>
"ErrorException" thrown in rex:///module/25/output on line 15
Fatal error: Call to a member function getTitle() on null
Dieser Teil müsste aber korrekt sein, oder?
Code: Alles auswählen
$title = $media->getTitle();