Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: PHP OOP - array return
AUTOR BEITRAG
▪вιzzаrє▪

RANG Master of Clanintern

#1 - 18.04 14:08

Hallo,

habe ein problem bei der rückgabe von einem array als return...

erst einmal der code...

index.php
PHP-code:
<?php
// Dateiname: index.php
// Autor: (IAF52)
// Datum: 
include ("db_config.php");
include (
"database_connect.php");
include (
"user_class.php");

$user[] = $oc_Connect->getUser("SELECT * FROM bb_accounts");

echo 
$user[1];
echo 
"Name :".$user[0]->getName();



database_class.php
PHP-code:
<?php     function getUser($query){
        if (!isset(
$this->dbConnection)) $this->dbConnect();
        if (
$this->dbConnection == false) return;
        
        
$stmt = @oci_parse($this->dbConnection$query);
        
        
oci_bind_by_name($stmt,":USERNAME",&$username);
        
oci_bind_by_name($stmt,":PASSWORD",&$password);
        
        
ocidefinebyname($stmt,"USERID",&$userid);
        
ocidefinebyname($stmt,"EMAIL",&$email);
        
ocidefinebyname($stmt,"NAME",&$name);
        
ocidefinebyname($stmt,"FIRSTNAME",&$firstname);
        
ocidefinebyname($stmt,"ADMINISTRATOR",&$administrator);
        
        
oci_execute($stmt);
        
$i 0;
        
        
whil[quote][/quote]e(ocifetch($stmt)){
            
//Neues Objekt "User" erstellen und mit Daten f&uuml;llen.
            
$user[$i] = new User($userid$email$name$firstname$username$administrator$password);
            
$i++;
        }
        echo 
$user[2]->getName();
        
$this->dbClose();
        return (
$user);
    } 
?>


Ablauf: index.php -> database_class.php (Function getUser) -> index.php (Ausgabe)

Fehlermeldung:
quote:
Fatal error: Call to a member function getName() on a non-object in C:\Programme\Zend\Apache2\htdocs\projekt\index.php on line 12


var_dump($user) index.php
quote:
array(1) { [0]=> array(4) { [0]=> object(User)#2 (7) { ["userID"]=> string(1) "2" ["email"]=> string(13) "Hans@dampf.de" ["name"]=> string(5) "Dampf" ["firstname"]=> string(4) "Hans" ["username"]=> NULL ["administrator"]=> string(1) "0" ["password"]=> NULL } [1]=> object(User)#3 (7) { ["userID"]=> string(1) "3" ["email"]=> string(11) "Du@Idiot.de" ["name"]=> string(5) "Affen" ["firstname"]=> string(3) "Boy" ["username"]=> NULL ["administrator"]=> string(1) "0" ["password"]=> NULL } [2]=> object(User)#4 (7) { ["userID"]=> string(1) "4" ["email"]=> string(14) "dsfjj@fdsjf.de" ["name"]=> string(4) "gfdg" ["firstname"]=> string(4) "gfdg" ["username"]=> NULL ["administrator"]=> string(1) "0" ["password"]=> NULL }


kann mir wer helfen?

Gruß & Dank,
Levi :}
vaest´ark // patrick *circle of confusion*

RANG Master of Clanintern

#2 - 18.04 14:29

falsches forum. das gehört ins wd-forum. egal.
guck dir mal genau an wie dein array aussieht.
es ist zwei-dimensional.

code:

array(1){
  [0] => array(4){
    [0] => object(User)#2 (7){
      ["userID"] => ....
      // Inhalte
    }
  }
}



du müsstest also in der index.php:12 folgenden aufruf tätigen:
$user[0][0]->getName();

oder die eckigen klammern (die implizieren bereits eine array-dimension, in deinem falle die erste) in zeile 9 nach dem $user entfernen. dann hast du dein eindimensionales array.


$user = array();
und
$user[] = NULL;
sind nicht das selbe.
ersteres deklariert $user als leeres array, zweiteres als eindimensionales array mit der länge 1 bei dem im ersten (ich nenns mal) feld NULL steht.

(edit)
code:

function my_vardump(&$var){
  echo '<pre>';
  var_dump($var);
  echo '</pre>';
}

und du siehst direkt wie das array "wirklich" aussieht.
▪вιzzаrє▪

RANG Master of Clanintern

#3 - 18.04 14:36

viel dank und auch für die ausführliche erklärung... manchmal sieht man vor lauter bäumen den wald ned mehr, kann somit zu