Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Nur eine Ausgabe aus Language Array Datei

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Nur eine Ausgabe aus Language Array Datei

    Hallo

    ich habe da mal wieder ein Problem mit auslesen der Datenbank und dann die richtige Ausgabe aus einer Language Datei.

    Ich hatte diese Problematik schon mal bei der Ausgabe innerhalb einer php Datei, im HTML Bereich des mpdf's. Damals hatte ich eine zusätzliche Eckige Klammer vergessen.

    Nun brauche ich diese Ausgabe jedoch in einer .tpl Datei.
    Ich bin schon seit Tagen dran und komme zum verrecken nicht weiter. Hab auch schon Google Augen mittlerweile.

    Meine Language Datei sieht wie folgt aus:
    PHP-Code:
    $LANG_LIST_ARR['copies'] = array(
            
    'UN' => 'Kein Limit',
            
    '1k' => '1000',
            
    '2k' => '2500',
            
    '5k' => '5000',
            
    '7k' => '7500',
            
    '10k' => '10000',
            
    '15k' => '15000',
            
    '20k' => '20000',
            
    '25k' => '25000'); 

    Wenn ich in der TPL Datei folgendes eingebe
    PHP-Code:
    {$myobj->getFormField('music_copies'))} 
    bekomme ich
    PHP-Code:
     20k 
    angezeigt. Das passt also. Es wird gelesen und angezeigt.

    Gebe ich dann die Zuordnung zur LANG_LIST_ARRAY an:
    PHP-Code:
    {$myobj->generalPopulateArray($myobj->LANG_COPIES_ARR$myobj->getFormField('music_copies'))} 
    bekomme ich folgendes:
    PHP-Code:
    Kein Limit
    1000
    2500
    5000
    7500
    10000
    15000
    20000
    25000 
    angezeigt. Will aber eigentlich nur
    PHP-Code:
    20000 
    angezeigt bekommen.

    Was vergesse ich denn schon wieder? Ich hoffe ihr könnt mir weiterhelfen. Danke jetzt schon mal allen im Voraus.


  • #2
    Zitat von webmaster2208 Beitrag anzeigen
    {$myobj->getFormField('music_copies'))}
    […]
    {$myobj->generalPopulateArray($myobj->LANG_COPIES_ARR, $myobj->getFormField('music_copies'))}
    Müssen wir jetzt raten was diese Methoden machen oder verrätst du es uns?

    Kommentar


    • #3
      Zitat von tk1234 Beitrag anzeigen
      Müssen wir jetzt raten was diese Methoden machen oder verrätst du es uns?
      Meinst du das was in der PHP Datei dazu steht?
      Die sieht so aus:

      PHP-Code:
          public function populateDefaultMusicDetails()
          {
              global 
      $LANG_LIST_ARR;
                      global 
      $smartyObj;
              
      $sql 'SELECT mca.music_copies FROM '.
                      
      $this->CFG['db']['tbl']['music_XXX_XXX'].' as mca LEFT JOIN '.
                      
      $this->CFG['db']['tbl']['XXX'].' as u ON u.user_id=mca.user_id '.
                      
      ' WHERE u.user_id = '.$this->dbObj->Param('user_id');
              
      $stmt $this->dbObj->Prepare($sql);
              
      $rs $this->dbObj->Execute($stmt, array($this->CFG['user']['user_id']));
              if (!
      $rs)
                  
      trigger_error($this->dbObj->ErrorNo().' '.
                  
      $this->dbObj->ErrorMsg(), E_USER_ERROR);
              if(
      $row $rs->FetchRow())
              {

                  
      $this->fields_arr['music_copies'] = $row['music_copies'];

              }
          } 
      Ich habe die Abfrage jetzt mal nur auf music_copies begrenzt. Hier wird sonst noch einiges mehr abgefragt.

      Ich habe dann noch die Zuordnung drin zur LANG_LIST_ARR:
      PHP-Code:
      $MusicDefault->LANG_COPIES_ARR $LANG_LIST_ARR['copies']; 

      Schreibs erst garnicht...ich weiss...mir fehlen die Grundkentnisse

      Kommentar


      • #4
        Zitat von webmaster2208 Beitrag anzeigen
        Meinst du das was in der PHP Datei dazu steht?
        Ja, das was die Methoden getFormField() und generalPopulateArray() eben machen. Lies dein Posting oben mal als wenn du dich außerhalb deines Kopfes befinden würdest - verstehst du um was es geht, z.B. wie {$myobj->getFormField('music_copies'))} aus $LANG_LIST_ARR['copies'] den Wert 20k ausliest?

        public function populateDefaultMusicDetails()
        Und was genau sollen wir jetzt mit der Methode anfangen? Die kommt im ersten Posting nicht vor …

        global $LANG_LIST_ARR;
        global $smartyObj;
        global ist böse[tm] - außerdem werden die beiden Variablen in der Methode überhaupt nicht verwendet, die Zeilen könnten also auch einfach entfallen …

        Ich habe dann noch die Zuordnung drin zur LANG_LIST_ARR:
        PHP-Code:
        $MusicDefault->LANG_COPIES_ARR $LANG_LIST_ARR['copies']; 
        Schön. Ich versteh trotzdem nur Bahnhof, da ich immernoch nicht weiß was mit dem Array dann angestellt wird.

        Kommentar


        • #5
          Jesus ist das ein Chaos.

          Zu deiner Query: http://php-de.github.io/jumpto/sql/#proaktive-manahmen
          Sieh die auch an wie das eingerückt ist, übersichtlich.
          Hilfreiches Tool zur Formatierung: http://www.freeformatter.com/sql-formatter.html

          Gibt die Funktion auch irgendwas zurück? Seriously, mit dem kann ich nichts anfangen... Im Startpost nutzt du ja generalPopulateArray() zeigst und aber populateDefaultMusicDetails().
          Durch die Verwendung von global lässt sich auch richtig schwierig einschätzen was da wohl sonst noch alles passiert.

          edit: well, basically what the upper dude said.
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            Ich weiß. Auf global wurde ich bereits im letzten Thema hingewiesen. Ich wollte mich darum kümmern, sobald ich diese Geschichte hier endlich fertig habe. Bin ja schon 2 Monate dran.

            In der Methode werden eigentlich nur Datenbankeinträge abgefragt die ich dann in der .tpl dazu anzeigen lassen möchte. Es funktioniert auch alles. Die einzige lang_list_arr bekomme ich aber nicht angezeigt. In der Spalte music_copies wird ausgelesen welche Abkürzung drin steht. In diesem Fall 20k. Diese 20k soll aus der lang_list_arr gefunden und der dazu gehörige Text angezeigt werden. In diesem Fall 20000. Es werden mir jedoch alle arrays angezeigt. Daher hab ich auch gedacht die Methode zu posten, wäre nicht notwendig. Daher habe ich es weggelassen.

            Zum einrücken kann ich nichts. Beim einfügen hier im Editor würde es automatisch verschoben. Ein korrigieren mit Space hat anscheinend nichts gebracht. Aber danke für die Software Tipps. Die schau ich mir sehr gerne an.

            Dieses Script habe ich von einer indischen Firma gekauft, was sich als Fehler herausstellen sollte.
            Wenn ich etwas brauche dann schau ich mir an bestimmten Stellen an, wie die das gemacht haben.
            Die nutzen an diesen Stellen auch immer generalPopulateArray()

            Kommentar


            • #7
              Zitat von webmaster2208 Beitrag anzeigen
              […] Daher hab ich auch gedacht die Methode zu posten, wäre nicht notwendig. Daher habe ich es weggelassen.
              Neja, wenn du nach mehrfachem Nachfragen nach dem Code immernoch der Meinung bist du müsstest ihn nicht posten, ok. Dann wünsch ich dir noch viel Spaß beim Fehlersuchen ...

              Kommentar


              • #8
                Zitat von webmaster2208 Beitrag anzeigen
                Meinst du das was in der PHP Datei dazu steht?
                Die sieht so aus:

                PHP-Code:
                    public function populateDefaultMusicDetails()
                    {
                        global 
                $LANG_LIST_ARR;
                                global 
                $smartyObj;
                        
                $sql 'SELECT mca.music_copies FROM '.
                                
                $this->CFG['db']['tbl']['music_XXX_XXX'].' as mca LEFT JOIN '.
                                
                $this->CFG['db']['tbl']['XXX'].' as u ON u.user_id=mca.user_id '.
                                
                ' WHERE u.user_id = '.$this->dbObj->Param('user_id');
                        
                $stmt $this->dbObj->Prepare($sql);
                        
                $rs $this->dbObj->Execute($stmt, array($this->CFG['user']['user_id']));
                        if (!
                $rs)
                            
                trigger_error($this->dbObj->ErrorNo().' '.
                            
                $this->dbObj->ErrorMsg(), E_USER_ERROR);
                        if(
                $row $rs->FetchRow())
                        {

                            
                $this->fields_arr['music_copies'] = $row['music_copies'];

                        }
                    } 
                Ich habe die Abfrage jetzt mal nur auf music_copies begrenzt. Hier wird sonst noch einiges mehr abgefragt.

                Ich habe dann noch die Zuordnung drin zur LANG_LIST_ARR:
                PHP-Code:
                $MusicDefault->LANG_COPIES_ARR $LANG_LIST_ARR['copies']; 

                Schreibs erst garnicht...ich weiss...mir fehlen die Grundkentnisse
                Ich habe gedacht das waäre der code den ihr sehen wollt. Ich steh gerade auf dem schlauch. Soll ich den ganzen PHP Code hier posten?

                Kommentar


                • #9
                  Zitat von webmaster2208 Beitrag anzeigen
                  Ich habe gedacht das waäre der code den ihr sehen wollt. Ich steh gerade auf dem schlauch. Soll ich den ganzen PHP Code hier posten?
                  Nein, natürlich nicht. In #4 habe ich doch schon geschrieben welche Methoden interessant sind - aber irgendwo ist es doch logisch dass nur der Code für die Fehlersuche relevant ist der auch aufgerufen wird …

                  Kommentar


                  • #10
                    Sorry...da hatte ich garnicht mehr drauf geachtet. Du meinst also das hier?!

                    PHP-Code:
                            public function generalPopulateArray($list, $highlight_value='')
                                {
                                    foreach($list as $key=>$value)
                                        {
                                            $selected = trim($highlight_value) == trim($key)?' selected="selected"':'';
                    ?>
                    <option value="<?php echo $key;?>"<?php echo $selected;?>><?php echo $value;?></option>
                    <?php
                                        
                    }
                                }


                    /**
                            * To get the form field
                            *
                            * To get the form field value after setting the form field value
                            *
                            * @param         string $field_name Form field name
                            * @return         string $this->fields_arr[$field_name] Form field value
                            * @access         public
                            */
                            
                    public function getFormField($field_name)
                                {
                                    return 
                    $this->fields_arr[$field_name];
                                }

                    Kommentar


                    • #11
                      Zitat von VPh Beitrag anzeigen
                      Jesus ist das ein Chaos.

                      Zu deiner Query: http://php-de.github.io/jumpto/sql/#proaktive-manahmen
                      Sieh die auch an wie das eingerückt ist, übersichtlich.
                      Hilfreiches Tool zur Formatierung: http://www.freeformatter.com/sql-formatter.html
                      Beide Links TOP. Danke dir. Wenn ihr noch mehr solcher hilfreichen Tools und Wissenssammlungen habt...immer her damit.

                      Kommentar


                      • #12
                        Zitat von webmaster2208 Beitrag anzeigen
                        PHP-Code:
                        public function generalPopulateArray($list, $highlight_value='')
                                    {
                                        foreach($list as $key=>$value)
                                            {
                                                $selected = trim($highlight_value) == trim($key)?' selected="selected"':'';
                        ?>
                        <option value="<?php echo $key;?>"<?php echo $selected;?>><?php echo $value;?></option>
                        <?php
                                            
                        }
                                    }
                        in #6 hast du was geschrieben dass die Methode Daten aus der Datenbank holen würde - aber die Methode baut doch lediglich aus den Daten im ersten Array <option>-Elemente … da ist es ja nicht verwunderlich dass alle angezeigt werden, dafür ist die Methode ja da. Mir ist immer noch völlig schleierhaft was du da eigentlich treibst …

                        Kommentar


                        • #13
                          Achso....das ist ja für ein Auswahl Dopdown Liste gedacht. Vor lauter Bäume den Wald nicht mehr gesehen.

                          Ich möchte eigentlich aus der Datenbank auslesen, was an der Spalte music_copies steht. Diese Abkürzung soll dann aus der LANG_LIST_ARR ausgelesen und als ganzer Text angezeigt werden. Das mir die Abkürzung angezeigt wird, das kriege ich ja hin.

                          Wie bereits erwähnt, suche ich im Script nach Funktionen die ich brauche und schaue mir genau an wie dir Programmierer das gemacht haben und setze es nach meinen Bedürfnissen um. Dementsprechend dauert alles ein wenig länger.

                          Bisher hat es eigentlich auch ganz gut geklappt. Nur an dieser Stelle bin ich am verzweifeln.

                          Kommentar


                          • #14
                            Danke tk1234,

                            du hast mich vom falschen Pfad abgebracht. Nun hab ich es gelöst.

                            So sieht es nun aus:

                            PHP-Code:
                            public function populateDefaultMusicDetails() 
                                { 
                                    global 
                            $LANG_LIST_ARR
                                            global 
                            $smartyObj
                                    
                            $sql 'SELECT mca.music_copies FROM '
                                            
                            $this->CFG['db']['tbl']['music_XXX_XXX'].' as mca LEFT JOIN '
                                            
                            $this->CFG['db']['tbl']['XXX'].' as u ON u.user_id=mca.user_id '
                                            
                            ' WHERE u.user_id = '.$this->dbObj->Param('user_id'); 
                                    
                            $stmt $this->dbObj->Prepare($sql); 
                                    
                            $rs $this->dbObj->Execute($stmt, array($this->CFG['user']['user_id'])); 
                                    if (!
                            $rs
                                        
                            trigger_error($this->dbObj->ErrorNo().' '
                                        
                            $this->dbObj->ErrorMsg(), E_USER_ERROR); 
                                    if(
                            $row $rs->FetchRow()) 
                                    { 

                                        
                            $this->fields_arr['music_copies'] = $row['music_copies']; 

                                        
                            $copies $row['music_copies']?(''.$LANG_LIST_ARR['copies'][$row['music_copies']]):''//NEU
                                        
                            $smartyObj->assign('copies',$copies); // NEU
                                
                                    

                                } 
                            in der tpl Datei frage ich das ganze einfach ab mit:

                            PHP-Code:
                            {$copies
                            Danke an alle die mitgewirkt haben. Manchmal braucht man einen Denkanstoß.

                            Kommentar

                            Lädt...
                            X