Bonjour la communauté,
je veux permettre aux utilsateurs de mon site de supprimer leur compte quand ils veulent
mais j'ai cette erreur:
Fatal error: Uncaught Error: Call to undefined method Db::execute() in C:\wamp\www\ndameyong\delete.php:31 Stack trace: #0 {main} thrown in C:\wamp\www\ndameyong\delete.php on line 31
voilà le fichier
Db.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
 
/**
* Gestion de la base de données
*/
class Db{
 
    private $host=HOST;
    private $name=DBNAME;
    private $user=USER;
    private $pass=PWD;
 
    private $connexion;
 
    function __construct($host=null,$name=null,$user=null,$pass=null){
 
        if($host != null){
            $this->host = $host;
            $this->name = $name;
            $this->user = $user;
            $this->pass = $pass;
        }
 
        try{
 
            $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
                $this->user,$this->pass,array(
                    1002 =>'SET NAMES UTF8',
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
 
 
 
                    ));
            $this->connexion->exec('SET NAMES utf8');
//PDO::MYSQL_ATTR_INIT_COMMAND
        }catch (PDOException $e){
            //echo 'Erreur : Impossible de se connecter  à la BD !';die();
            echo $e->getMessage();
        }
    }
 
    /* requete */
 
    public function query($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_OBJ);
    }
 
    public function tquery($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_ASSOC);
    }
 
 
    public function insert($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $nb=$req->execute($data);
        return $nb;
    }
 
    public function uniqueEmail($email){
        $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1');
        $req->execute(array('email'=>$email));
 
        $reponse = $req->fetchAll(PDO::FETCH_ASSOC);
        return $reponse[0]['nbre'];
 
    }
 
 
    public function exec($sql , $data=array()){
      try{
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête
      }catch(Exception $e){
        echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête !
      }
    }
}
delete.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php require 'includes/includes.php';
 
if(!Auth::islog($DB)){
    header('location:index.php');
    exit(); 
    }
 
if(empty($_SESSION['user'])){
  header('Location: login.php');
}
 
$user = $_SESSION['user'];
 
$filePath = 'photos/'.$user["id"].'/'.$user['photo'];
 
$dir = new DirectoryIterator(dirname('photos/'.$user['id']));
 
foreach($dir as $fileinfo){
	if(!$fileinfo->isDot()){
		unlink($fileinfo->getPathname());
	}
}
 
if($user['photo'] && file_exists($filePath) && is_file($filePath)){
	unlink($filePath);
	rmdir('photos/'.$user->id);
}
 
$sql = 'DELETE FROM users WHERE id=:id';
$data = [':id'=>$user['id']]; 
$del = $DB->exec($sql , $data) ;
 
 
unset($_SESSION['user']);
session_destroy();
header('Location: index.php');
que puis-je faire pour remédier à ce problème? Mercie