MySQL Datenbank auf Website Tabelle anzeigen

Allgemeine Fragen
ezi
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 11
Registriert: So 18. Jul 2021, 23:34

MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von ezi »

Hallo,
ich habe eine MYSQL Datenbank und will nun die Daten per php auf meine Website anzeigen lassen. Der Code funktioniert über den lokalen Server wamp einwandfrei:

Code: Alles auswählen

<?php
 // Verbindung zur Datenbank über der PDO()-Funktion aufbauen
// (Host, Datenbank, Charset, Benutzer, Passwort)
  $host_name = 'xxxxxxxxxxxxxxx';
  $database = 'xxxxxxxxxxxxxxx';
  $user_name = 'xxxxxxxxxxxxxxx';
  $password = 'xxxxxxxxxxxxxxx'';
  $dbh = null;

  try {
    $dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
}
catch(Exception $fehler) {
    print $fehler->getMessage();
}
$sqlBefehl = "SELECT
    nickname, nachname, eintritt, max( austritt ) AS austritt,
    SUM(TIMESTAMPDIFF(DAY, eintritt, IFNULL(austritt, CURDATE()))) AS dauer  
FROM mitgliedsdauer, member
where id=member_id
GROUP BY member_id
ORDER BY dauer DESC";
$abfrage = $verbindung->prepare($sqlBefehl);
$abfrage->execute();
$ergebnismenge = $abfrage->fetchAll();

?>
<table>
 <thead>
  <tr>
   <td>Vorname</td>
   <td>Nachname</td>
   <td>Eintrittsdatum</td>
   <td>Mitglied bis</td>
      <td>Vereinszugehörigkeit in Tagen</td>
  </tr>
 </thead>
  <tbody>
<!-- PURES HTML ENDE -->

<!-- LOOP MIT PHP UND HTML TAGS PER ECHO -->
  
  <?php foreach($ergebnismenge as $zeile) : ?>
    <tr>
     <td><?php echo $zeile['nickname']; ?></td>
     <td><?php echo $zeile['nachname']; ?></td>
     <td><?php $eintritt = new DateTime($zeile['eintritt']);
                    echo $eintritt->format('d.m.Y')."<br />";?></td>
    <td><?php $austritt = new DateTime($zeile['austritt']);
                    echo $austritt->format('d.m.Y')."<br />";?></td>              
     <td><?php echo $zeile['dauer']; ?></td>     
    </tr>
  <?php endforeach; ?>
<!-- ENDE PHP LOOP -->

<!-- PURES HTML -->
 </tbody>
</table>
<!-- HTML ENDE -->
Nun habe ich diesen Code auf einer php-Seite in den Custum HTML Block von Mobirise5 gepackt, allerdings verändert Mobirise diesen Code immer automatisch bei der Stelle so, das zwischen <?php foreach($ergebnismenge as $zeile) : ?> und <?php endforeach; ?> nichts drinnen steht. Somit bekomme ich nur einen Tabellensatz angezeigt ☹. Hier nochmals, wie Mobirise automatisch den Code ändert:

Code: Alles auswählen

 <?php foreach($ergebnismenge as $zeile) : ?>
  
  <?php endforeach; ?>[/color]

<table class="tableizer-table">
 <thead>
  <tr class="tableizer-firstrow">
   <th>Nr.</th>
    <th>Kegler</th>
    <th>Nachname</th>
    <th>Eintrittsdatum</th>
    <th>Mitglied bis</th>
      <th>Vereinszugehörigkeit in Jahren</th>
      <th>Vereinszugehörigkeit in Tagen</th>
  </tr>
 </thead>
  <tbody>
<!-- PURES HTML ENDE -->

<!-- LOOP MIT PHP UND HTML TAGS PER ECHO --><tr>
     <td><?php echo $zeile['id']; ?></td>
     <td><?php echo $zeile['nickname']; ?></td>
     <td><?php echo $zeile['nachname']; ?></td>
     <td><?php $eintritt = new DateTime($zeile['eintritt']);
                    echo $eintritt->format('d.m.Y')."<br />";?></td>
    <td><?php $austritt = new DateTime($zeile['austritt']);
                    echo $austritt->format('d.m.Y')."<br />";?></td>
     <td><?php echo $zeile['dauer_jahre']; ?></td>                   
     <td><?php echo $zeile['dauer']; ?></td>     
    </tr><!-- ENDE PHP LOOP -->

