[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [gelöst] yform | Medialist ausgeben
Seite 1 von 1

[gelöst] yform | Medialist ausgeben

Verfasst: 31. Mär 2016, 16:54
von Fanello
Liebe Redaxo-Gemeinde

Ich habe in Redaxo 5 mit yform eine Tabelle "Referenz Objekte" ertellt. In diese Tabelle habe ich ein paar Textfelder (Titel, Ort, Beschreibung usw.) und eine Medialiste.

Nun möchte ich im Frontend diese Referenzen ausgeben, wobei jede Referenz aus eben diesen Text-Informationen (also z.B. Titel, Ort, Beschreibung) und einer Bildergalerie besteht.

Die einzelnen Text-Elemente kann ich problemlos ausgeben. Jedoch habe ich mit der Bildergalerie meine Mühe.

Das ist der bisherige Ansatz:

Code: Alles auswählen

<?php
$db_table = "rex_objekt";
$sql = rex_sql::factory();
$sql->setDebug(false); 
$sql->setQuery("SELECT * FROM $db_table WHERE objekt_status = 'sichtbar' AND objekt_kategorie = '1' LIMIT 6");

if($sql->getRows()) {
while($sql->hasNext()) {

$bilderliste = $sql->getValue('objekt_bilderliste');
$beschreibung = $sql->getValue('objekt_beschreibung');      
            
echo '<p>'.$beschreibung.'</p>';

foreach ($bilderliste as $file) {
$media = rex_media::get($file);
if ($media) {
echo '<a class="lb" href="index.php?rex_media_type=galerie&rex_media_file='.$media.'" data-lightbox="lb'.rand().'">
<img src="index.php?rex_media_type=galerie&rex_media_file='.$media.'" id="img_" alt=""></a>';
}

}

$sql->next();

}
}

?>
Bei den Bildern erscheint gar nichts. So wie es aussieht, funktioniert meine foreach-Schleife überhaupt nicht. Was mache ich falsch?

Re: yform | Medialist ausgeben

Verfasst: 1. Apr 2016, 09:02
von Phoebus Ryan
In der Regel sind die Medialist kommagetrennt gespeichert in der Datenbank.

Somit müsstest du folgendes anpassen:

Code: Alles auswählen

if ($sql->getValue('objekt_bilderliste') != '') {
  $bilderliste = explode(',', $sql->getValue('objekt_bilderliste'));
}
... und dann durch loopen

Re: yform | Medialist ausgeben

Verfasst: 1. Apr 2016, 11:42
von Fanello
Vielen Dank für deinen Beitrag. Mein Code sieht nun folgendermassen aus:

Code: Alles auswählen

<?php
$db_table = "rex_objekt";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery("SELECT * FROM $db_table WHERE objekt_status = 'sichtbar' AND objekt_kategorie = '1' LIMIT 6");

if($sql->getRows()) {
while($sql->hasNext()) {

  if ($sql->getValue('objekt_bilderliste') != '') {
    $bilderliste = explode(',', $sql->getValue('objekt_bilderliste'));
  }
           
foreach ($bilderliste as $file) {
$media = rex_media::get($file);
if ($media) {
echo '<a class="lb" href="index.php?rex_media_type=galerie&rex_media_file='.$media.'" data-lightbox="lb'.rand().'">
<img src="index.php?rex_media_type=galerie&rex_media_file='.$media.'" id="img_" alt=""></a>';
}
}

$sql->next();

}
}

?>
Dies generiert mir aber beim Aufruf der Seite folgenden Fehler:
"ErrorException" thrown in rex:////module/12/output/REX_VALUE/1 on line 18
Fatal error: Object of class rex_media could not be converted to string

#0 rex:////module/12/output/REX_VALUE/1(18): rex_error_handler::handleError(4096, 'Object of class...', 'rex:////module/...', 18, Array)
#1 rex:///module/12/output(3): require('rex:////module/...')
#2 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/cache/addons/structure/1.1.content(906): require('rex:///module/1...')
#3 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/lib/article_content.php(100): require('/home/httpd/vho...')
#4 rex:///template/1(24): rex_article_content->getArticle(1)
#5 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php(406): require('rex:///template...')
#6 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/boot.php(37): rex_article_content_base->getArticleTemplate()
#7 [internal function]: rex_package->{closure}(Object(rex_extension_point))
#8 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/lib/extension.php(45): call_user_func(Object(Closure), Object(rex_extension_point))
#9 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/frontend.php(23): rex_extension::registerPoint(Object(rex_extension_point))
#10 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/boot.php(105): require('/home/httpd/vho...')
#11 /home/httpd/vhosts/domain.ch/httpdocs/2016/index.php(9): require('/home/httpd/vho...')
#12 {main}"ErrorException" thrown in rex:////module/12/output/REX_VALUE/1 on line 18
Fatal error: Object of class rex_media could not be converted to string

#0 rex:////module/12/output/REX_VALUE/1(18): rex_error_handler::handleError(4096, 'Object of class...', 'rex:////module/...', 18, Array)
#1 rex:///module/12/output(3): require('rex:////module/...')
#2 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/cache/addons/structure/1.1.content(906): require('rex:///module/1...')
#3 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/lib/article_content.php(100): require('/home/httpd/vho...')
#4 rex:///template/1(24): rex_article_content->getArticle(1)
#5 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/lib/article_content_base.php(406): require('rex:///template...')
#6 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/addons/structure/plugins/content/boot.php(37): rex_article_content_base->getArticleTemplate()
#7 [internal function]: rex_package->{closure}(Object(rex_extension_point))
#8 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/lib/extension.php(45): call_user_func(Object(Closure), Object(rex_extension_point))
#9 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/frontend.php(23): rex_extension::registerPoint(Object(rex_extension_point))
#10 /home/httpd/vhosts/domain.ch/httpdocs/2016/redaxo/src/core/boot.php(105): require('/home/httpd/vho...')
#11 /home/httpd/vhosts/domain.ch/httpdocs/2016/index.php(9): require('/home/httpd/vho...')
#12 {main}

Re: yform | Medialist ausgeben

Verfasst: 1. Apr 2016, 12:06
von Fanello
So funktioniert es:

Code: Alles auswählen

<?php
$db_table = "rex_objekt";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery("SELECT * FROM $db_table WHERE objekt_status = 'sichtbar' AND objekt_kategorie = '1' LIMIT 6");

if($sql->getRows()) {
while($sql->hasNext()) {

if ($sql->getValue('objekt_bilderliste') != '') {
$bilderliste = explode(',', $sql->getValue('objekt_bilderliste'));  
  
        foreach ($bilderliste as $file2) {
            $media2 = rex_media::get($file2);
            if ($media2) {

              echo '<img src="index.php?rex_media_type=galerie&rex_media_file='.$file2.'" id="img_" alt="">';
            }
        }

   
}

$sql->next();

}
}    

?>