Ankündigung

Einklappen
Keine Ankündigung bisher.

CC-Feld für die Eingabe von Bildquellen mit vorangestelltem Copyright-Zeichen

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

  • CC-Feld für die Eingabe von Bildquellen mit vorangestelltem Copyright-Zeichen

    Das k�nnte dann so aussehen: PHP-Code:
    $objTarget = array();
    $objResult = \Database::getInstance()->prepare("SELECT bild_copyright from cc_reisen")->execute();
    while (
    $objResult->next())
    {

    $objTarget[] = $objResult->bild_copyright;
    }


    // sch�n ausgeben
    // sortiert

    asort ($objTarget);
    foreach(
    $objTarget as $bildquelle):
    if (!empty(
    $bildquelle))
    {
    $bildquelle = preg_replace("/,/", "$1<br>", $bildquelle);
    echo
    $bildquelle,"<br />";
    }
    endforeach;


    Bin jetzt von Deiner obenstehenden Belegung der Felder ausgegangen - Ich vermute Du meinst mit den Umbr�chen bei den Kommas, den Arrayinhalt an der Position [0]?
    > [] Ja, [] Nein, [] Ich wei� nicht

    Hoffe das hilft soweit und VG

    Hallo Bubble habe ein neues Thema erstellt. Vielleicht kannst Du mir helfen. Dein Code ist perfekt. Leider haut jedoch die Sortierung bei folgender Eingabe jedoch nicht hin:
    zB.
    ©Anibal Trejo-Fotolia
    ©annebe-Fotolia
    ©Brad Pict-Fotolia
    ©lily-Fotolia
    ©D`July-Fotolia
    ©donyanedomam-Fotolia
    danmir12-Fotolia

    Danke schon mal.

  • #2
    Was f�r ein Feldtyp ist "bild_copyright"?
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Feldtyp ist textarea

      Kommentar


      • #4
        Zitat von josephkisler Beitrag anzeigen
        Feldtyp ist textarea
        Oh ha, ok. Dann ist's ok so.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Kleinstauftrag f�r Dich?
          * Sortierung?

          Kommentar


          • #6
            Zitat von josephkisler Beitrag anzeigen
            Kleinstauftrag f�r Dich?
            * Sortierung?

            N�. Der Bubble macht das schon

            Tip zum Aufbau:
            Ich w�rde da erstmal keine Textarea setzen, sondern ein einfaches Textfeld und die jeweiligen Copyrights mit Komma trennen.
            Das macht alles deutlich einfacher als mit ner Textarea, die ggf. html Code f�hrt zu arbeiten.

            Ich verstehe zwar die M�he hier nicht, wenn man schon ne Textarea spendiert, dann doch einfach alles fertig reinschreiben. Alphabetische Sortierung etc. ist dann redaktionelle Sorgfaltspflicht. Fertig aus.
            Sonst sollten Redakteure nie Textareas bekommen, erst recht nicht mit Tiny. Hier gilt what you see, is what you get.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Na, dann will ich mal nicht so sein ;-). Aber wehe ihr l�stert �ber den Aufbau... Ich kratze auch nur an der Oberfl�che ...

              Also, wenn Du die Werte nun mal so vorgegeben hast, dann k�nnte man das wie unten stehend bauen.
              Ich bin dabei davon ausgegangen, dass mal Werte mit und mal ohne Copyrightsymbol auftauchen.
              Mein Ansatz geht dahin, das Symbol vom Text zu trennen, dann die Sortierung des Textes vorzunehmen und dann das Symbol wieder hinzuzuf�gen. Um die Inhalte zusammenzuhalten, nutze ich ein tempor�res Array daf�r.

              PHP-Code:
              mb_internal_encoding("UTF-8");
                  
              //Ausgangslage, kommt ggf. aus DB Abfrage
                  
              $quelle = array("©Anibal Trejo-Fotolia","©annebe-Fotolia","©Brad Pict-Fotolia","©lily-Fotolia","©D`July-Fotolia","©donyanedomam-Fotolia","danmir12-Fotolia");
                  
              $tempArray = array();

                  foreach (
              $quelle as $tempTarget): {
                      
              //Wenn das erste Zeichen ein © ist, dann dieses herausnehmen.
                      
              if (mb_substr($tempTarget,0,1)=="©") {
                          
              $temp mb_substr($tempTarget,1);
                          
              $tempArray[] = array('Name'=>$temp,'PreFix'=>"©");
                          }
                      else {
                          
              $tempArray[] = array('Name'=>$tempTarget,'PreFix'=>"");
                          }
                      }
                      endforeach;

                      
              //Das tempor�re Array hat nun im ersten Array die reinen Namen, die sortiert werden k�nnen.
                      
              $sortiert sortArray($tempArray,'Name');
                      
              //Nun kann das sortierte Array wieder in der gew�nschten Form ausgeben. Dabei das Copyrightzeichen wieder an den Anfang setzen. Sollte passen ;-)
                      
              foreach ($sortiert as $key): {
                          echo 
              $key['PreFix'].$key['Name']."<br />";
                      }
                      endforeach;


              function 
              sortArray($data$field)
                {
                  if(!
              is_array($field)) $field = array($field);
                  
              uasort($data, function($a$b) use($field) {
                    
              $retval 0;
                    foreach(
              $field as $fieldname) {
                      if(
              $retval == 0$retval strcasecmp($a[$fieldname],$b[$fieldname]);
                    }
                    return 
              $retval;
                  });
                  return 
              $data;
                } 

              Ich habe es soweit ausprobiert, kann man bestimmt eleganter und k�rzer machen, aber ich brauche leider immer noch ein paar Schritte extra. Ich hoffe es hilft und viele Gr��e.

              Kommentar


              • #8
                Mr. Dr. Dipl.Ing. Bubble, Du bist der Gr�sste.

                Kommentar


                • #9
                  Dr. Brubbel, k�nntest Du mir den Code nur dahingehende ver�ndern, dass
                  * leere Zeilen nicht ausgegeben werden und
                  * da es mehrere Eintr�ge pro Zeile gibt diese in jeweils einer Zeile umgebrochen werden?
                  Ergebnis:
                  Costa_Brava_3799_Spanien_8a_082, Costa_Brava_3800_Spanien_8a_115, Costa_Brava_3820_PICT0056
                  Fotolia_5202779_XS, Fotolia_5415055_XS, Fotolia_71434814_M
                  Fotolia_57151708_M, 1071824_1920_Pixabay, Fotolia_69620263_XS, Fotolia_79091111_M
                  Fotolia_69400914_M_Guatemala_Frau, Fotolia_65221581_XS_Guatemala_Tikal, Fotolia_71194110_XS_Nicaragua_Granada
                  Fotolia_70944339_M, Fotolia_51819949_XS, Fotolia_70944339_M, Fotolia_60224214_XS
                  Fotolia_79805324_XS, Fotolia_85940200_XS, lighthouse-510827_1920_Pixabay
                  Gr�nland_Fotolia_48228134_XS, MS_Hamburg_Groenland2_puffin_mit_fisch04_m, MS_Hamburg_Groenland3_im_lillehoekfjord01
                  HKGSIN1_hongkong_dschunke_m, HKGSIN2_singapur_marina_bay_morgen01_m, HKGSIN3_vietnam_maedchen_01_m
                  Mauritius1_giant-tortoise-114134_1920_pixabay, Mauritius2-162600_1920_pixabay, Mauritius3_Reunion_Fotolia_85667453_XS
                  MS_Astor_Ostsee1_Frau_153160056_TS, MS_Astor_Ostsee2_Danzig_Polen_138289449_TS, St.Petersburg_Russland_157097268_TS
                  MS_France1_3119_Paris_F217_thumb256x256, MS_France2_3129_Rouen_F501_thumb256x256, MS_France3_3143_Les Andelys_F254_thumb256x256
                  ©wira91-Fotolia.com, ©captblack76-Fotolia.com, ©SamSpiro-Fotolia.com

                  PHP-Code:
                  <?php
                  mb_internal_encoding
                  ("UTF-8");
                  $ErgArray = array();
                  $quelle = \Database::getInstance()->prepare("SELECT bild_copyright FROM cc_reisen")->execute();
                  while (
                  $quelle->next())
                              {
                                  
                              
                  $ErgArray[] = $quelle->bild_copyright;
                              
                              }



                      foreach (
                  $ErgArray as $tempTarget): {
                          
                  //Wenn das erste Zeichen ein © ist, dann dieses herausnehmen.
                          
                  if (mb_substr($tempTarget,0,1)=="©") {
                              
                  $temp mb_substr($tempTarget,1);
                              
                  $tempArray[] = array('Name'=>$temp,'PreFix'=>"©");
                              }
                          else {
                              
                  $tempArray[] = array('Name'=>$tempTarget,'PreFix'=>"");
                              }
                          }
                          endforeach;

                          
                  //Das tempor�re Array hat nun im ersten Array die reinen Namen, die sortiert werden k�nnen.
                          
                  $sortiert sortArray($tempArray,'Name');
                          
                  //Nun kann das sortierte Array wieder in der gew�nschten Form ausgeben. Dabei das Copyrightzeichen wieder an den Anfang setzen. Sollte passen ;-)
                          
                  foreach ($sortiert as $key):
                          if (!empty(
                  $tempArray))
                          {
                              echo 
                  $key['PreFix'].$key['Name']."<br />";
                          }
                          endforeach;


                  function 
                  sortArray($data$field)
                    {
                      if(!
                  is_array($field)) $field = array($field);
                      
                  uasort($data, function($a$b) use($field) {
                        
                  $retval 0;
                        foreach(
                  $field as $fieldname) {
                          if(
                  $retval == 0$retval strcasecmp($a[$fieldname],$b[$fieldname]);
                        }
                        return 
                  $retval;
                      });
                      return 
                  $data;
                    }


                   
                  ?>
                  Danke vielmals.

                  Kommentar

                  Lädt...