<!-- PURES HTML -->
 </tbody>
</table>
<!-- HTML ENDE -->


Dann habe ich den kompletten Code in der Seiteneistellung unter „inside <head> code“ eingefügt. Hier wird die Tabelle abgerufen wie ich die haben will – allerdings ist diese ganz am Seitenanfang und die Navigation ist verschwunden. Mit <link rel="stylesheet" href="/css/table.css"> konnte ich die Tabelle auch formatieren, aber wie bekomme ich diese Tabelle in einen Texblock rein, da wo ich die haben/sehen will?

Dann habe ich in einem Textblock auch einen Teil des Codes eingeführt – aber eben da passiert das ganz oben beschriebene Problem und ich bekomme nur 1 Datensatz ausgespuckt.
Ich hoffe es kann mir jemand helfen.
mfg Ezi
stobi_de
Moderator
Moderator
Beiträge: 758
Registriert: Di 11. Okt 2022, 06:30

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von stobi_de »

Kenne ich auch. Mach dir eine txt Datei, die du auf dem Server speicherst und an der Stelle im html, wo die Tabelle erscheinen soll, ein php-include dieser txt Datei. Mache ich immer mit großen PHP Codes.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Moin,

versuche auch mal den <?php PHP-Code ?> in die Seiteneinstellungen in den Bereich:

Before <!DOCTYPE>, <html> and <head> tags:

zu packen. Achte darauf, dass dort am Beginn weder eine Leerzeile noch ein Leerzeichen entstehen und auch nicht nach dem PHP-Code.


Den Teil mit der <table> Tabelle </table> kopierst Du in einen Mobirise-Block, anstelle des Beispieltextes von Mobirise - eben an der Stelle, wo die Tabelle auch angezeigt werden soll. Meist eignet sich ein einfacher Textblock aus der Rubrik "Article" dazu am besten.

Versuche auch mal, dass der Tabellen-Code mit den PHP-Anweisungen nicht in einem <p> Tag </p> steht, sondern nur in <div> Containern </div>. Manchmal macht das Probleme.

Mobirise lässt in unterschiedlichen Tags bestimmte PHP-Codes nicht zu. Andererseits schreibst Du ja, dass da nichts vom "Code Editor" gelöscht wird, sondern die Schleife wird nur nicht ausgeführt.


Ist denn die foreach Schleife so im Syntax richtig (mit dem Doppelpunkt : da hinten dran)? Ist das Leerzeichen vor dem Doppelpunkt zulässig?

Ich verstehe leider nicht wirklich viel von PHP aber das kenne ich so nicht :confused:

https://www.php.net/manual/de/control-s ... oreach.php

Ungültigen oder veralteten PHP-Code schmeißt der "Code Editor" von Mobirise grundsätzlich raus oder ignoriert diesen auch.



Habe jetzt mal nachgeguckt. Vielleicht mag der "Code Editor" auch diesen alternativen Syntax einfach nicht?!

https://www.php.net/manual/de/control-s ... syntax.php

Vielleicht solltest Du es lieber mal mit den geschweiften { Klammern } - also der Standard-Schreibweise - versuchen:

http://php.lernenhoch2.de/lernen/php-an ... n-klammer/



Sonst gucke doch auch mal die Anleitungen von unserem Werner an:

https://werner-zenk.de/mysql/erster_ein ... enbank.php

Werner erklärt dort das Auslesen einer Datenbank in eine Tabelle. Werners Scripte lassen sich ohne Ausnahme alle hervorragend in Mobirise einbauen.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

… also - ich habe jetzt mal diese beiden Codes im Standrad-Thema "Mobirise5" mit der Software-Version 5.9.15 BETA ausprobiert. Beides geht einwandfrei, also die Standard-Schreibweise (oben) und die alternative Schreibweise auch:

Code: Alles auswählen

<?php
    $id = 5;
 
    if($id == 5)
    {
        echo '<p>text</p>';
        echo '<p>text</p>';
        echo '<p>text</p>';
        echo '<p>text</p>';
    }
?>


<?php
    $id = 5;    
?>
 
<?php if($id == 5): ?>
        <p>text</p>
        <p>text</p>
        <p>text</p>
        <p>text</p>
<?php endif; ?>

