Bild aus DB darstellen
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 11:42:16
|
|
In einem Panel möchte ich die letzten Figuren einer DB darstellen lassen. Die Bilder werden eingesendet und in einer Tabelle namens DB_FIGURE_IMAGES mit folgenden Spalten abgelegt: figure_images_image_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT, figure_images_figure_id varchar(100) NOT NULL DEFAULT '', figure_images_image varchar(100) NOT NULL DEFAULT '', figure_images_thumb varchar(100) NOT NULL DEFAULT '', figure_images_sorting varchar(50) NOT NULL DEFAULT '', figure_images_language VARCHAR(50) NOT NULL DEFAULT '".LANGUAGE."', Die Bilder selbst werden im Infusionsverzeichnis unter Figures/images (das Original) bzw unter Figures/images/thumbs als Thumb gespeichert Meine DB Abfrage sieht so aus: Zitat $result = dbquery( "SELECT tb.figure_id, tb.figure_submitter, tb.figure_freigabe, tb.figure_pubdate, tb.figure_scale, tb.figure_title, tb.figure_manufacturer, tb.figure_brand, tb.figure_datestamp, tb.figure_cat, tbc.figure_cat_id, tbc.figure_cat_name, tbu.user_id, tbu.user_name, tbu.user_status, tbu.user_avatar, tbm.figure_manufacturer_name, tbb.figure_brand_name, tby.figure_year_id, tby.figure_year, tbs.figure_scale_id, tbs.figure_scale_name, tbi.figure_images_image_id, tbi.figure_images_image, tbi.figure_images_thumb FROM ".DB_FIGURE_ITEMS." tb LEFT JOIN ".DB_USERS." tbu ON tb.figure_submitter=tbu.user_id INNER JOIN ".DB_FIGURE_CATS." tbc ON tb.figure_cat=tbc.figure_cat_id INNER JOIN ".DB_FIGURE_MANUFACTURERS." tbm ON tbm.figure_manufacturer_id = tb.figure_manufacturer INNER JOIN ".DB_FIGURE_BRANDS." tbb ON tbb.figure_brand_id = tb.figure_brand INNER JOIN ".DB_FIGURE_SCALES." tbs ON tbs.figure_scale_id = tb.figure_scale INNER JOIN ".DB_FIGURE_YEARS." tby ON tby.figure_year_id = tb.figure_pubdate INNER JOIN ".DB_FIGURE_IMAGES." tbi ON tbi.figure_images_figure_id = tb.figure_id ...... ".(multilang_table("FI") ? "WHERE figure_language='".LANGUAGE."' AND" : "WHERE")." tb.figure_freigabe='0' ORDER BY figure_datestamp DESC LIMIT 0,10"); der rote part -- dort wollte ich das Bild suchen lassen aber wie kann man das eingrenzen bzw filtern das das erste gefundene Bild was die gleiche "figur_id" wie die figur hat? Es können ja bis zu 10 Bilder hochgeladen werden pro Figur. Ich dachte mit LIMIT geht das aber scheint nicht so. darstellen wollte ich das ganze dann so: (nur Ausschnitt) Zitat if ($data['figure_images_image'] == "") { echo "<td class='side-small'><a href='".INFUSIONS."figurelib/figures.php?figure_id=".$data['figure_id']."' class=''>\n<img src='".INFUSIONS."figurelib/images/default.png"."' alt='".trimlink($data['figure_title'],50)."' title='".trimlink($data['figure_title'],100)."' style='border:0px;max-height:60px;max-width:60px' /></td>"; } else { echo "<td class='side-small'><a href='".INFUSIONS."figurelib/figures.php?figure_id=".$data['figure_id']."' class=''>\n<img src='".$data['figure_images_image']."' alt='".trimlink($data['figure_title'],100)."' title='".trimlink($data['figure_title'],50)."' style='border:0px;max-height:60px;max-width:60px' /></td>"; würde jemand helfen :) DANKE schon einmal Bearbeitet von Catzenjaeger am 15. Juni 2016 16:01:35 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Wemi |
Geschrieben am 14. Juni 2016 12:35:57
|
|
Am einfachsten: Lass den INNER JOIN für die Bilder weg und starte eine erneute Anfrage innerhalb der While Schleife darunter. Joins sind nicht immer die beste Lösung. "Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 12:38:30
|
|
ok das sollte machbar sein .. danke .. aber wie bekomme ich dann erste Bild? es werden ja bis zu 10 Bilder unter der gleichen figure_images_figure_id abgelegt ... heisst da sind dann 10 Bilder mit der gleichen figure_id aber unterschiedlichen automatisch vergebenen DB_ID ich brauche ja nur das erste Bild davon und weiss nicht wie das auswählen kann. |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Wemi |
Geschrieben am 14. Juni 2016 13:05:14
|
|
Hier kannst du das Limit ja auf 1 setzen. du kannst aber auch Code Download Code figure_image=dbarray($deinquery); Also while schleife, dann wird dir dir das letzte Bild angezeigt. "Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 13:18:28
|
|
so was? --> Code Download Code
Aber da ist ja wieder ein INNER JOIN nötig weil ich ja in zwei Tabellen muss und die figur mit der einf´eindeutigen figure_id Identifizieren muss ich habe mal nach while geggeolt aber für ein Anfänger ist das echt das hart: https://www.php-einfach.de/php-tutori...schleifen/ |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 14. Juni 2016 13:46:25
|
|
Whileschleifen sind im Grunde ganz einfach und nur dann kompliziert, wenn man den Sinn dahinter nicht erkennt. Eine while-Schleife dient dazu, Aktionen durchzuführen solange eine vorher bestimmte Bedingung erfüllt ist. Der Grundaufbau einer while Schleife ist deshalb auch denkbar einfach: Code Download Code while (Bedingung ist wahr) { Es gibt auf den meisten PHP-Seiten auch dieses berühmt-berüchtigte Beispiel, in der einfach eine Zahl um eins erhöht und ausgegeben wird bis die Zahl 5 erreicht: Code Download Code $x = 1; Im ersten Step wird die in der Schleife genutzte Variable "x" auf den Wert 1 gesetzt. Die Whileschleife prüft dann, ob die Zahl kleiner als 5 ist. Ist das der Fall (Bedingung) wird der Text ausgegeben und die Zahl um 1 erhöht ($x++). Daraufhin wird die Schleife erneut durchlaufen, wieder geprüft usw. Das Ganze läuft dann soweit bis die Variable den Wert "5" erreicht. Ich hoffe ich konnte dir das Ganze damit jetzt etwas näher bringen :) Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 13:51:59
|
|
ok aber das umsetzen in meinem Fall ist kompliziert: Zitat while (DB_FIGURE_ITEM figure_id == DB_FIGURE_IMAGES figure_images_figure_id AND das erste Bild von den 10 gespeicherten ($x <= 1) { zeige mir hier dann das Bild Nimmer 1 an; } so wäre doch erstmal die Denkweise oder? Bearbeitet von Catzenjaeger am 14. Juni 2016 13:53:17 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Wemi |
Geschrieben am 14. Juni 2016 13:52:35
|
|
Oh Mann! du hast für deine erste Abfrage doch auch irgendwo das while($data=dbarray($result)){ // Dein ganzer Code mit dem echo Krams drin } Und da zwischen setzt du die erneute Anfrage. Und du brauchst da dann keinen Join. Code Download Code $result = dbquery("SELECT Eine ganz einfache und simple Datenbankanfrage. Warum kompliziert, wenn es doch so einfach ist. $data['figures_id'] kommt dann aus deiner ersten Abfrage. Also entsprechend anpassen. "Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 13:55:25
|
|
ja für euch Profis ist das einfach danke für die Aufklärung ich habs zwar immer noch raus aber probiere das mal irgendwie Das Problem ist ja nur das es nichts anzeigt weil es ja mehrere Bilder gibt mit gleicher ID (also der figure_id) |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 14. Juni 2016 13:57:50
|
|
Genau aus diesem Grund habe ich dir die GRUNDLAGEN erklärt. Du machst einfach den Fehler, beim Hausbau zuerst das Dach zu bauen statt das Fundament zu giessen.... Vielleicht solltest du erstmal mit kleineren Dingen anfangen und dich mit den Grundlagen auseinandersetzen. Deine FigureLIB wurde, wenn ich das jetzt mal so grob überfliege mehr von den Supportern hier als von dir selbst programmiert und ich weiss nicht ob das wirklich im Sinne des Erfinders ist Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 14:09:03
|
|
ich weiss ich bin ja lernwillig und habe auch viel selbst hinbekommen. .. ich wusste worauf ich mich einlasse aber was soll ich machen ... ich brauche das nun einmal ... Uns das projekt ist doch geil zum lernen. Wenn ihr mal überlegt vor 3 Wochen habe ich noch simple Dinge gefragt die ich jetzt beherrsche also soooom schlimm ist ja auch nicht Jetzt komme ich mir wieder blöd vor weil ich so oft frage ... so als wenn ich jetzt als Last hier immForum bin.. |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 14. Juni 2016 14:11:29
|
|
Datenbankabfragen- und ausgaben haben in erster Linie überhaupt nichts mit Fusion 9 zu tun. Einzig die Fusioneigenen Konstanten und Variablen gilt es zu beachten. Das ändert aber nichts an der zu beachtenen grundlegenden Syntax Ich spreche dir ja auch den in meinen Augen lobenswerten "Lerneffekt" nicht ab, aber für einen Anfänger ist so eine Infusion wie deine schon ziemlich Hardcore. Nicht falsch verstehen, ich finde es super dass du lernen willst. Aber auch Lernen beginnt bei den Grundlagen oder hast du in der ersten Klasse schon komplizierte Texte flüssig gelesen? Und wenn du das kleine "EinmalEins" nicht beherrschst wird Bruchrechnen und Wurzelziehen für dich ein Mysterium bleiben Auch uns hier ist das Wissen nicht mit in die Wiege gelegt worden, auch wir mussten lernen, fragen, nachfragen und ausprobieren. Wichtig ist einfach, dass man sich zu Anfang nicht "übernimmt" denn dann sind Frustmomente vorprogrammiert. Erfolgserlebnisse sind wichtig für den Lernprozess Bearbeitet von John Doe am 14. Juni 2016 14:18:53 Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 14. Juni 2016 14:25:04
|
|
Darf ich noch einmal etwas fragen????? ich möchte gerne die Darstellung der Bilder der jeweiligen Figuren so abfangen, dass wenn kein Bild hochgeladen wurde ein Platzhalter-Bild angezeigt wird. Leider funzt das bei dieser Abfrage nicht .. ich gehe davon aus, dass es daran liegt weil ja eigentlich Bilder da sind ... heißt die variable $data['figure_image_thumb'] ist ja immer == 1 sowie ein Bild im Ordner ist Irgendwie müsste ich noch herausfiltern das nur bei Figuren wo kein Bild geuploadet wurde ein Platzhalter Bild erscheint. Könnt ihr noch einmal helfen? Danke :) Code Download Code $result2 = dbquery("SELECT Bearbeitet von Catzenjaeger am 15. Juni 2016 16:08:17 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Wemi |
Geschrieben am 15. Juni 2016 16:35:45
|
|
Wenn kein Bild, dann ist es 0, bzw. PDO wird dir einen Fehler melden. Abfabgen kannst du es so: Code Download Code $result2 = dbquery("SELECT "Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Catzenjaeger |
Geschrieben am 15. Juni 2016 16:49:45
|
|
danke ... klappt aber nicht Seite bleibt leer ... Code Download Code // WHILE SCHLEIFE FÜR DAS HOLEN DES BILDES AUS ORDNER / ORDNER MUSS IN infusion.db.php deklariert sein! SO AUCH NICHT Code Download Code $result2 = dbquery("SELECT Bearbeitet von Catzenjaeger am 15. Juni 2016 17:44:20 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Wemi |
Geschrieben am 16. Juni 2016 05:59:53
|
|
An der falschen Stelle eingebaut? Was gibt dir denn ein echo von $data['figure_id'] kurz vor deiner Datenbankanfrage aus? "Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
Springe ins Forum: |