Wenn "WHERE fotoset=1" dann schauen ob Fotos freigeschaltet

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wenn "WHERE fotoset=1" dann schauen ob Fotos freigeschaltet

    Hallo,

    ich habe hier eine Galerie erstellt bei der andere User Fotos zu Events hochladen können.
    Sobald Fotos zu einem Event hochgeladen werden lasse ich fotoset in der Tabelle events zu dem entsprechenden Event auf 1 setzen.
    Die Fotos müssen allerdings erst von einem Admin nach einer Sichtprüfung aktiviert werden.

    Nun mein Problem...

    Ich lasse auf der Startseite die letzten 5 Events zu denen es Fotos gibt anzeigen.
    PHP-Code:
    mysql_query("SELECT * FROM events WHERE fotoset=1 ORDER BY datum DESC LIMIT 5"); 
    Danach frage ich ab wieviele Fotos zu dem Event vorhanden sind.
    PHP-Code:
    mysql_query("SELECT * FROM fotos WHERE eventid='$row[id]' AND aktiviert=1"); 
    Nun wird natürlich wenn es nur neue Fotos beinhaltet welche noch nicht freigeschaltet sind eine 0 erscheinen.
    Lieber wäre es mir wenn das Event ausgelassen wird wenn 0 aktivierte Fotos vorhanden sind und dann ein anderes Event nachrückt.
    Dazu müsste ich die Abfragen irgendwie kombienieren, hab da aber leider ein Brett vor dem Kopf und hoffe das mir von Euch jemand den entscheidenen Tip geben kann.
    Wenns geht nur nen kleinen Hinweis, keine fertige Abfrage die ich nur kopieren muss. Ich komme gern selber mit etwas denkleistung zum Ende, nur manchmal brauch ich eben nen kleinen Anstoß

  • #2
    PHP-Code:
    "SELECT * FROM event t1, fotos t2 WHERE t1.fotoset=1 AND t2.eventid='".$row[id]."' 
    AND t2.aktiviert=1 ORDER BY t1.datum DESC LIMIT 5"

    versuchs doch mal mit dem query
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Die Anzahl der Bilder je event zählen (COUNT, INNER JOIN, GROUP BY)

      Anstoß: http://www.php-resource.de/forum/sho...threadid=28292

      @benny
      Deine Abfrage würde die letzten 5 Bilder liefern, das sid nicht unbedingt die letzten 5 Events
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4


        Ich brauch noch ein bisschen mehr Hilfe.
        Ich arbeite, oder will es versuchen, das erste mal mit Join und irgendwie übersteigt das alles grad meinen Horrizont.

        Group By ok, Count evtl. auch, aber wie bekomme ich das ganze in eine Abfrage zusammen ?

        Die Events in der Tabelle Events haben ein Datum nach welchem ich sortieren muss. Die Tabelle Fotos enthält nur die Eventid und kein Datum.

        Ich hab auch leider bei meiner Suche keine genauen Infos zu Inner Join finden können.

        Hilfe

        Kommentar


        • #5
          wie sieht dein bisheriger Versuch aus?

          Kommentar


          • #6
            Das hier ist das letzte was ich noch gespeichert hatte.
            Die anderen Versuche waren sehr ähnlich.
            Ich hab es auf dem Posting Benny aufgebaut weil ich keinerlei Hintergrundinfos zu Inner Join gefunden hatte und daher auch nicht wirklich damit klar gekommen bin.

            PHP-Code:
            mysql_query("SELECT * FROM events t1, fotos t2 WHERE t1.fotoset=1 AND t1.freigeschaltet=1
             AND t1.jahr='"
            .$aktjahr."' AND t1.monat='".$aktmonat."' AND t1.tag<='".$akttag."' AND t2.eventid=t1.id
             AND t2.aktiviert=1 ORDER BY t1.tag DESC LIMIT 5"
            ); 
            Den Weg "Letzte Events, Fotos WHERE aktiviert=1 GROUP BY eventid" hatte ich nach den Postings hier im Kops, konnte den aber nicht so wirklich umsetzen.
            Das Count konnte ich auch nicht so wirklich zuordnen für den Zweck.
            Vielleicht ist es hier mit 34 Grad im Zimmer ein wenig zu warm zum denken
            Bisher kam ich hier nach suchen oder nach Tips zu speziellen Fragen immer gut weiter, aber diesmal steh ich irgendwie neben mir

            Kommentar


            • #7
              mysql_query("SELECT * FROM fotos WHERE eventid='$row[id]' AND aktiviert=1");
              Noch ein Tip:Wenn Du Integer-Ids abfragst, so wie eventid, NIE in '' setzen. Bei '' wird nämlich kein Index verwendet und Deine Abfrage wird langsam. Bei uns hat mal ein Praktikant fast den Server lahmgelegt damit.

              Bessere Syntax wäre
              PHP-Code:
              mysql_query("SELECT COUNT(*)  FROM fotos WHERE eventid=".$row['id']." AND aktiviert=1"); 
              Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

              Kommentar

              Lädt...
              X