Falls Du einen anderen "Code Editor" als den von Mobirise verwendest, teile uns das bitte mit.
ezi
Mitglied (Level 2)
Mitglied (Level 2)
Beiträge: 11
Registriert: So 18. Jul 2021, 23:34

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von ezi »

Danke stobi und Tommy für die Hilfen.
Ich habe das nun so gemacht, wie stobi vorgeschlagen hatte. Dies hat geklappt :hurra:
Danke nochmals an euch beide !!!

Ich nutze den ganz normalen Code Editor von Mobirise.
stobi_de
Moderator
Moderator
Beiträge: 758
Registriert: Di 11. Okt 2022, 06:30

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von stobi_de »

Irgendwann hatte ich mal rausgefunden, dass das PHP in einem P-tag stehen musste, oder nicht stehen durfte oder in einem leeren DIV - ich habe es vergessen.
Die beschriebene Methode ist da einfach zuverlässiger
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Klaus »

Ich hatte es ja auch einige Zeit mal versucht mit dem PHP im Editor (egal welcher), das klappt leider nur selten.
Bei relativ einfachen Sachen (Tabellen) die man in PHP halt nun mal so macht ist MR überfordert.
(Gerade der dort übliche Mix aus HTML und PHP macht MR oft Probleme. -> ggf. dann mehr echo in PHP verwenden.)

Warum MR grundsätzlich was ändert ist mir schon klar, die Seite wird ja direkt in Electron angezeigt und da kann PHP Code nicht ausgeführt werden, also ersetzt MR den PHP Code durch anzeigbare Platzhalter.
Das Parsen und an die richtige Stelle setzen funktioniert leider nicht recht zuverlässig.

->Franks Lösung mit include verwenden

Ich hatte schon mal überlegt ob man ggf. mit Interpolation arbeiten könnte oder wollte ggf. mal bei den "Third-Party" Plugins gucken ... ist mir aber alles zu aufwendig ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Was mir dabei allerdings auffällt - es gab noch nicht einen einzigen Fall, bei dem PHP Code vom Werner nicht korrekt im "Code Editor" verwendet werden konnte - und ich habe verdammt viel Code vom Werner eingebaut.

… egal ob es der Formular-Generator, Gästebücher, Suchfunktionen oder Blogs sind - alles funktioniert ausnahmslos.
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Klaus »

Ggf. wecheselt Werner weniger zw. HTML und PHP sondern gibt Sachen mit echo aus, KA!?

Bau das doch einfach mal ein und Du wirst sehen dass MR der Meinung ist dass das PHP vor die Tabelle kommt weil es innen drinnen nix zu Suchen hat.
Wenn es in der HTML Struktur ist packt MR das nicht oder meint das ist nicht OK, nur bei Werten oder wo sonst auch Text steht klappt das einigermaßen.

Code: Alles auswählen

<table>
  <tr>
    <th>S1</th>
    <th>S2</th>
    <th>S3</th>
  </tr>
<?php ?>  
  <tr>
    <td>11</td>
    <td>12</td>
    <td>13</td>
  </tr>
<?php ?>  
</table>
So was

Code: Alles auswählen

<td><?php echo $zeile['nickname']; ?></td>
alleine geht meist.
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Klaus »

Ich hab gerade mal ein paar (wenige) TUTs angesehen, da sind lauter "unkritische" Sachen drinnen.
Einbettung entweder per include oder per JavaScript, ...

Ich hatte eben mal das ausprobiert
https://www.php.net/manual/de/language. ... hpmode.php
und auch das geht ... Problem ist halt dass man vorher nicht weiß wann MR etwas ändert ...
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

ich versuche das mit der Tabelle gfleich mal.

Wie gesagt - ich habe bestimmt 50 sehr lange PHP-Skripte in allen möglichen Versionen eingebaut und noch nie ein Problem gehabt.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Klaus,

… also - Dein Code ist ja auch vollkommen unlogisch. Der Text (Inhalt) gehört nun schon in die Tabellen-Tags und nicht dazwischen - das ist falscher Syntax.

Hier meine temporäre Testseite:

https://www.mobirise-tutorials.com/Vorl ... p-test.php

(Seite wird später wieder gelöscht)

Im oberen Code wird das (natürlich) falsch dargestellt - im unteren dagegen richtig.

Code: Alles auswählen

