Class probleem

Status
Niet open voor verdere reacties.

phobia

Terugkerende gebruiker
Lid geworden
4 sep 2006
Berichten
1.777
Ik heb deze controller:
PHP:
include('classes/database.php');
include('classes/login_class.php');

$conn = new database();
$login = new login();

$conn->db = $db;

$conn->Connect();

if($login->check('GeeJee', '2011')) {
	echo 'Okey';
echo '<pre>';
print_r($login->check('GeeJee', '2011'));
echo '</pre>';
} else {
	echo 'Failed';
}

Mijn database.php is dit:
PHP:
<?PHP
class database {
	private $connection = FALSE;
	private $result = FALSE;
	public $table_array = array();
	public $db = '' ;
// __construct
public function  Connect() {
	global 	$host		 ;// host Database
	global  $user		 ;// username Database
	global  $pass		 ;// password Database
	global  $db			 ;// name Database	
	
	$this->connection = mysql_connect($host, $user, $pass);
	if ($this->connection) {
		$this->db = mysql_select_db($db);
		return TRUE;
	} else {
		return FALSE;
	}
}
// end Connect

// protection strings in to DB
//////  protect($string)
public function protect($string) {
	$this->connection;
	
	$string = mysql_real_escape_string($string);
	$string = strip_tags($string);
	$string = addslashes($string);
	
	return $string;
	
}
// end protect

// check if tables are made
public function check_tables() {

	foreach($this->table_array as $key) {
		$result = mysql_query("show tables like '$key'",$this->connection) or die ('error reading database');
		if (mysql_num_rows ($result)<1)
			$error[] = $key;
	}
	if(isset($error)) {
		return $error;
	} else {
		return FALSE;
	}

}
// end check_tables

// Run Query in database
public function Query($query,$lowLimit = 0, $maxLimit = 0) {

		if($lowLimit > 0) {
			$query .= " Limit $lowLimit";
			if($maxLimit > 0) {
				$query .= " ,$maxLimit";
			}
		}
		$result = mysql_query($query)or die (mysql_error());
		if ($result) {
			$this->result = $result;
		} else {
			return FALSE;
		}

}
// end Run Query

// Fetch Query in database
public function Fetch() {
		
		if ($this->result) {
			while($fetch = mysql_fetch_array($this->result)or die(mysql_error())) {
				
				$result[] = $fetch;
			}
			return $result;
		} else {
			return FALSE;
		}

}
// end Fetch Query

// RowCount Query in database
public function RowCount() {

		if ($this->result) {
			$count = mysql_num_rows($this->result)or die(mysql_error());
			return $count;
		} else {
			return FALSE;
		}

}
// end RowCount
	
// close database connection
/////////  close()
public function Close() {
	if ($this->connection) mysql_close($this->connection);	
} 
// end Close

}//end Class
?>

en dit is de login:
PHP:
<?PHP

class login extends database
{

// check if in database
// check($Uname, $pass
public function check($Uname, $pass) {

	//$this->Connect();
	
	//clean strings
	$Uname = $this->protect($Uname);
	$pass  = $this->protect($pass);
	
	$SQL = "SELECT * FROM users WHERE user_login = '".$Uname."' AND user_authorization = '".$pass."'";

	$this->Query($SQL,1);	
	
	if($this->RowCount() > 0) {
		// user found
		return $this->Fetch();
		
	} else {
		// user NOT found
		return FALSE;
	}
	
	
	$this->Close();

}
// end check


} // end class login
?>

Nu verwacht ik dat ik een array terug krijg met gegevens.
Maar de pagina blijft leeg.
Door echo's ben ik er achter dat het komt door de Fetch functie.
Doe ik een print_r in de Fetch fuctie, dan verschijnen de gegevens op het scherm.
Maar hij blijkt de gegevens niet return te gevens aan mijn login functie!

Kan iemand mij vertellen waarom hier niet gebeurt wat ik verwacht.
Ergens sterft het script ik ik weet niet waar en waarom!

Ik laad dit allemaal op een index.php waar ik ook de error-report aan heb staan!
 
Je roept in je voorbeeld een tweede keer de check() functie aan... maar de eerste check() sluit de verbinding naar de database, dus de tweede aanroep faalt in het uitvoeren van zijn query (want hij heeft geen verbinding) en dus krijgt die niks terug, maar de eerste wel.

Dat is mijn vermoeden, althans.
 
Wat je opgemerkt heb, is een logisch iets. Heb het ook veranderd.
Maar uit nog wat testen blijkt dat het probleem in de while loop zit
PHP:
// Fetch Query in database
public function Fetch() {
        
        if ($this->result) {
            while($fetch = mysql_fetch_array($this->result)or die(mysql_error())) {
                
                $result[] = $fetch;
            }
            return $result;
        } else {
            return FALSE;
        }
 
}
// end Fetch Query
Of moet ik door de array $fetch lopen om de waarde in de array $results te laden?
Lijk me een overbodige stap.
Maar ik zie zo niet wat er fout aan is. Denk dat het slaap te kort is!:shocked:
 
Laatst bewerkt:
Opgelost,
Ik heb van de while loop een foreach gemaakt
foreach($fetch as $key) {
$result[] = $key;
}
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan