[Funktion] Arrays / Programmiertechnik

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Funktion] Arrays / Programmiertechnik

    Guten morgen Board,

    ich bins! Euer guter alter Antman.

    Heute mit einer Frage zu Arrays und Programmiertechnik.

    Es gibt folgende Funktion:

    PHP Code:
    function returnData($sql) {
        
    $res =& $this->_db->query($sql);
                                
        while (
    $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                
    $data[] = $row;
        }

        
    $data $this->convertVarToUTF($data);
        return 
    $data;

    Nun wird diese Funktion für viele verschiedene Abfragen benutzt.
    Man weiß manchmal nicht, ob nur eine Datensatz zurückgeliefert wird oder mehrere. Da ich die Smarty Schablone benutze muss ich dann ebenfalls eine Schleife dort benutzen. Sollte ich aus obiger Funktio besser 2 machen? Also noch eine wie:

    PHP Code:
    function returnData($sql) {
        
    $res =& $this->_db->query($sql);
                                
        
    $row =& $res->fetchRow(DB_FETCHMODE_ASSOC) {
        
    $row $this->convertVarToUTF($row);

        return 
    $row;

    ?
    Pickel ? Übergewicht ? Depressionen ?
    Brot, Kartoffeln und Milch sind Gift!
    http://www.paleofood.de

  • #2
    hä?

    muss ich das verstehen?

    wenn du das so wie im unteren codefragment machst, musst du doch auf jedenfall die funktion convertVarToUTF anpassen oder?


    was das jetzt aber mit deinem smarty template zu tun hat...
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      wenn du schon fragst, dann bitte auch drüber lesen, ob alles richtig verfasst ist. Wenn du aber dagegen ein Rätsel posten willst, dann tue das bitte woanders -> schau dir mal den 2. Codeteil an

      Comment


      • #4
        OK,

        ihr habt recht. Also ich möchte das diese Funktion nicht ein Array von Arrays zurückgibt wenn es nur einen Datensatz gibt. Ich könnte die Funktion convertVarToUTF ja in der Schleife aufrufen:

        PHP Code:
        function returnData($sql) {
            
        $res =& $this->_db->query($sql);
                                    
            while (
        $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
               
        $row $this->convertVarToUTF($row);
                 
        $data[] = $row;
            }
            
            
        $data $this->convertVarToUTF($data);
            return 
        $data;

        Pickel ? Übergewicht ? Depressionen ?
        Brot, Kartoffeln und Milch sind Gift!
        http://www.paleofood.de

        Comment


        • #5
          Was haltet ihr hiervon:

          PHP Code:
          function returnData($sql) {
              
          $res =& $this->_db->query($sql);
              if (
          $res->numRows() == 0$data false;
              elseif (
          $res->numRows() == 1) {
                  
          $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
                  
          $row $this->convertVarToUTF($row);
                  
          $data $row;
              } else {
                  while (
          $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                      
          $row $this->convertVarToUTF($row);
                      
          $data[] = $row;
                  }
              }    
                  
              return 
          $data;

          Kann man das noch vereinfachen ?
          Pickel ? Übergewicht ? Depressionen ?
          Brot, Kartoffeln und Milch sind Gift!
          http://www.paleofood.de

          Comment


          • #6
            ich denke dass die bedingungen überflüssig sind.
            PHP Code:
            function returnData($sql
            {
             
            $res =& $this->_db->query($sql);
             while (
            $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) 
             {
                        
            $row[] = $this->convertVarToUTF($row);
              }
              return 
            $row;

            und dann $row einfach auf länge prüfen

            Also ich möchte das diese Funktion nicht ein Array von Arrays zurückgibt wenn es nur einen Datensatz gibt
            wieso, überprüfen musst du sowieso ob $data false ist, ein eindimensionales oder mehrdimensionales array ist.

            gruss
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Comment


            • #7
              und dann $row einfach auf länge prüfen
              Wenn ich aber überürüfe, ist es schon zu spät, denn dann habe ich schon ein Array von Arrays.

              Ich habe ein Problem hiermit:

              PHP Code:
              function convertVarToUTF($arr$convertUTF NULL) {
                      
              $umlaute = array("ä""Ä""ü""Ü""ö""Ö""ß"" ");
                      
              $replace = array("ae""ae""ue""ue""oe""oe""ss""_"); 

                      foreach (
              $umlaute as $a) {
                          
              $search[] = mb_convert_encoding($a"utf-8");
                  }
                  for (
              $i=0$i sizeof($convertUTF); $i++) {
                      
              $arr[$convertUTF[$i]] = str_replace($search$replace$arr);
                  }
                      
                  return 
              $arr;                                
              }
                              
              function 
              returnData($sql$convertUTF NULL) {
                  
              $res =& $this->_db->query($sql);
                  if (
              $res->numRows() == 0$data false;
                      if (
              $res->numRows() == 1) {
                          
              $row =& $res->fetchRow(DB_FETCHMODE_ASSOC);
                          
              $row $this->convertVarToUTF($row$convertUTF);
                          
              $data $row;
                  } else {
                            while (
              $row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
                              
              $row $this->convertVarToUTF($row$convertUTF);
                              
              $data[] = $row;
                          }
                  }
               
                  return 
              $data;

              Es kommt ewig die Meldung:

              "Notice: Undefined variable: convert in D:\utf\classes\_project\den.class.php on line 74"

              obwohl ich die doch mit übergebe.
              Last edited by antman; 07-10-2004, 13:39.
              Pickel ? Übergewicht ? Depressionen ?
              Brot, Kartoffeln und Milch sind Gift!
              http://www.paleofood.de

              Comment


              • #8
                Original geschrieben von antman
                obwohl ich die doch mit übergebe.
                Nope, schau noch mal nach

                Comment


                • #9
                  Habe es korrigiert.
                  Aber nun habe ich ein merkwürdiges Problem:

                  Ich rufe die Funktion so auf:

                  PHP Code:
                  $convert = array('folder');
                  $sql="...";
                  $page->assign('profile'$den->returnData($sql$convert)); 
                  Nun wendet die Konvertierungsfunktion die Konvertierung nicht auf den index "folder" an, sondern unter $data['folder'] habe ich nun den gleichen Datensatz drin.
                  Last edited by antman; 07-10-2004, 13:48.
                  Pickel ? Übergewicht ? Depressionen ?
                  Brot, Kartoffeln und Milch sind Gift!
                  http://www.paleofood.de

                  Comment


                  • #10
                    jetzt wenn man noch wüsste, was du wie korrigiert hast, wie's jetzt aussieht und was die ein oder andere debug-ausgabe mit echo/print_r ergibt...
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Comment


                    • #11
                      Hm... weißt du denn eigentlich was du tutst?
                      Was wird hier gemacht?
                      PHP Code:
                       $arr[$convertUTF[$i]] = str_replace($search$replace$arr); 
                      wenn du das weißt, dann erübrigt sich deine Frage.

                      Comment


                      • #12
                        Hatte die Variable von $convert nach $convertUTF geändert.
                        Habe die Funktoin nochmal umgeschrieben, klappt aber immer noch nicht:

                        PHP Code:
                        function convertVarToUTF($arr$convertUTF NULL) {
                                
                        $umlaute = array("ä""Ä""ü""Ü""ö""Ö""ß"" ");
                                
                        $replace = array("ae""ae""ue""ue""oe""oe""ss""_"); 

                                foreach (
                        $umlaute as $a) {
                                    
                        $search[] = mb_convert_encoding($a"utf-8");
                            }
                            
                                foreach (
                        $convertUTF as $b) {
                                
                        $arr[$b] = str_replace($search$replace$arr);
                            }
                                                        
                            echo 
                        "<pre>";
                            
                        print_r($arr);
                            echo 
                        "</pre>";
                                return 
                        $arr;                                

                        Ergibt folgendes:

                        rray
                        (
                        [phone_country] => ...
                        [phone_city] => ...
                        [phone_no] => ...
                        [phone_ext] =>
                        [fax_city] => ...
                        [fax_no] => ...
                        [fax_ext] =>
                        [function] => ...
                        [folder] => ...
                        (
                        [phone_country] => ...
                        [phone_city] => ...
                        [phone_no] => ...
                        [phone_ext] =>
                        [fax_city] => ...
                        [fax_no] => ...
                        [fax_ext] =>
                        [function] => ...
                        [folder] => ...
                        [name] => ...
                        )

                        [name] => ...
                        )

                        Nun soll folder aber kein eigenes Array sein. Der in dem Index enthaltene String sollte nur anstatt Leerzeichen Unterstriche enthalten.

                        )
                        Pickel ? Übergewicht ? Depressionen ?
                        Brot, Kartoffeln und Milch sind Gift!
                        http://www.paleofood.de

                        Comment


                        • #13
                          Original geschrieben von asp2php
                          Hm... weißt du denn eigentlich was du tutst?
                          Was wird hier gemacht?
                          PHP Code:
                           $arr[$convertUTF[$i]] = str_replace($search$replace$arr); 
                          wenn du das weißt, dann erübrigt sich deine Frage.
                          Das Array $convertUTF enthält die Indexe die die Funktion convertVarToUTF bearbeiten soll.
                          Pickel ? Übergewicht ? Depressionen ?
                          Brot, Kartoffeln und Milch sind Gift!
                          http://www.paleofood.de

                          Comment


                          • #14
                            und du willst wirklich in ein feld des arrays das komplette array reinschreiben?

                            $arr[$b] = $arr?

                            sicher dass da nicht noch was fehlt?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Comment


                            • #15
                              Hatte gehofft, dass du folgendes meinst. Hat aber keinen anderen Effekt.

                              PHP Code:
                              foreach ($convertUTF as key => $value) {
                                  
                              $arr[$value] = str_replace($search$replace$arr);

                              Pickel ? Übergewicht ? Depressionen ?
                              Brot, Kartoffeln und Milch sind Gift!
                              http://www.paleofood.de

                              Comment

                              Working...
                              X