<!-- Falscher Syntax -->
<table>
  <tr>
    <th>S1</th>
    <th>S2</th>
    <th>S3</th>
  </tr>
    <?php echo '<p>Zeile 1 in PHP</p>'; ?>  
  <tr>
    <td>11</td>
    <td>12</td>
    <td>13</td>
  </tr>
    <?php echo '<p>Zeile 2 in PHP</p>'; ?>  
</table>

<br><br>

<!-- Richtiger Syntax -->

<table>
  <tr>
    <th>Spalte 1</th>
    <th>Spalte 2</th>
    <th>Spalte 3</th>
  </tr>
      
  <tr>
    <td><?php echo '<p>Inhalt 1 in PHP</p>'; ?></td>
    <td><?php echo '<p>Inhalt 2 in PHP</p>'; ?></td>
    <td><?php echo '<p>Inhalt 3 in PHP</p>'; ?></td>
  </tr>
   
</table>
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Klaus »

Der Code ist nicht unlogisch sondern nur eine Vereinfachung damit man sieht dass MR fummelt wo es nix zu fummeln hat.
MR stellt die 2 PHP Zeilen an den Anfang und das ist falsch ... egal ob das PHP leer ist oder ob ich $tmp=1; drinn schreibe.

Hier dann mal ein vollständiges Bsp. das in PHP so gemacht wird und in PHP auch so läuft, in MR aber unzulässigerweise verändert wird. Ja man könnte das auch anders schreiben (echo, ggf. heredoc) aber MR sollte da nicht fummeln ...

Lass das doch mal als PHP Datei ohne MR laufen und dann mal mit MR:

Code: Alles auswählen

<?php
  $arr = array(1, 2, 3, 4);
?>

<table>
  <tr>
    <th>Wert</th>
    <th>Wert mal 2</th>
    <th>Wert mal 3</th>
  </tr>
  <?php foreach($arr as &$value) : ?> 
  <tr>
    <td><?php echo $value; ?></td>
    <td><?php echo $value * 2; ?></td>
    <td><?php echo $value * 3; ?></td>
  </tr>
  <?php endforeach; ?>
</table>

<?php
  unset($value);
?>

for1.JPG
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Das geht so nicht in Mobirise.

Du weißt, dass ich nicht so fit in PHP bin, da müsste ich jetzt erst einmal ewig fummeln und dazu habe ich heute keine Zeit.

Ich weiß nur, dass das PHP-Tag in Mobirise ganz außen, um die PHP-Routine herum, platziert werden muss, ansonsten wird es raus geschmissen, bzw. falsch verarbeitet.

Wie ich bereits oben geschrieben hatte, wird wohl die vereinfachte Schreibweise, so innerhalb von anderen HTML-Tags, nicht vom "Code Editor" erkannt werden. Da benötigt Mobirise die Standard-Schreibweise.

... bei Deinem Beispiel würde immer nur die letzte Zeile errechnet dargestellt werden. Die Schleife wird so in Mobirise nicht korrekt verarbeitet. Die Tabellenreihen werden offensichtlich so in Mobirise nicht dem PHP-Code zugeordnet.

Insofern werden diese beiden für Mobirise "verirrten" PHP-Zeilen aus der Tabelle rausgeworfen und landen dann ohne Zusammenhang darüber.

Die gesamte Tabelle muss also als PHP-Code geschrieben sein - dann würde es wahrscheinlich auch funktionieren. So macht es zumindest Werner ja auch immer.

Wie z.B. bei diesem Gästebuch vom Werner, dort kann man das mit der foreach-Schleife ja auch sehen. Diese ist als Ausgabe in PHP integriert und funktioniert so einwandfrei auch in Mobirise (Code steht auch auf der Seite):

https://www.mobirise-tutorials.com/Gastbuch/gb.php

… oder hier als Beispiel eine Tabelle von Werners Beispielseite:

https://werner-zenk.de/php/mit_php_eine ... tellen.php

Code: Alles auswählen

<?php
// Mit PHP eine HTML-Tabelle erstellen

function zeichneTabelle($zeilen, $spalten) {
 $zaehler = 1;
 $ausgabe = '<table border="1">'; 
 for ($tr=1; $tr <= $zeilen; $tr++) {
  $ausgabe .= '<tr>';
  for ($td=1; $td <= $spalten; $td++) {
   $ausgabe .= '<td>' . $zaehler . '</td>';
   $zaehler++;
  }
 $ausgabe .= '</tr>'; 
} 
 return $ausgabe . '</table>';
}

