i am trying to make a registration system using PHP OOP but im getting this errors when i excute it
Notice: Undefined variable: connect in C:\wamp64\www ews\classes\user.php on line 14
Fatal error: Call to a member function prepare() on null in C:\wamp64\www ews\classes\user.php on line 14
i beleive that my problem is that my calsse can't get the db connection instance even im passing it on intiation. i have 2 classes and a registration page my first class is dbconnect.php
<?php
include "./config.php";
class dbconnect{
public function __construct(){
try {
$conect = new PDO('mysql:host='.SERVER.'; dbname='.DATABASE, USERNAME, PASSWORD);
$conect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conect;
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
}
}
?>
my second class is user.php
<?php
class user{
public $username;
public $connect;
function __construct($username,$connect){
$this->username=$username;
$this->connect=$connect;
}
protected function user_exist(){
$request="SELECT * FROM `users` where username='".$this->username."'";
$sql=$connect->prepare($request);
$sql->execute();
$results = $sql->fetch(PDO::FETCH_ASSOC);
if(is_array($results)){
//echo "utilisateur exist";
return true;
}
else{
//echo "utilisateur n'existe pas";
return false;
}
}
public function register($firstname,$lastname,$email,$user,$password){
if(!($this->user_exist())){
$request="INSERT INTO USERS (nom,prenom,email,user,pass,role,statut,date ) VALUES (:firstname, :lastname, :email, :username, :password, :role,:staut, :now())";
$sql = $connect->prepare($request);
$sql->bindParam(':fistname', $firstname);
$sql->bindParam(':lastname', $lastname);
$sql->bindParam(':email', $email);
$sql->bindParam(':username', $username);
$sql->bindParam(':password', $password);
$sql->bindParam(':role', 'subscriber');
$sql->bindParam(':statut', 'waiting for validation');
//$sql->bindParam(':date', $date);
try{
$sql->execute();
}
catch(Exception $e){
if ($e->getCode() == 1062) {
echo $e;
} else {
throw $e;
}
}
}
}
}
?>
and then my registration page
<?php
include "classes/dbconnect.php";
include "classes/user.php";
if((isset($_POST["submit"])) and $_POST["verificaation"]=="submit1"){
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
$email = $_POST["email"];
$username = $_POST["username"];
$pass = $_POST["password"];
$passver = $_POST["passver"];
$conect=new dbconnect();
$user= new user($username,$conect->connect);
$msg=$user->register($nom,$prenom,$email,$user,$pass);
print_r ($conect);
}
?>
<form method="post" action="register.php">
<label>Nom</label>
<input type="text" name="nom"/><br />
<label>Prenom</label>
<input type="text" name="prenom"/><br />
<label>Email</label>
<input type="email" name="email"/><br />
<label>Nom d'utilisateur</label>
<input type="text" name="username" /><br />
<label>Mot de passe</label>
<input type="password" name="password" /><br />
<label>Recrivez le mot de passe</label>
<input type="password" name="passver"/><br />
<input type="submit" name="submit" value="submit" /><br />
<input type="hidden" name="verificaation" value="submit1" />
</form>