Thread Verfasser: Layzee
Thread ID: 1882
Thread Info
Es gibt 15 Beiträge zu diesem Thema, und es wurde 1253 Mal angesehen.

PHP-Fusion Deutschland - Offizielle Supportseite » PHP Fusion v9.xx.xx & DE MOD Support » Sonstiges

 Thema drucken
Datenbank auslesen und Anzeigen News
Layzee
Guten Morgen,

ich bin derzeit dabei, eine bestehende V7 (IUP) auf die V9 umzustellen.
Hierbei geht es nicht um ein Update sondern um eine Neuinstallation und hauptsächlich um die Übernahme des bestehenden Themes in die neue Version.
Aktuelle Webseite (v7): https://60minuten.net

Das Theme ansich funktioniert dank der Abwärtskompatibilität auf der V9 ohne grosse Probleme.
Was ein paar Probleme macht, ist die Anzeige der News auf der Startseite.
Ich habe unter der V7 eine (eigene) Startseite eingerichtet. Hier werden die letzten 5 Newsmeldungen in einem Slider dargestellt, der auf dem PC/Laptop durch Mausklick auf die Pfeile links und rechts gescrollt werden kann, auf mobilen Geräten kann mit dem Finger geslided werden.

Die Datenbankabfrage bzw die Anzeige dieser News auf der Startseite funktioniert mit folgendem Code:
// NEWS SEKTION   
  echo '<div class="block block--fullbg block--bgcover bottom-null inset-125 block-bg-11">
         <div class="container">
            <div class="title-wrap text-center">
               <h2 class="h--lg">News</h2>
            </div>';
 
 // DATENBANK AUSLESEN     
    $resultln = dbquery("SELECT tn.*, tc.*, tu.user_id, tu.user_name, tu.user_status, news_reads, news_image 
   FROM ".DB_NEWS." tn
   LEFT JOIN ".DB_USERS." tu ON tn.news_name=tu.user_id
   LEFT JOIN ".DB_NEWS_CATS." tc ON tn.news_cat=tc.news_cat_id
   WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().")
   AND (news_end='0'||news_end>=".time().") AND news_draft='0'
   GROUP BY news_id
   ORDER BY news_sticky DESC, news_datestamp DESC LIMIT 0,5"
  );
 
 // GLOBALE VARIABLEN SETZEN
  global $locale, $settings, $aidlink, $data, $dataln, $info, $infoln;
 
 // AUSGABE DER NEWS   
    echo '<div class="row news-slider ini-news-slider-mobile">';
           if (dbrows($resultln)) {
      $i = 0;
while ($dataln= dbarray($resultln)) {
      $subjectln = trimlink(strip_tags(parseubb($dataln['news_subject'])), 60);
      $shortnews = trimlink(strip_tags(parseubb($dataln['news_news'])), 100);
       
               echo '<div class="col-sm-4 news-item">
                  <div class="news-item-inside">
                     <a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'" class="news-item-photo">
                        <img src="'.IMAGES_N.''.$dataln["news_image"].'" alt="'.$subjectln.'" style="width:370px; height:370px;">
                     </a>
                     <div class="news-item-date">&nbsp;'.showdate("%d.%b.%Y", $dataln["news_datestamp"]).'</div>
                     <h4 class="news-item-title"><a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'">'.$subjectln.'</a></h4>
                  </div>
               </div>';
          }
          }
      echo '</div>
            <!-- <div class="text-center offset-50">
               <h3><a href="'.BASEDIR.'news.php">&raquo;Alle Beitr&auml;ge&laquo;</a></h3>                   
            </div> -->
         </div>
      </div>';


Die Anzeige berücksichtigt auch die Leseberechtigungen usw.

Bei der V9 funktioniert diese Abfrage und Anzeige so leider nicht.
Kann mir jemand sagen, wie hier der Code aussehen muss?

2. Frage:
Ich habe auf der Startseite ausserdem einen Bereich "Empfehlungen".
Hier sollen die jeweils letzten 5 Newsmeldungen aus 2 verschiedenen Kategorien gezielt angezeigt werden.
Hier das Codebeispiel, wie es bei der V7 noch ohne Probleme funktioniert:
echo '<div class="block block--darkbg block--fullbg bottom-null block--bgcover inset-85 block-bg-10">
         <div class="container">
            <div class="title-wrap text-center">
               <h2><font color="#ffffff">Empfehlungen</h2>
                    <div style="align:left; text-align:left; width:45%; float:left;">
                    <p class="p--lg">
                    <h4 style="color:#ffffff; font-size:30px;">NEWS</h4>';

$result2 = dbquery("SELECT news_id, news_subject, news_image FROM ".DB_NEWS." WHERE news_cat='19' AND ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().") AND (news_end='0'||news_end>=".time().") AND news_draft='0' ORDER BY news_datestamp DESC LIMIT 0,5");
   while ($data2 = dbarray($result2)) {
            echo '<img src="'.IMAGES_N.''.$data2["news_image"].'" alt="'.$subject2.'" style="width:50px; height:50px; margin-right:10px; margin-left:10px; margin-bottom:5px; border:1px solid #ffffff;" />';
         echo "<a href='news.php?readmore=".$data2['news_id']."'><font color='#ffffff'>".$data2['news_subject']."</font></a><br />";
                }                   
                    echo '</p></div>


Leider funktioniert auch das unter der V9 nicht mehr so....
Also wie kann ich eine bestimmte Kategorie auslesen und anzeigen lassen?

Danke im Voraus :)
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
In der V9 steht da was so drin

WHERE ".groupaccess('tn.news_visibility')

Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Danke für die Antwort, aber das löst nicht das Problem.
Die Datenbankabfrage konnte am Ende (fast) 1:1 so übernommen werden.
Das Problem war das News Image, das gibt es wohl in dieser Form nicht mehr wie in der V7.
News, Subject, Datum usw werden jetzt problemlos dargestellt, aber das Image leider nicht...

Also wäre meine Frage jetzt eigentlich nur noch: Wie rufe ich das (hochgeladene) Newsbild auf?
So sieht es aktuall auf der V9 aus:
https://60minuten.net/f9/home.php
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL

LEFT JOIN ".DB_USERS." tu ON tn.news_name=tu.user_id

oder besser so

LEFT JOIN ".DB_USERS." tu ON tn.user_id=tu.user_id

Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Sorry aber das entbehrt doch jedem Sinn oder?
Was hat die USER-Tabelle mit dem News Image zu tun?!

Wie ich sehe, wurde die Datenbankstruktur verändert in der V9 und die News Images werden nun in der neuen Tabelle "news_gallery" gespeichert und nicht mehr wie noch in der V7, direkt in der News-Tabelle.
Ich brauche also eine Datenbankabfrage, die diese Tabelle mit einbezieht und quasi irgendie die Image-ID anpasst an die jeweilige News-ID oder?
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
Was hat news_name mit user_id zu tun.
Mal als Test https://diamant.rolly8-hl.de/nobody.php
Dein Scrip für mich angepasst


// NEWS SEKTION
  echo '<div class="block block--fullbg block--bgcover bottom-null inset-125 block-bg-11">
         <div class="container">
            <div class="title-wrap text-center">
               <h2 class="h--lg">News</h2>
            </div>';

 // DATENBANK AUSLESEN
    $resultln = dbquery("SELECT tn.*, tc.*, tu.user_id, tu.user_name, tu.user_status
   FROM ".DB_NEWS." tn
   LEFT JOIN ".DB_USERS." tu ON tn.user_id=tu.user_id
   LEFT JOIN ".DB_NEWS_CATS." tc ON tn.news_cat=tc.news_cat_id
   WHERE ".groupaccess('user_access')." AND (news_start='0'||news_start<=".time().")
   AND (news_end='0'||news_end>=".time().") AND news_draft='0'
   ORDER BY news_sticky DESC, news_datestamp DESC LIMIT 0,5"
  );

 // GLOBALE VARIABLEN SETZEN
  global $locale, $settings, $aidlink, $data, $dataln, $info, $infoln;

 // AUSGABE DER NEWS
    echo '<div class="row news-slider ini-news-slider-mobile">';
           if (dbrows($resultln)) {
      $i = 0;
while ($dataln= dbarray($resultln)) {
      $subjectln = trimlink(strip_tags(parseubb($dataln['news_subject'])), 60);
      $shortnews = trimlink(strip_tags(parseubb($dataln['news_news'])), 100);

               echo '<div class="col-sm-4 news-item">
                  <div class="news-item-inside">
                     <a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'" class="news-item-photo">
                        <img src="'.NEWS_NB.''.$dataln["news_image"].'" alt="'.$subjectln.'" style="width:370px; height:370px;">
                     </a>
                     <div class="news-item-date">&nbsp;'.showdate("%d.%b.%Y", $dataln["news_datestamp"]).'</div>
                     <h4 class="news-item-title"><a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'">'.$subjectln.'</a></h4>
                  </div>
               </div>';
          }
          }
      echo '</div>
            <!-- <div class="text-center offset-50">
               <h3><a href="'.BASEDIR.'news.php">&raquo;Alle Beitr&auml;ge&laquo;</a></h3>
            </div> -->
         </div>
      </div>';


Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Ergebnis deines Codes:
https://60minuten.net/f9/home.php

