Was für ein Array ist das?

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

  • Was für ein Array ist das?

    Hallo an alle hier,

    ich habe erst vor kurzem angefangen PHP zu lernen.
    Jetzt stecke ich aber gerade in einer Sackgasse und finde nicht mehr raus.

    Daher meine Frage, kann mir jemand sagen, was dies für ein Array ist?

    Array
    (
    [0] => stdClass Object ( [a_k_ID] => 105 )
    [1] => stdClass Object ( [FK_Artikel_ID] => 105 )
    [2] => stdClass Object ( [FK_Kategorie_ID] => 35 )
    [3] => stdClass Object ( [a_k_ID] => 107 )
    [4] => stdClass Object ( [FK_Artikel_ID] => 107 )
    [5] => stdClass Object ( [FK_Kategorie_ID] => 39 )
    [6] => stdClass Object ( [a_k_ID] => 108 )
    [7] => stdClass Object ( [FK_Artikel_ID] => 108 )
    [8] => stdClass Object ( [FK_Kategorie_ID] => 47 )
    )

    Ich habe das Array mit dem print_r befehl ausgelesen.

    Zu meinem Problem damit, ich will in einer while schleife, mittels einer if anweisung auf den eintrag [a_k_ID] überprüfen und dann die nachfolgenden einträge [FK_Artikel_ID] und [FK_Kategorie_ID] auslesen und zurück geben.

    Aber das ist ein anderes Thema, jetzt will ich erst mal wissen was das für ein Array ist!

    Ich freue mich auf jede antwort.

    Gruß Stipo

  • #2
    das is ein reziprok zum aszendenten des jupiter im sternbild der hyperfluiden, wissenserweiterung beabsichtigenden sätze stehendes gebilde, das ein array ist



    hältst du es für rein theoretisch möglich, dass es hilfreich sein könnte, wenn du mal den code postest, der das array erzeugt?

    so sage ich mal (ohne drauf wetten zu wollen): du hast das serialisierte objekt einer klasse deserialisiert, php hat aber keine information zu diese rklasse gefunden, daher steht da stdclass
    die klassenvariablen sollten das sein, was du angezeigt bekommst

    aber wie gesagt: isch schwör alder, aber isch wett net mit dir, des wär dem voll korrekt scheißendreck dumm nämlich, alder


    Zuletzt geändert von mrhappiness; 21.10.2003, 21:51.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hallo mrhappiness,

      das ist garnicht so einfach die genauen Codestellen zu finden.
      Aber vieleicht hilft das ja weiter, es ist das ergebnis einer Datenbank abfrage.

      Gruß Stipo

      Kommentar


      • #4
        wo genau?

        du weißt doch wie das array heißt (das was bei print_r() zwischenden klammern steht), such einfach mal danach
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Das ist die function in der die Datenbank-abfrage stattfindet:

          PHP-Code:
          function getArtikelListe() {
              global 
          $Database;
              global 
          $sql_artikel_liste_1_2;

              
          // Test ob die Datenbank erreichbar ist
                    
          if (! is_object($Database)) {
                    die(
          "<P><H1 class='content'>A_L_E_Error: Datenbank nicht erreichbar(getArtikelListe)</H1></P>\n");
                    }
                    else {
                        
          $myArtikelListe = array();
                      
          $RS $Database->Query($sql_artikel_liste_1_2." ");
                      if (!
          $RS) {
                          die(
          "<p><h1 class='content'>A_L_E_Error: Konnte Artikel_Kategorien nicht auslesen (1) (getArtikelListe)</h1></p></body></html>\n");
                      } 
          // End if
                       
          while (is_object($RS) && $RS->NextRow()) {
                           
          $myArtikelListe[]->a_k_ID $RS->GetField("a_k_ID");
                           
          $myArtikelListe[]->FK_Artikel_ID $RS->GetField("FK_Artikel_ID");
                           
          $myArtikelListe[]->FK_Kategorie_ID $RS->GetField("FK_Kategorie_ID");
                      } 
          //End while
                    
          //End else
                 
          print_r ($myArtikelListe);
                 return 
          $myArtikelListe;
          //End function getArtikelListe() 
          Und das ist der Datenbank-Wrapper dazu:

          PHP-Code:
          // TRecordSet
          // Abstract base class for handling the result from a Database
          class TRecordSet {
              var 
          $myRecordCount;
              
          // WARNING: Do not use this function until all
              // rows have been fetched.

              
          function GetRecordCount() {
                  die(
          "db: Abstract Method called");
              }

              function 
          NextRow() {
                  die(
          "db: Abstract Method called");
              }
          }
          // End abstract class TRecordSet

          // TSybaseRecordSet
          // Concrete Implementation for the Sybase Record Set
          class TSybaseRecordSet extends TRecordSet {
              
          // member vars
              
          var $myDBresult;
              var 
          $myDatabase;
              var 
          $myRow;

              
          // Constructor
              
          function TSybaseRecordSet($Database$DBresult) {
                  
          $this->myDBresult $DBresult;
                  
          $this->myDatabase $Database;
              }

              
          // Reads to the next tuple
              // Returns FALSE if no more tuple exist
              
          function NextRow() {
                  
          $this->myRow sybase_fetch_array($this->myDBresult);
                  if (!
          $this->myRow)
                      return 
          false;
                  else
                      return 
          true;
                  }

              
          // Return the value for a field index
              
          function GetField($key) {
                  if (
          $this->myRow)
                      return 
          $this->myRow[$key];
                  else
                      return 
          false;
                  }

              
          // Returns number of Records
              
          function GetRecordCount() {
                  if (!
          $this->my_recordCount) {
                      
          $this->myRecordCount sybase_num_rows($this->myDBresult);
                  }
                  return(
          $this->myRecordCount);
              }
          }
          // End abstract class TRecordSet

          // TMySQLRecordSet
          // Concrete Implementation for the MySQL Record Set
          class TMySQLRecordSet extends TRecordSet {
              
          // member vars
              
          var $myDBresult;
              var 
          $myDatabase;
              var 
          $myRow;

              
          // Constructor
              
          function TMySQLRecordSet($Database$DBresult) {
                  
          $this->myDBresult $DBresult;
                  
          $this->myDatabase $Database;
              }

              
          // Reads to the next tuple
              // Returns FALSE if no more tuple exist
              
          function NextRow() {
                  
          $this->myRow mysql_fetch_array($this->myDBresult);
                  if (!
          $this->myRow)
                      return 
          false;
                  else
                      return 
          true;
              }

              
          // Return the value for a field index
              
          function GetField($key) {
                  if (
          $this->myRow)
                      return 
          $this->myRow[$key];
                  else
                      return 
          false;
              }

              
          // Returns number of Records
              
          function GetRecordCount() {
                  if (!
          $this->my_recordCount) {
                      
          $this->myRecordCount mysql_num_rows($this->myDBresult);
                  }
                  return(
          $this->myRecordCount);
              }
          }
          // End class TMySQLRecordSet

          // TDatabase
          // The (abstract) base class for different databases.
          class TDatabase {
              
          // Execute somethin without result (e.g INSERT, UPDATE)
              // If an INSERT is done it will return the last actualized
              // AUTO-INCREMENT value or false if the function couldn't execute
              // This feature is not yet implemented in the Sybase version
              
          function Exec($Query) {
                  die(
          "db: Abstract Method called");
              }

              
          // Execute a query giving a result (e.g SELECT)
              
          function Query($Query) {
                  die(
          "db: Abstract Method called");
              }
          }
          // End abstract class TDatabase

          // TSybaseDatabase
          // The concrete implemenation for the Sybase Database
          // Usage:
          //   new ($Host, $Database)
          //        create a link to the DB
          //   $handle = Execute($Query)
          //        returns a handle to the result of the Query
          class TSybaseDatabase extends TDatabase {
              
          // member vars
              
          var $myConnectionHandle;
              var 
          $errMsg;

              function 
          TSybaseDatabase($Host$Database$Username$Password) {
                  
          // Note:
                  //   use sybase_connect() for non-persistent and
                  //   sybase_pconnect() for persistent DB-connections

                  //  $this->myConnectionHandle = sybase_connect($Host, "sa", "");
                  //  $this->myConnectionHandle = sybase_connect($Host, $Database, $Username, $Password);
                  
          $this->myConnectionHandle sybase_connect("$Host""$Username""$Password");
                  if (!
          $this->myConnectionHandle) {
                      
          $this->errMsg "db: Unable to connect to database on $Host as user $Username";
                      
          $this->errNo  1;
                  }
                  if (!
          sybase_select_db($Database$this->myConnectionHandle)) {
                      
          $this->errMsg "db: Unable to select database " $Database;
                      
          $this->errNo  1;
                  }
                  
          $this->errNo  0;
              }

              
          // Execute a query without result
              // WARNING: This Function needs to be enhanced, so that the functionality is similar to
              // the MySQL-Version. Problem is, that PHP4 did not support a Sybase_insert_id()-function
              // What is to do:
              // This function needs to return either false if the query did not work, true if the
              // query did work and a value > 0 [int] if the query was an INSERT into a table which
              // has an AUTO-INCREMENT column.
              // As a help, see the MySQL-Version of TMySQLDatabase->Exec().
              
          function Exec($Query) {
                  
          $DBresult sybase_query($Query);
                  if (!
          $DBresult) {
                      return 
          false;
                  }
                      return 
          true;
              }

              
          // Perform a Query that results a RecordSet
              
          function Query($Query) {
                  
          $DBresult sybase_query($Query);
                  if (!
          $DBresult) {
                      echo 
          "<b>db: Query failed.</b> Query was: $Query\n";
                      return 
          false;
                  }
                  return new 
          TSybaseRecordSet($this$DBresult);
              }
          // End class TSybaseDatabase

          // TMySQLDatabase
          // The concrete implemenation for the MySQL Database
          class TMySQLDatabase extends TDatabase {
              
          // member vars
              
          var $myConnectionHandle;
              var 
          $errMsg;

              function 
          TMySQLDatabase($Host$Database$Username$Password) {
                  
          // Note:
                  //   use mysql_connect() for non-persistent and
                  //   mysql_pconnect() for persistent DB-connections

                  
          $this->myConnectionHandle mysql_connect($Host$Username$Password);
                  if (!
          $this->myConnectionHandle) {
                      
          $this->errMsg "db: Unable to connect to database on $Host as user $Username";
                      
          $this->errNo  1;
                  }
                  if (!
          mysql_select_db($Database$this->myConnectionHandle)) {
                      
          $this->errMsg "db: Unable to select database " $Database;
                      
          $this->errNo  1;
                  }
                  
          $this->errNo  0;
              }

              
          // Execute a query without result
              
          function Exec($Query) {
                  
          $DBresult mysql_query($Query);
                  if (!
          $DBresult) {
                      echo 
          "<b>db: Execution failed.</b> Query was: $Query<BR>";
                      echo 
          "<b>MySQL Fehlermeldung: </b>".mysql_error()."<BR>";
                      return 
          false;
                  }
                  
          $Lastautoincrement mysql_insert_id();
                  
          // mysql_insert_id will return 0 if there wasn't a AUTO-INCREMENT tag that was altered during the
                  // last insert. Since 0 means false, this function would return false, which is not true. Thats why
                  // we have to check for this situation and change the return-value to true in that case.
                  
          if ($Lastautoincrement 0) {
                      return 
          $Lastautoincrement//$Lastautoincrement will be >= 1
                  
          }
                  else {
                      return 
          true;
                  }
              }

              
          // Perform a Query that results a RecordSet
              
          function Query($Query) {
                  
          $DBresult mysql_query($Query);
                  if (!
          $DBresult) {
                      echo 
          "<b>db: Query failed.</b> Query was: $Query<BR>";
                      echo 
          "<b>MySQL Fehlermeldung: </b>".mysql_error()."<BR>";
                      return 
          false;
                  }
                  return new 
          TMySQLRecordSet($this$DBresult);
              }
          }
          // End class TMySQLDatabase 
          Das ist jetzt doch etwas viel Code.
          Die function habe ich selbst erstellt (mehr nach dem prinzip Cut&Paste).
          Das ist ein Shop System, das ich um ein paar Funktionen erweitern will,
          und gleichzeit das erlernte PHP wissen praktisch üben will.

          So ich hoffe das Hilft weiter.

          Kommentar

          Lädt...
          X