// Aufruf mit:
echo zeichneTabelle(8, 10);
?> 


Hier mein etwas modifiziertes Script dieser Tabelle als Ergebnis und in Mobirise eingebaut:

https://www.mobirise-tutorials.com/Tuto ... hp#Tabelle


HTML Tabelle in PHP.jpg

HTML-Tabelle in PHP erstellen.jpg


So ein "Code Editor" kann ja nun nicht jeden x-bliebigen Code in die Projektdatei hinein generieren. Deswegen geht es dann (natürlich) auch über das Inkludieren dieses Codes, denn der muss ja nicht für die Projektdatei generiert werden und wird dann auch nicht überprüft, egal wie falsch der sein sollte.

Dazu kommt noch, dass Mobirise ein Programm ist, das überhaupt nicht auf PHP ausgerichtet ist. Das da überhaupt PHP funktioniert, wurde erst im Nachhinein programmiert. Mobirise lehnt die Verarbeitung von PHP eigentlich ab. Sie haben aber einsehen müssen, dass sie zumindest die Möglichkeit schaffen müssen, PHP-Code zu integrieren. Ich möchte mal behaupten, wenn man viel mit PHP-Code arbeiten muss, dass man mit Mobirise nicht die richtige Wahl an Software getroffen hätte.



Dieser Code hier von:

https://www.php.net/manual/de/control-s ... oreach.php

... funktioniert z.B. auch in Mobirise. Da ist dann halt jede Zeile, auch die Ausgaben - hier mit "echo" - in PHP geschrieben und dann geht das eben auch in Mobirise:

https://www.mobirise-tutorials.com/Vorl ... php#Test-2

(Seite wird später wieder gelöscht)

Code: Alles auswählen

<?php
/* foreach Beispiel 1: Nur Werte */

$a = array(1, 2, 3, 17);

foreach ($a as $v) {
echo "Aktueller Wert von \$a: $v.\n";
}

/* foreach Beispiel 2: Werte (mit Schreibweise für Zugriff zur Veranschaulichung) */

$a = array(1, 2, 3, 17);

$i = 0; /* nur zur Veranschaulichung */

foreach ($a as $v) {
echo "\$a[$i] => $v.\n";
$i++;
}

/* foreach Beispiel 3: Schlüssel und Wert */

$a = array(
"eins" => 1,
"zwei" => 2,
"drei" => 3,
"siebzehn" => 17
);

foreach ($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}

