ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
262
262
EMPFEHLEN
-
20.09.11 07:36 #1
- Registriert seit
- Oct 2006
- Ort
- Schweiz / Fricktal
- Beiträge
- 322
Ich bin dabei mir eine kleine Gallery Klasse zu Programmieren. Dabei wäre meine Idee gewesen das ein User dazu Ordner anlegen kann und die Bilder darin Hochladen kann. Es soll aber auch möglich sein unsortierte Bilder zu haben, diese werden dann einfach auf der Übersichtsseite ohne Ordner angezeigt. Soweit so gut, ich denke mit zwei Querys bzw. insgesammt vier wäre dies Problemlos zu Lösen...
Einfach die Anzahl Ordner sowie die Anzahl Bilder ohne Ordner vom jeweiligen User auslesen und dies dann mal so an die Blätterklasse weitergeben.
Ausgabe der Bilder dann wieder über zwei Querys eine mit allen Ordnern, eine mit den Bilder.
Ich Frage mich allerdings ob ich dies nicht mit zwei Querys lösen könnte. Eine um die Anzahl Elemente zu ermitteln und eine um X Einträge pro Seite an Ordner und Bilder auszugeben. Halt das selbe wie die 1. Query einfach mit Limit...
-
20.09.11 09:17 #2
- Registriert seit
- Oct 2006
- Ort
- Schweiz / Fricktal
- Beiträge
- 322
Naja, ich hab jetz ein Lösungsansatz gefunden...
UNION heisst das gute ding wohl, welche es ermöglicht die Tabellen "zusammen zu fassen". Nur habe ich nun so das Problem das ich nicht unterscheiden kann ob es nun ein Ordner oder ein Bild ist. Was habe ich da für möglichkeiten?
Eine Lösung wäre sicherlich einfach eine Spalte mehr anzulegen und diese mit einer 1 oder 0 zu versehen um es so ausfindig zu machen. Aber das würde extra Speicher brauchen und wäre auch nicht ganz so schön. Gibt es da nichts einfachers?
PHP-Code:SELECT id, name
FROM folder
UNION SELECT id, name
FROM pictures
WHERE folder =0
-
Eine weitere Spalte ist normalerweise die Lösung
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT id, name, 'folder' AS TYPE FROM folder UNION SELECT id, name, 'file' AS TYPE FROM pictures WHERE folder =0
PS: Habs zu den Datenbanken verschoben...---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
20.09.11 10:29 #4
- Registriert seit
- Oct 2006
- Ort
- Schweiz / Fricktal
- Beiträge
- 322
Na dann werde ich das wohl so machen müssen. Noch eine Frage, kann ich SQL_CALC_FOUND_ROWS in Verbindung mit UNION nutzen oder müsste ich dann für die Einträge und Anzahleinträge zwei Querys machen?
-
Sollte eigentlich gehen- Probiers einfach mal aus....
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
20.09.11 13:48 #6
- Registriert seit
- Oct 2006
- Ort
- Schweiz / Fricktal
- Beiträge
- 322
Hat geklappt! Danke für deine Hilfe.
-
23.09.11 11:36 #7
- Registriert seit
- Oct 2006
- Ort
- Schweiz / Fricktal
- Beiträge
- 322
Habe doch noch ein Problem. Die Query soll ja in Verbindung mit einer Blätterfunktion genutz werden. Nur habe ich nun das Problem das ich ja vor dem ich den Limit xx,10 fülle die Blätterfunktionsklasse wissen muss wie viele Einträge das es gibt. Ich könnte natürlich hier einfach die Abfrage abfeuern und danach erst schauen ob es überhaupt so viele Einträge gibt, aber ich bin mir nicht sicher ob dies so optimal wäre. Aber eine zweite Query nur um vorgängig die Anzahl ausfinig zu machen finde ich auch nicht optimal.
Wie macht ihr solche dinge wenn ihr SQL_CALC_FOUND_ROWS nutzt?
-
Hi das mit deiner Union ist etwas ungünstig.
Es wäre vielleicht besser gewesen mit JOIN zu arbeiten. ZB:
Tabelle folder:
Tabelle pictures:id int PK
pId int KEY
name varchar
owner int
So kannst du die Ordner auch verschachteln, alle Ordner mit pId NULL sind in der Wurzel. Man könnte auch eine individuelle Sortierung dann mit einbringen.id int PK
folder int FK folder.id
name varchar
owner int
Die Bilder abfragen kannst du dann so:
Code sql:1 2 3 4 5
SELECT SQL_CALC_FOUND_ROWS `p`.`name`, `p`.`id`, `f`.`name` AS `folder` FROM `pictures` AS `p` JOIN `folder` AS `f` ON `p`.`folder`=`f`.`ìd` WHERE `f`.`id` = 0 LIMIT 0, 30
So kannst ermittelst du wie viele Einträge es insgesamt wäre ohne LIMIT.
Code sql:1
SELECT FOUND_ROWS()
Je nach Seite und Ordner passt du dann einfach die LIMIT und WHERE Konditionen an.
Ähnliche Themen
-
MP3-Ordner in MySQL schreiben
Von Felix Kunsmann im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 04.03.07, 00:14 -
MP3-Ordner in MySQL schreiben
Von Felix Kunsmann im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 04.03.07, 00:14 -
Gallery die einen Ordner ausliest
Von zirag im Forum Flash PlattformAntworten: 6Letzter Beitrag: 24.04.05, 17:32 -
Gallery mit MySQL
Von silicore im Forum PHPAntworten: 3Letzter Beitrag: 23.04.05, 03:38 -
[PHP+MySQL] MySQL Suche Frage ...
Von serocs im Forum PHPAntworten: 2Letzter Beitrag: 25.06.04, 23:22





Zitieren

Login





