tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
262
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    aargau aargau ist offline Mitglied Brokat
    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...
     

  2. #2
    aargau aargau ist offline Mitglied Brokat
    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 idname
    FROM folder
    UNION SELECT id
    name
    FROM pictures
    WHERE folder 
    =
     

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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

  4. #4
    aargau aargau ist offline Mitglied Brokat
    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?
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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

  6. #6
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Hat geklappt! Danke für deine Hilfe.
     

  7. #7
    aargau aargau ist offline Mitglied Brokat
    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?
     

  8. #8
    Avatar von Napofis
    Napofis Napofis ist offline require 'brain.php';
    Registriert seit
    Jun 2007
    Ort
    Bayern
    Beiträge
    587
    Hi das mit deiner Union ist etwas ungünstig.

    Es wäre vielleicht besser gewesen mit JOIN zu arbeiten. ZB:

    Tabelle folder:
    id int PK
    pId int KEY
    name varchar
    owner int
    Tabelle pictures:
    id int PK
    folder int FK folder.id
    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.

    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

  1. MP3-Ordner in MySQL schreiben
    Von Felix Kunsmann im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 04.03.07, 00:14
  2. MP3-Ordner in MySQL schreiben
    Von Felix Kunsmann im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 04.03.07, 00:14
  3. Gallery die einen Ordner ausliest
    Von zirag im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 24.04.05, 17:32
  4. Gallery mit MySQL
    Von silicore im Forum PHP
    Antworten: 3
    Letzter Beitrag: 23.04.05, 03:38
  5. [PHP+MySQL] MySQL Suche Frage ...
    Von serocs im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.06.04, 23:22