/* foreach Beispiel 4: Mehrdimensionale Arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}

/* foreach Beispiel 5: Dynamische Arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
echo "$v\n";
}
?>
Benutzeravatar
Andyneu
Moderator
Moderator
Beiträge: 67
Registriert: Mi 9. Dez 2020, 16:40
Wohnort: Hoope
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Andyneu »

Hallo,
ich habe ja nun auch schon diverse Projekte erstellt die ich kombiniert habe mit MR und PHP.
Mobirise ist da sehr tückisch und ersetzt auch eigenständig z.B. vorgegebene Pfade für Bilder einfach zu seinem eigenem Bilderverzeichnis. Oder wenn du Tabellen oder ähnliches per PHP erzeugen lässt und z.B. eine Schleife in einer anderen ausführst wird auch ein Teil einfach entfernt.

Beste alternative ist eine Ausgabe in einer eigenen PHP Datei die nicht durch MR verwaltet wird oder per include.
Man kann mit MR und PHP schon gute Projekte umsetzen, muss aber um die Tücken wissen und diese bei dem Erstellen des Projekt schon in der Planung berücksichtigen.
Gruß Andy
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Moin Andy,

ja - so ist das. Was kann man erwarten? Die Eier legende Wollmilchsau, wohl eher nicht.

Mobirise muss schon in seinem System bleiben.

Das mit den relativen Pfaden habe ich schon vor 7 Jahren beschrieben. Man sollte nur absolute Pfade für Bilder verwenden, die nicht über den Bildeditor von Mobirise eingefügt wurden.
Klaus
Supporter
Supporter
Beiträge: 443
Registriert: Mi 21. Jul 2021, 00:43

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Klaus »

Da ezi ja schon in Beitrag 2 seine Antwort bekommen hat können wir uns auch gegenseitig bespaßen! ;-)

Ich bin gerade dabei mich in Web Components einzuarbeiten und kenne zwar seit 20 Jahren das PHP/HTML-Gefrickle aber auch von größeren Firmen die Trennung zwischen Frontend (Angular) und Backend (Java EE/Spring) und die Verbindung mit Rest APIs (JSON).

Daher hab ich das mal so gebastelt dass das Frontent die Daten per fetch vom Backend als JSON abholt und dann per JavaScript einfügt ... war mal ne nette Spielerei die auch von MR in Ruhe gelassen wird (da pack ich Head & Body in einen HTML Block).
rest-call.JPG
S.h. auch:
https://medium.com/@wuliwen122/javascri ... 7ddf4dc64d
Benutzeravatar
Andyneu
Moderator
Moderator
Beiträge: 67
Registriert: Mi 9. Dez 2020, 16:40
Wohnort: Hoope
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Andyneu »

Hallo
Tommy schrieb:
Man sollte nur absolute Pfade für Bilder verwenden, die nicht über den Bildeditor von Mobirise eingefügt wurden.
Ja aber genau das kannst du eben nicht immer machen, wenn Bilder/Daten eben automatisch per PHP aus verschiedenen Ordnern und/oder Datenbanken ausgelesen werden und diese dann weiter genutzt werden. Die Namen der Ordner könnten sich ändern oder die Anzahl der Unterordner ändert sich etc.
Bsp.
Ein Tool zur Erzeugung von Bildergalerien wo zu jedem Bild Informationen in einer Datenbank eingetragen werden.
Die einzelnen Galerien werden durch den Benutzer beim hochladen der Bilder gebildet. In dem Fall werden Ordner im Upload-Verzeichnis mit entsprechender Bezeichnung erstellt.

Bei Ausgabe der Bildgalerien werden dann die Bilder und die Daten aus der Datenbank geladen und als entsprechende Galerie visualisiert.
In dem Moment wo ich dies programmiere weiß ich weder wie viele Unterordner es geben wird noch wie diese benannt sind.

Die beste Idee scheint mir die von Klaus zu sein. Ist allerdings auch die wo man sich am meisten mit auskennen muss. :smoking:
Gruß Andy
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5820
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Tommy Herrmann »

Ich rede von Bildern, die in Mobirise eingefügt werden und nicht von Bildern, die via PHP-Script ausgelesen werden. Nur von Bildern die in Mobirise-Blöcken sind, denn nur solche werden in der Projekt-Datei auch gespeichert.
Benutzeravatar
Andyneu
Moderator
Moderator
Beiträge: 67
Registriert: Mi 9. Dez 2020, 16:40
Wohnort: Hoope
Kontaktdaten:

Re: MySQL Datenbank auf Website Tabelle anzeigen

Ungelesener Beitrag von Andyneu »

@Klaus
Wäre das auch mit deiner Methode umsetzbar oder eher umständlich?
https://www.awm-websoft.de/entwicklung/ ... ght2_2.php
User: KdUser_Mobi
pw: ZeigsMir123mal!

Code: Alles auswählen

<?php
    // Verbindung zur Datenbank
    require_once('db_conf.php');

    try {
        $pdo = new PDO("mysql:host=$host;dbname=$dbname", "$user", "$pw");
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Verbindung fehlgeschlagen: " . $e->getMessage());
    }

    // Funktion zum Umbenennen von Dateierweiterungen im Ordner
    function renameExtensionsInFolder($folder) {
        $files = glob($folder . "/*");

        foreach ($files as $file) {
            $fileInfo = pathinfo($file);
            $fileName = $fileInfo['filename'];
            $fileExtension = $fileInfo['extension'];
            $newFileName = $folder . '/' . $fileName . '.' . strtolower($fileExtension);

            if ($file !== $newFileName) {
                // Umbenennen der Datei mit kleingeschriebener Erweiterung
                rename($file, $newFileName);
            }
        }
    }

    // Durchsuchen das "uploads"-Verzeichnis nach Ordnern
    $uploadFolders = glob("uploads/*", GLOB_ONLYDIR);

    // Vor dem Generieren der Galerien die Dateierweiterungen im Ordner umbenennen
    foreach ($uploadFolders as $folder) {
        renameExtensionsInFolder($folder);
    }

    // Funktion zum Durchsuchen von Ordnern und Generieren von Galerie-HTML
    function generateGallery($folder, $pdo) {
        echo '<div class="container">'; 
        echo '<div class="gallery-wrapper">';
        
        // Extrahieren Sie den Galerie-Namen aus dem Ordner-Namen
        $galleryName = str_replace("uploads/", "", $folder);
        
        echo '<h2 class="mb-3 mx-auto">Gallerie Name <span><b>' . $galleryName . '</b></span></h2>';
        echo '<div class="' . $galleryName . '-gallery gallery" id="' . $galleryName . '-gallery">';
        
        // Durchsuche den Ordner nach Bildern
        $files = glob($folder . "/*.{jpg,jpeg,png,gif}", GLOB_BRACE | GLOB_NOCHECK);

        // Überprüfen Sie, ob der Ordner Bilder enthält
        if (!empty($files)) {
            foreach ($files as $file) {
                $fileInfo = pathinfo($file);
                $fileName = $fileInfo['filename'];

                // Debug-Ausgabe
                // echo "Found file: $file<br>";

                echo '<a href="' . $file . '" data-lightbox="' . $galleryName . '" data-title="' . $fileName . '">';
                echo '<img src="' . $file . '">';
                echo '</a>';
            }
        } else {
            // Wenn der Ordner leer ist, geben Sie eine Meldung aus oder tun Sie nichts
            echo '<p>Der Ordner ist leer.</p>';
        }
        
        echo '</div>';
        echo '</div>'; // Ende wrapper
        echo '</div>'; // Ende Container
    }

    // Durchsuchen  das "uploads"-Verzeichnis nach Ordnern
    $uploadFolders = glob("uploads/*", GLOB_ONLYDIR);

    // Generieren  die Galerien für jeden Ordner
    foreach ($uploadFolders as $folder) {
        try {
            generateGallery($folder, $pdo);
        } catch (Exception $e) {
            // Fehlerbehandlung bei der Generierung der Galerie
        }
    }
    ?>
Oder dieses:
https://www.awm-websoft.de/entwicklung/ ... Slider.php

Code: Alles auswählen

<?php
    // Verbindung zur Datenbank
    require_once('db_conf.php');

    try {
        $pdo = new PDO("mysql:host=$host;dbname=$dbname", "$user", "$pw");
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Verbindung fehlgeschlagen: " . $e->getMessage());
    }

    // Datenbankabfrage
    $query = $pdo->query("SELECT * FROM Images WHERE Exklusive1 = 1");
    $result = $query->fetchAll(PDO::FETCH_ASSOC);

    // Dynamisch die vorhandenen Unterordner im "uploads"-Verzeichnis auslesen
    $uploadFolders = array_filter(glob('uploads/*'), 'is_dir');

    // HTML für die Slideshow generieren
    $slideshowHTML = '';
    $thumbnailHTML = ''; // Hier hinzugefügt

    foreach ($result as $row) {
        foreach ($uploadFolders as $imgFolder) {
            // Bildpfad dynamisch erstellen
            $imgPath = "$imgFolder/" . $row['Bildname'] . ".jpg";

            // Prüfen, ob das Bild im aktuellen Unterordner existiert
            if (file_exists($imgPath)) {
                // HTML für das aktuelle Bild hinzufügen
                $slideshowHTML .= '
                    <div class="item">
                        <img src="' . $imgPath . '">
                        <div class="content">
                            <div class="author">' . $row['Firma'] . '</div>
                            <div class="title">' . $row['Bildueberschrift'] . '</div>
                            <div class="topic">' . $row['Bildkurzbeschreibung'] . '</div>
                            <div class="des">' . $row['Beschreibung'] . '</div>
                            <div class="buttons">
                                <button>SEE MORE</button>
                                <button>SUBSCRIBE</button>
                            </div>
                        </div>
                    </div>';

                // HTML für das Thumbnail hinzufügen (nur Firma und Bildüberschrift)
                $thumbnailHTML .= '
                    <div class="item">
                        <img src="' . $imgPath . '">
                        <div class="content">
                            <div class="title">' . $row['Firma'] . '</div>
                            <div class="description">' . $row['Bildueberschrift'] . '</div>
                        </div>
                    </div>';
            }
        }
    }
?>
Zugangsdaten wie oben
Gruß Andy
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste