[RESOLU] REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 17 janv. 2021, 10:48

hello oui desolee c'est vrai belle coquille ! merci j'ai modifié ! en revanche ma requete ne marche pas et je ne comprends pas : dans ma table UserMembre (rectifiée j'ai fait une requette
public function findByUsernameMembre(string $username_member)
{
$query = $this->pdo->prepare('SELECT * FROM ' . $this->table . ' WHERE username_member = :username_member');
$query->execute(['username_member' => $username_member]);

$query->setFetchMode(\PDO::FETCH_CLASS, $this->class);
$result = $query->fetch();

if ($result === false) {
throw new NotFoundException($this->table, $username_member);
}
return $result;
et une autre : pour creer un membre :
public function createUsernameMember(UserMembre $username_member): void
{
$id = $this->create([
'username_member' => $username_member->getUsernameMember(),
'password_m' => $username_member->getPasswordMember(),
]);
$username_member->setId($id);
}

je test avec mon dd('query'); et j'ai rien de chez rien ! mes requetes ne sont pas bonnes !

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 17 janv. 2021, 10:48

h

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Ryle » 15 janv. 2021, 19:10

Par rapport au premier code que tu as posté :
Tu indique ici avoir créé une table nommée "user_member" :
CREATE TABLE user_member (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username_member VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
Puis tu créer ta classe avec un attribut $table, auquel tu affecte la valeur "username_member"
protected $table = "username_member";
Sauf que "username_member" n'est pas le nom de ta table, mais de l'un de tes champs... Résultat, quand dans ta requête tu fais appel à $this->table, tu te retrouves avec le nom du champ là où tu devrais avoir le nom de la table...
$query = $this->pdo->prepare('SELECT * FROM ' . $this->table . ' WHERE username_member = :username_member');
Et y a de grande chance qu'en mettant le nom de la table dans la variable $table, plutôt que le nom du champ, cela résolve ton problème, du moins en grande partie :)

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 15 janv. 2021, 15:46

Hello merci
Mais ma table est userMembre
C est ma colonne qui s appelle username_membre
Peut être aurai je du mettre pseudo ?

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Ryle » 15 janv. 2021, 15:18

Salutations !

La remarque d'Or1 visait à mettre en exergue le fait que tu avais créé en base une table nommée "user_member" (cf. le CREATE) et qu'ensuite tu essayais d'interroger une table "username_member" (ta variable) ce qui a pour le coup, peu de chance de fonctionner :)

(J'ai pas regardé s'il y avait autre chose, mais cela devrait déjà t'avancer un peu :))

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 15 janv. 2021, 14:55

Hello : Si je recapitule mes fichiers pour checker mes betises!
un fichier controller_login_index : pour les membres
un fichier controller_login_register : pour ceux qui veulent s'enregistrer
un dossier model avec mon fichier userMembre et mes functions
un dossier table avec un fichier userTableMembre avec la class userTableMembre et mes functions dont ma requete qui ne marche pas $query!

un fichier views_login_index : mon formulaire pour mettre son pseudo et MP
un fichier views_login_register: mon formulaire pour s'inscrire avec un lien href pour acceder au cas ou on est deja membre!
et mes fichiers logout de deconnection pour chacun

voilà j'ai tenté de vous mettre au clair ma demande ! je trouve pas ! :oops: :cry:

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 14 janv. 2021, 21:04

ok or1 mais j'ai pas compris :( moi difficile il me faut du detail
SELECT * FROM ' .$this->table . c'est ma table parent : ca appelle bien userTableMembre


final class UserTableMembre extends Table
{
protected $table = "username_member";
protected $class = UserMembre::class;

public function findByUserMembre(string $username_member)
{
$query = $this->pdo->prepare('SELECT * FROM ' . $this->table . ' WHERE username_member = :username_member, password = :password');
$query->execute(['username_member' => $username_member]);

$query->setFetchMode(\PDO::FETCH_CLASS, $this->class);
$result = $query->fetch();

if ($result === false) {
throw new NotFoundException($this->table, $username_member);
}
return $result;


j'ai exactement la meme chose pour mon useradmin et ca fonctionne !

Re: REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par or 1 » 14 janv. 2021, 20:28

CREATE TABLE user_member
protected $table = "username_member";
SELECT * FROM ' . $this->table

normal que cela ne fonctionne pas.

REQUETTE qui ne marche PAS (projet MVC orienté POO Blog PHP

par Beebeepc » 14 janv. 2021, 19:32

Bonjour à tous ! voilà encore un souci depuis hier et je trouve pas ! pff :roll: J'ai crée une page pour que les visitors s'enregistrent.OK j'ai cree mon modele : UserMembre avec mes proprietes privates et mes functions, mes getters et setters, function getpassword et set password... J'ai cree une nouvelle table :
CREATE TABLE user_member (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username_member VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;

j'ai cree ma Table :
final class UserTableMembre extends Table
{
protected $table = "username_member";
protected $class = UserMembre::class;

public function findByUserMembre(string $username_member)
{
$query = $this->pdo->prepare('SELECT * FROM ' . $this->table . ' WHERE username_member = :username_member');
$query->execute(['username_member' => $username_member]);
$query->setFetchMode(\PDO::FETCH_CLASS, $this->class);
$result = $query->fetch();

if ($result === false) {
throw new NotFoundException($this->table, $username_member);
}
return $result;
}
} quand je fais un dd ( dump) pour voir dans ma variable $query : rien rien rien elle marche pas ! :non:

j'ai dans ma vue mon formulaire :<div class="login_member my-5 "><br>
<h3>Connexion</h3><br><br><br>
<form action="" method="POST">
<div class="row ">
<label><b>Entrez votre PSEUDO</b></label>
<input type="text" placeholder="votre pseudo" name="username_member" required>
</div>
<div class="row mt-2">
<label><b>Mot de passe</b></label>
<input type="password" placeholder="Entrer le mot de passe" name="pwd" required>
</div>
<div class="d-flex justify-content-center">
<button class="btn btn-secondary mt-3" type="submit">LOGIN ->
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-emoji-smile" viewBox="0 0 16 16"> ( je me suis amusée à mettre un bouton avec un smiley donc je vous ai coupé la fin du script qui ne sert à rien pour ma demande :wink:

Mais bon sang !! à moins que je me plante entre le nom de ma table et mon attribut ! je vois plus desolee
est ce que vous auriez une idee? merci bcp belle soiree