Ankündigung

Einklappen
Keine Ankündigung bisher.

If/Else Lösung für Fotoalbum gesucht

Einklappen

Neue Werbung 2019

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

  • #16
    Nur, es reagiert auch nicht wenn es "sonnenschein" entspricht
    Dann trifft deine Bedingung nicht zu. Lass dir ausgeben was in $item->relative_url_cache steht.

    Ich kann mir eine Lösung vorstellen, in der es nur entsprechen muss und nicht nur vorkommen, in dem ich dafür ein Modul fremdgebrauche.
    Ja, wie auch immer du das dann willst, möglich ist beides.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #17
      Es ist wohl nicht so einfach wie ich anfangs dachte. Es ist auf jeden Fall viel komplizierter. Ich hole mal aus:

      Eine Ausgabe funtkioniert so nicht. Warum weiß ich nicht. Hängt vielleicht von den Kerndateien oder Helpers und Controllers Dateien ab, die es z.B. bei den Modulen gibt.

      Ich habe meine Gallery3 ja schon viel modifizert, aber hier bekomme ich das nicht hin.

      Zum Beispiel habe ich die "Description" der Fotos aus der Sidebar raus und in den Main.

      Description Schnipsel:
      PHP-Code:
        <? if ($item->description): ?>
        <li>
          <strong class="caption"><?= t("Description:"?></strong>
           <?= nl2br(html::purify($item->description)) ?>
        </li>
        <? endif ?>
      Da sieht es so einfach aus: In die Datenbank/Tabelle/Spalte schauen und dann ausgeben. Das funktioniert aber in meinem Fall, den ich vorhabe, nicht.

      Es gibt ein Modul zum anzeigen von Tags. Wenn ich daraus PHP Code entwende, dann funktioniert er nicht, weil er nur funktioniert, wenn das Modul komplett installiert und aktiviert ist.

      Ein anders Beispiel, dass ich ausprobiert habe war, dass ich die GPS Coordinates zu den Photos (sind in einer Datenbanktabelle abgelegt) an einer anderen Stelle ausgeben lasse. denkste, is nicht.
      Wobei ich diesen Codeschnipsel selbst erstellt habe, der aber nur in den PHP Seiten des Moduls funktioniert.
      Schnipsel aus exif GPS Module:
      PHP-Code:
      <ul>

        <li><a href="https://maps.google.com/maps?q=<?=$latitude?>,<?=$longitude?>" target="_blank"><?=$latitude?>,<?=$longitude?></a>

      </ul>
      Wenn ich den Codeschnipsel an einer anderen Stelle auf der Seite (z.B. einer Static Page) einbinde, dann wird nur das Komma angezeigt.

      Soweit logisch, wenn es abhängig von einem Modul ist.

      Ich habe nicht vor, das extra Tags Modul zum anzeigen von Tags in der Sidebar zu installieren. Es gibt bereits ein Tag Module. Die Tags werden dort aber nicht ausgegeben/angezeigt. Das Search Modul greift darauf zu. Meine Idee ist, das Tag Module für die if/else Anwendung zu benutzen. Wenn im entsprechenden Tag zum Album/Photo "Sonnenschein" oder "Regen" steht, dann soll es jeweils ein Foto dafür ausgeben, dass ich in die Gallery einbinde. Also wenn ein Album/Foto _nicht_ mit dem Tag "Regen" versehen ist, dann soll das sonnenschein.jpg erscheinen. Verkürzt reicht bei meiner Idee erstmal if = "Regen" else = sonnenschein.jpg (sorry, hatte oben einen verwechslerdenkfehler, es ging erstmal nur um die Idee). Wie auch immer was dann wann wo steht, ob Regen oder Sonnenschein, aber so soll es funktionieren.

      Nun das erste Problem: Wie gebe ich dem zum Album/Photo zugehörigen Tag Datenbankeintrag in der Mysql Datenbaktabelle/Spalte aus?
      Info: Die Alben/Photos sind in der Tabelle "items" mit einer "id" versehen. Dann gibt es eine Tabelle "items_tags" in der die "id" der Alben/Photos die mit Tags versehen sind eingetragen ist und sie zusätzlich eine "tag_id" bekommen. Der tatsächliche Tag zum Album/Photo ist in der Tabelle "tags" mit der "tag_id" hinterlegt.
      Wer auch immer sich das ausgedacht hat die Sache so zu verschachteln, es wird schon irgend einen Sinn ergeben.
      Aber jetzt komm mal an den Tag zum Album/Photo ran und lass ihn ausgeben... Ich wüsste jetzt nicht wie.

      PS: irgendwie habe ich zur zeit eine Pechsträhne. Habe erst letztes Jahr meine reine HTML Fotogalerie auf Gallery3 umgestellt und nun machen die das Projekt dicht. Glückwunsch!

      Kommentar


      • #18
        Hast du irgendwelche Datenbankabfragen, wo die Bilder gesucht werden? Dann kann man da auch den Tag mit reinholen.
        Ohne konkretere Informationen und Codeteile ist die Problembeschreibung einfach zu unverständlich um zu helfen. Was das Beispiel mit den GPS-Daten soll, kann ich auch nicht nachvollziehen.
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #19
          Das Beispiel mit den GPS Daten sollte darlegen, dass innerhalb des Modules mit <?= $wasauchimmer ?> gearbeitet werden kann. Mehr nicht. Bei anderen Sachen muss ein Modul aktiv sein und bei wieder anderen ist es egal.

          Ich habe jetzt ein Modul gefunden, welches die Tags (u.v.m.) unter den Vorschaubildern anzeigt. Dieser Codeschnipsel ist aus einer "helpers" Datei. Hiermit werden die Tags zu den Fotos aus der Datenbank geholt und den Fotos zugeordnet und unter ihnen angezeigt:
          PHP-Code:
              // Display Tags on Thumbnails
              
          if (module::is_active("tag")) {
                
          $tags ORM::factory("tag")
                            ->
          join("items_tags""tags.id""items_tags.tag_id")
                            ->
          where("items_tags.item_id""="$item->id)
                            ->
          find_all();
                if (
          count($tags) > 0) {
                  
          $results .= "<li>";
                  
          $results .= t("Tags:") . " ";
                  
          $anchors = array();
                  foreach (
          $tags as $tag) {
                    
          $anchors[] = "<a href=" $tag->url() . ">" html::clean($tag->name) . "</a>";
                  }
                  
          $results .= join(", "$anchors) . "</li>";
                }
              }
              
          // End Display Tags on Thumbnails 
          Mittels einer "views" Datei wird dann alles komplett eingebunden.
          Das "tag" Modul ist aktiv (1).

          Kommentar


          • #20
            Zusatzinfo:

            Mit verschiedenen CMS habe ich schon meine Erfahrung. Und nun stelle ich fest, dass ich zwar mit "Themes" gut hantieren kann, aber bei Modulen keine Ahnung habe. Die Tags aus der Datenbank zu saugen um sie zu verwenden ist wohl nur über ein Modul möglich.

            Ich habe nun ein Modul gefunden das genau nur das macht und die Tags in der Sidebar anzeigt. Habe es getestet und es funktioniert in meiner modifizierten Gallery3. Aus dem Modul würde sich vielleicht für einen versierten PHPler herleiten lassen, wie die Tags für meine if/else Idee herangezogen werden können.

            Das Modul hat wenig Code auf 4 Dateien aufgeteilt und kann hier gedownloadet werden:
            Übersichtsseite vom Modul "dislaytags": http://codex.galleryproject.org/Gall...es:displaytags
            Forumseite mit Datei "displaytags.zip" zum download: http://galleryproject.org/node/89093

            Bin dankbar und freue mich über jeden Hinweis und jede Hilfe. Module sind nicht so mein Ding.

            Kommentar


            • #21
              oje, jetzt wird das hier zum Selbstgespräch. ^^
              Neue Info:
              Im eben verlinkten Forum wird zu einem Thema verwiesen, in dem ein PHP Code zum einbinden in das Theme steht. das ist ja genau das was ich suche. Weg vom Modul hinein ins Theme. Und er funktioniert bei mir.

              Ich poste ihn hier mal voreilig mit einer Frage:
              PHP-Code:
              <?
              $item_tags = ORM::factory("tag")
                               ->join("items_tags", "tags.id", "items_tags.tag_id", "left")
                               ->where("items_tags.item_id", "=", $item->id)
                               ->find_all();
              if ($item_tags->count()) {
                  echo '<div class="g-description">';
                  echo 'Tags: ';
                  $tc = 0;
                  foreach ($item_tags as $t) {
                      echo ($tc++ == 0) ? '' : ', ';
                      echo '<a href="' . $t->url() . '">' . html::clean($t->name) . '</a>';
                  }
                     echo '</div>';
              }
              ?>
              Wie model ich den Code nun für meine Anweisung um?

              Kommentar


              • #22
                Dieser PHP Script funktioniert nun mit diesem Test, aber nur in der photo.html.php, für mich unerklärlicherweise nicht in der page.html.php. Wieso das?
                PHP-Code:
                <?
                $item_tags = ORM::factory("tag")
                                 ->join("items_tags", "tags.id", "items_tags.tag_id", "left")
                                 ->where("items_tags.item_id", "=", $item->id)
                                 ->find_all();
                ?>
                <? foreach ($item_tags as $t) ?>
                <? if ($t->name == "regen")
                {
                echo "regen";
                }
                else
                {
                echo "sonne";
                }
                ?>
                Der Sache schon ein wenig näher, aber noch lange nicht am Ziel.

                Kommentar


                • #23
                  Erster Erfolg. Aber noch nicht am Ziel. Die if/else Anweisung funktioniert in der photo.html.php, album.html.php und in einem Modul (view/....html.php) für die Sidebar, aber nicht in der page.html.php.
                  WIESO nicht!!! *grrrrrr
                  PHP-Code:
                  <?
                  $item_tags = ORM::factory("tag")
                                   ->join("items_tags", "tags.id", "items_tags.tag_id", "left")
                                   ->where("items_tags.item_id", "=", $item->id)
                                   ->find_all();
                  ?>
                  <? foreach ($item_tags as $t) ?>
                  <? if ($t->name == "regen") : ?>
                  regen
                  <? else : ?>
                  sonne
                  <? endif ?>

                  Kommentar


                  • #24
                    Wieso das?
                    Bitte benutze Google! Stichworte: php error reporting
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X