Wie man sieht, bleibt jetzt ALLES leer, also wird gar nichts mehr angezeigt bei den News...
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
Kann nicht angezeigt werden bei Dir ist keine Datei angegeben

<img src="infusions/news/images/2" alt="" style="width:50px; height:50px; margin-right:10px; margin-left:10px; margin-bottom:5px; border:1px solid #ffffff;">

bei mir wird eine angegeben

<img src="images/news/1_nbn_17174958120175207001717495812_1.jpg" alt="gggggggggggg" style="width:370px; height:370px;">

Und das mit Deinem Script nicht meinem nur angepasst
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Bist du sicher dass du es auf der V9 machst?
In der Dateistruktur von V9 gibt es kein Verzeichnis /images/news/

Die "2" als "Dateiname" steht deshalb im Code beim Überprüfen, weil es im entsprechenden Feld nur eine "2" gibt und keine Bilddatei. Die Bilder werden wie gesagt in der Tabelle "news_gallery" gespeichert und nicht wie es bei der V7 noch war, direkt in der Tabelle "news"

Auf der V7 funktioniert mein ursprünglicher Code ja ohne Probleme ( siehe https://60minuten.net )
In der V9 funktioniert er im Grunde auch, es werden halt nur die Newsbilder nicht engezeigt.
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
Nein ich habe gesagt für mich angepasst Ich benutze die PHP-Fusion V8 Mod as Nobody PHP 8.3.7
Aber solch Bilder habe selbst rein gemacht.
Versuche das mal bei Dir

// DATENBANK AUSLESEN
    $resultln = dbquery("SELECT tn.*, tc.*, tu.user_id, tu.user_name, tu.user_status
   FROM ".DB_NEWS." tn
   LEFT JOIN ".DB_USERS." tu ON tn.user_id=tu.user_id
   LEFT JOIN ".DB_NEWS_CATS." tc ON tn.news_cat=tc.news_cat_id
   WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().")
   AND (news_end='0'||news_end>=".time().") AND news_draft='0'
   ORDER BY news_sticky DESC, news_datestamp DESC LIMIT 0,5"
  );                     

Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Nein, funktioniert auch nicht.
Wieder alles leer....
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
Schaue mal in Deiner DB
Habe bei Dir mal mit mit Edit as Html geändert auf

<img src="infusions/news/images/news_default.jpg" 

und das Bild wird angezeigt.
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Ja sicher wird das angezeigt, die Datei existiert ja auch physikalisch und wenn ich direkt darauf verlinke, ist klar dass sie angezeigt wird...

Es geht aber darum, das hochgeladene Newsbild anzuzeigen, welches beim Verfassen der News hochgeladen wird. Da nützt es mir doch nix wenn ich mit einem direkten Link ein vorhandenes Bild aufrufe...
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Rolly8-HL
Bei Dir steht aber nur das, kein Bezug auf eine Datei, Welche soll er denn laden?

<img src="infusions/news/images/1" alt="" 


Zusammengefügt am 04. Juni 2024 15:35:
Du hast eine DB_NEWS in der ist eine news_image wenn ja was steht da drin, in etwa sowas ( 027.jpg )?
Die V9 hat das nicht dafür aber

const DB_NEWS_IMAGES = DB_PREFIX.'news_gallery';

in der steht news_image , in etwa sowas ( 027.jpg )

Zusammengefügt am 04. Juni 2024 18:38:
Ich habe kein V9 ON nur auf dem Laragon
Nur mal zu testen und ganz simpel anders ging es bei mir nicht

// NEWS SEKTION
  echo '<div class="block block--fullbg block--bgcover bottom-null inset-125 block-bg-11">
         <div class="container">
            <div class="title-wrap text-center">
               <h2 class="h--lg">News R8HL </h2>
            </div>';

  // DATENBANK AUSLESEN
    $resultln = dbquery("SELECT tn.*, tc.*, tg.*, tu.user_id, tu.user_name, tu.user_status
   FROM fusion5g5a6_news tn
   LEFT JOIN fusion5g5a6_users tu ON tn.news_name=tu.user_id
   LEFT JOIN fusion5g5a6_news_cats tc ON tn.news_cat=tc.news_cat_id
   LEFT JOIN fusion5g5a6_news_gallery tg ON tn.news_id=tg.news_id
   WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().")
   AND (news_end='0'||news_end>=".time().") AND news_draft='0'
    ORDER BY news_sticky DESC, news_datestamp DESC LIMIT 0,5"   
  );

 // GLOBALE VARIABLEN SETZEN
  global $locale, $settings, $aidlink, $data, $dataln, $info, $infoln;

 // AUSGABE DER NEWS
    echo '<div class="row news-slider ini-news-slider-mobile"> ';
           if (dbrows($resultln)) {
      $i = 0;
while ($dataln= dbarray($resultln)) {
      $subjectln = trimlink(strip_tags(parseubb($dataln['news_subject'])), 60);
      $shortnews = trimlink(strip_tags(parseubb($dataln['news_news'])), 100);

      echo '<div class="col-sm-4 news-item">
      <div class="news-item-inside">
      <a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'" class="news-item-photo">
      <img src="infusions/news/images/'.$dataln["news_image"].'" alt="'.$subjectln.'" style="width:370px; height:370px;">
      </a>
      <div class="news-item-date">&nbsp;'.showdate("%d.%b.%Y", $dataln["news_datestamp"]).'</div>
      <h4 class="news-item-title"><a href="'.BASEDIR.'news.php?readmore='.$dataln['news_id'].'">'.$subjectln.'</a></h4>
      </div>
      </div>';
          }
          }
      echo ' </div>
            <!-- <div class="text-center offset-50">
               <h3><a href="'.BASEDIR.'news.php">&raquo;Alle Beitr&auml;ge&laquo;</a></h3>
            </div> -->
         </div>
      </div>';


 // Teil 2
echo '<div class="block block--darkbg block--fullbg bottom-null block--bgcover inset-85 block-bg-10">
         <div class="container">
            <div class="title-wrap text-center">
               <h2><font color=" ">Empfehlungen R8HL</h2>
                    <div style="align:left; text-align:left; width:45%; float:left;">
                    <p class="p--lg">
                    <h4 style="color:  font-size:30px;">NEWS</h4>';

$result2 = dbquery("SELECT tn.*, tg.*
   FROM fusion5g5a6_news tn
   LEFT JOIN fusion5g5a6_news_gallery tg ON tn.news_id=tg.news_id
   WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().")
AND (news_end='0'||news_end>=".time().") AND news_draft='0' ORDER BY news_datestamp DESC LIMIT 0,5"
   );

   while ($data2 = dbarray($result2)) {
            echo '<img src="infusions/news/images/'.$data2["news_image"].'" alt="'.$subject2.'"
style="width:50px; height:50px; margin-right:10px; margin-left:10px; margin-bottom:5px; border:1px solid #ffffff;" />';
         echo "<a href='news.php?readmore=".$data2['news_id']."'><font color=' '>".$data2['news_subject']."</font></a><br />";
                }
                    echo '</p></div></div></div></div> ';



Jetzt tausche fusion5g5a6_ gegen Deinen PREFIX aus und versuche das mal.
Bearbeitet von Rolly8-HL am 04. Juni 2024 17:45:48
Gruß Rolly8-HL
Was für Andere Wichtig ist muss für mich nicht genauso Wichtig sein!
Bin Dickkopf Unbelehrbar mache aus Protest nicht das was andere für Richtig halten!
Das gibt einem zu Denken oder?
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Layzee
Leider auch nicht die Lösung.... es bleibt einfach leer....
Information:
PHP Version: 7.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP8
 
Springe ins Forum: