Bilder Gallery

  • Themenstarter Themenstarter Blümchen
  • Beginndatum Beginndatum
B

Blümchen

Guten Abend euch allen,

so da ich kein fertiges Script gefunden habe für ein Bilder Upload bzw. wenn ich eines gefunden habe siehe auch dieses hier: http://www.tutorials.de/tutorials209347.html bin ich heute Mittag zu dem Entschluss gekommen selber eines zu schreiben. Das habe ich nun auch gemacht und man kann nun Bilder Uploaden und es werden auch Kategorien angelegt. Das ganze passiert nicht in Ordnern sondern in der Datenbank.

Wie die aussieht das könnt Ihr hier sehen:

Tabelle: tblbilder

CREATE TABLE `tblbilder` (
`id` int(11) NOT NULL auto_increment,
`benutzer` int(11) NOT NULL default '0',
`kategorie` int(11) NOT NULL default '0',
`datum` int(11) NOT NULL default '0',
`bild` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

Tabelle: tblkategorien

CREATE TABLE `tblkategorien` (
`id` int(11) NOT NULL auto_increment,
`kategorie` varchar(64) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;


Tabelle: tbluser

CREATE TABLE `tbluser` (
`id` int(11) NOT NULL auto_increment,
`vorname` varchar(64) NOT NULL default '',
`nachname` varchar(64) NOT NULL default '',
`nickname` varchar(32) NOT NULL default '',
`email` varchar(128) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

So nun zu meinem Problem mit der Ausgabe. Ich habe vor die Bilder wie folgt auszugeben und auch nach dem Datum sortiert.

Oben soll immer Das Datum stehen z.B. wenn man das heutige Datum nimmt den 16.07.2005 dann soll ein kleiner Strich kommen darunter soll dann ganz am Anfang der Namen kommen der die Bilder Online gestellt hat, dann soll die Kategorie kommen und dann soll noch eine Anzahl der Bilder kommen, wie viele da eben für den Tag da sind und für die Kategorie.

Sollten es dann zu dem Tag noch andere Kategorien geben, dann sollen die darunter aufgelistet werden. Sollte es keine Bilder mehr geben aber ein älteres Datum so soll das dann darunter aufgelistet werden.

Das ganze soll dann so aussehen:

16.05.2005
*****************
Blümchen II Private Bilder II 33 Bilder
Blümchen II Menschen II 64 Bilder


13.05.2005
*****************
Blümchen II Geburtstag II 23 Bilder
Blümchen II Geschwister II 64 Bilder


So wenn man dann auf die Kategorie klickt, dann soll man auf eine Seite kommen wo dann die Bilder ebne der Reihe nach dargestellt werden. Es sollen immer 6 Bilder in einer Reihe, sollten es mehr sein dann eben unten weiter.

Nun meine Frage. Kann mir da mal eben kurz jemand helfen das auf die Reihe zu bekommen, dass ich das heute Nacht Online stellen kann.

Gruß Blümchen
 

Anhänge

  • tblbilder.JPG
    tblbilder.JPG
    8,6 KB · Aufrufe: 389
  • tblkategorien.JPG
    tblkategorien.JPG
    3,9 KB · Aufrufe: 392
  • tbluser.JPG
    tbluser.JPG
    7,2 KB · Aufrufe: 383
Folgendes Query gibt bestimmt eine Fehlermeldung, die Du mir bitte postest.
Aber ich denke, es geht in die richtige Richtung. Ohne die DB ist es halt immer etwas schwierig, die Querys aus dem Kopf syntaktisch korrekt zu schreiben:
Code:
SELECT
tblkategorien.id AS `kategorieID`,
tblkategorien.kategorie AS `kategorieBezeichnung`,
MAX(tblbilder.datum) AS `latest`,
count(tblbilder.id) AS `picsInCat`,
SUBSTRING(
  MAX(
    CONCAT(
      LPAD(
        tblbilder.datum,40,'0'
      ),
      tbluser.nickname
    )
  )
) AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tblkategorien
  ON tblbilder.kategorie=tblkategorien.id
LEFT JOIN tbluser
  ON tblbilder.benutzer=tbluser.id
GROUP BY tblkategorien.id
ORDER BY MAX(tblbilder.datum) DESC
Als Ergebnis sollte ungefähr so etwas heraus kommen:
Code:
kategorieID  kategorieBezeichnung  latest      picsInCat  nicknameFromLatestInserter
-------------------------------------------------------------------------------------
          4  Private Bilder        16.05.2005         33  Blümchen
          3  Menschen              16.05.2005         64  Blümchen
          1  Geburtstag            13.05.2005         23  Blümchen
          2  Geschwister           13.05.2005         64  Blümchen
Mit der kategorieID kannst Du auf die Kategorieseite verlinken.
Da Du das Datum als int und nicht als datetime speicherst, wirst Du es mit PHP nach dem Auslesen anpassen müssen.

Hier noch ein Beispielcode, um die optische Gruppierung zu erreichen:
PHP:
//db-connection, query in $result
$temp=null;
while ($row=mysql_fetch_assoc($result)) {
    if ($temp!=$row['latest']) {
        echo "<h1>".$row['latest']."</h1>";
        $temp=$row['latest'];
    }
    //restliche Felder entsprechend ausgeben.
}
Gruß hpvw
 
Hallo,

danke für deine Antwort. Leider habe ich das noch nicht verstanden, aber du wolltest ja eh erst mal die Meldung was da dann kommt, wenn ic hden Code nehme den du mir gerade gegeben hast.

Das kommt da nun:

Parse error: parse error, unexpected $ in www/htdocs/bildergalerie/bilder_ausgabe.php on line 24

In der Zeile 24 steht folgendes:

PHP:
?>

Gruß Blümchen
 
Hehe, ich dachte eigentlich an die Fehlermeldung, die [phpf]mysql_error[/phpf] ergibt.
Was Du beschreibst ist ja eine PHP-Fehlermeldung.
Versuche doch erstmal, den ersten Code in phpMyAdmin auszuführen.
Dann gibt es entweder eine MySQL-Fehlermeldung oder er zeigt Dir eine Tabelle, die der im zweiten Code-Abschnitt ähnelt oder er zeigt eine völlig andere Tabelle, was äußerst schade wäre, weil es dann nicht nur um Syntaxfehler in dem Query geht.
Wenn Du erstmal ein Query hast, was die für die Ausgabe benötigten Daten besorgt, können wir uns um den PHP-Code kümmern ;).

Gruß hpvw
 
Hallo,

hmm ich verstehe zwar nicht warum ich das in PHPMyAdmin einfügen soll aber bitte. Wenn ich das mache, dann kommt diese Meldung:

SQL-Befehl: Dokumentation

SELECT tblkategorien.id AS `kategorieID` , tblkategorien.kategorie AS `kategorieBezeichnung` , MAX( tblbilder.datum ) AS `latest` , count( tblbilder.id ) AS `picsInCat` , SUBSTRING( MAX( CONCAT( LPAD( tblbilder.datum, 40, '0' ) , tbluser.nickname ) ) ) AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tblkategorien ON tblbilder.kategorie = tblkategorien.id
LEFT JOIN tbluser ON tblbilder.benutzer = tbluser.id
GROUP BY tblkategorien.id
ORDER BY MAX( tblbilder.datum ) DESC
LIMIT 0 , 30

MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tb

Gruß Blümchen
 
Ups, ich hatte den zweiten Parameter von SUBSTRING vergessen:
Code:
SELECT
tblkategorien.id AS `kategorieID`,
tblkategorien.kategorie AS `kategorieBezeichnung`,
MAX(tblbilder.datum) AS `latest`,
count(tblbilder.id) AS `picsInCat`,
SUBSTRING(
  MAX(
    CONCAT(
      LPAD(
        tblbilder.datum,40,'0'
      ),
      tbluser.nickname
    )
  ),41
) AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tblkategorien
  ON tblbilder.kategorie=tblkategorien.id
LEFT JOIN tbluser
  ON tblbilder.benutzer=tbluser.id
GROUP BY tblkategorien.id
ORDER BY MAX(tblbilder.datum) DESC
Wenn es klappt, erkläre ich das Query ;)
Die Fehlersuche ist IMHO leichter, wenn man erst das Query gerade rückt. Dann kann man sich nämlich sicher sein, dass der Fehler nicht am PHP-Code liegt.
Die 41 musst Du evtl. +-1 anpassen, falls vor dem Namen noch eine Ziffer steht (42) oder der erste Buchstabe vom Namen fehlt (40).

Gruß hpvw
 
Hallo,

danke für deine Hilfe, nun kommt aber dann diese Medung:

SQL-Befehl: Dokumentation

SELECT tblkategorien.id AS `kategorieID` , tblkategorien.kategorie AS `kategorieBezeichnung` , MAX( tblbilder.datum ) AS `latest` , count( tblbilder.id ) AS `picsInCat` , SUBSTRING( MAX( CONCAT( LPAD( tblbilder.datum, 40, '0' ) , tbluser.nickname ) ) , 41 ) AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tblkategorien ON tblbilder.kategorie = tblkategorien.id
LEFT JOIN tbluser ON tblbilder.benutzer = tbluser.id
GROUP BY tblkategorien.id
ORDER BY MAX( tblbilder.datum ) DESC
LIMIT 0 , 30

MySQL meldet: Dokumentation
#1111 - Invalid use of group function

Gruß Blümchen
 
Hallo,

so wie gerade im Chat besprochen, bekommst du hier nun mal den Code, dass du dir ein besseres Bild machen kannst:

PHP:
<?php
include "../data/config.php";
$result=mysql_query("SELECT tblkategorien.id AS `kategorieID` , tblkategorien.kategorie AS `kategorieBezeichnung` , MAX( tblbilder.datum ) AS `latest` , count( tblbilder.id ) AS `picsInCat` , SUBSTRING( MAX( CONCAT( LPAD( tblbilder.datum, 40, '0' ) , tbluser.nickname ) ) , 41 ) AS `nicknameFromLatestInserter`
FROM tblbilder
LEFT JOIN tblkategorien ON tblbilder.kategorie = tblkategorien.id
LEFT JOIN tbluser ON tblbilder.benutzer = tbluser.id
GROUP BY tblkategorien.id
ORDER BY `latest` DESC"); 
$temp=null;
while ($row=mysql_fetch_assoc($result)) {
    if ($temp!=$row['latest']) {
        echo "<h1>".$row['latest']."</h1>";
        $temp=$row['latest'];
    }
    //restliche Felder entsprechend ausgeben.
} 
?>

OK nun kommt dann wieder diese Meldung:

Parse error: parse error, unexpected $ in www/htdocs/bildergalerie/bilder_ausgabe.php on line 24
Gruß Blümchen
 
Zuletzt bearbeitet von einem Moderator:
@Bluemchen: Falls Du's noch nicht gesehen hast, im anderen Thread haben wir noch eine Moeglichkeit diskutiert mein Script bei Dir einzusetzen.
Genaueres am besten dort nachlesen, da dies ja mit diesem Thread nur indirekt zu tun hat.
Ansonsten mach ich mal ein wenig Werbung fuer einen Thread der eigentlich keiner Werbung bedarf (2300 Klicks in einem Monat), fuer den Fall, dass dieses Script hier im Meer versinken sollte oder Bedarf an was bereits fertigem besteht.
Gallery-Thread
In Post 130 gibt es die Versionen fuer FTP und SSH2-SFTP.
In Post 144 gibt es dann die Gallerie nochmal mit den Dateisystem-Funktionen. Jedoch ohne Unterverzeichnisse.
Die Version mit Unterverzeichnissen wurde urspruenglich im Thread gepostet, funktionierte aber nur bei gewissen Einstellungen welche im Internet wohl recht selten anzutreffen sind.

@Bluemchen: Falls Dein Interesse an meinem Script vollstaendig erloschen ist, dann wuensche ich Dir auf jeden Fall viel Erfolg mit Deinem Script.
Auch wenn es aus Performance-Gruenden nicht gerade sinnig ist die Bilder direkt in die DB zu flanschen.
 
Zuletzt bearbeitet:
Hallo reptiler,

nee du meine Interesse ist noch nicht ganz na deinem Script erloschen aber ich brauch auch einfach ein Script das geht und wo ich nicht erst mal den ganzen Tag dran sitzen muss um es zum laufen zu bringen verstehst du was ich meine? Aber ich denke ich mach da auf alle Fälle mal noch dran weiter. Aber leider hat mein Provider eben ganz besondere Sachen und da muss man Sachen anderes schreiben.

Du hast ja gesehen ich habe alles versucht, dass das Script bei mir geht aber leider geht da überhaupt nichts ich bekomme immer nur die blöden Fehlermeldungen.

Denn ich finde auch, dass dein Script sehr an deine Seite angepasst ist und das ist nicht so gut. Ich frage mich gerade warum machst du daraus nicht einfach ein Tutorial? Das währe doch am bestens als immer nur hier was zu schreiben oder?

Zu meinem Script:

Wo steht dann dass ich die Bilder in der DB speichere? Davon habe ich nie was gesagt und das mache ich auch nicht. Denn wenn man mal ca. 20000 Bilder drin hat, dann macht die das nimmer so mit, deshalb lasse ich das auch. Aber ich bin heute Nacht schon weiter gekommen. Ich kann nun die Bilder nach Datum sortieren und auch darstellen, wenn ich das nun anklicke, dann kann ich auch das Bild im PopUp öffnen. Nun muss ich dann nur noch einen Weg finden, dass ich da Comments schreiben kann!

Gruß Blümchen
 

Neue Beiträge

Zurück