Résolu PHP - Variable dans une requête PDO

Statut
N'est pas ouverte pour d'autres réponses.

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
RGCoins
0
Hello,

Je voudrai savoir comment faire une requête SQL (avec PDO) de ce type :

PHP:
$mail = $_SESSION['admins'];

$sql = 'SELECT name FROM admins WHERE mail = $mail';

Voici mon code actuel :

PHP:
<?php
$sql = 'SELECT name FROM admins WHERE email = "[email protected]"';
$q = $db->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
while ($row = $q->fetch()):
?>

          <input type="text" name="name" id="name" class="validate" value="<?php echo $row['name'] ?>" readonly>
          <?php endwhile; ?>

Ce code fonctionne car ça retourne bien le nom qui correspond à l'email que j'ai mise, mais moi je voudrai mettre l'email que retourne $_SESSION['admins']; mais je n'y arrive pas D:

Si quel qu'un aurait une solution!
Merci!
 

Tmoitoi

Membre
Inscription
28 Novembre 2017
Messages
16
Réactions
5
Points
46
RGCoins
0
Dans ce cas tu peux simplement y mettre un <?php error_reporting(0); ?> dans ton code (De cette page uniquement), cette erreur n'est pas une faille exploitable, même si certains me contrediront :hug:
 

Tmoitoi

Membre
Inscription
28 Novembre 2017
Messages
16
Réactions
5
Points
46
RGCoins
0
Ah dans ce cas remet

Code:
<input type="text" name="name" id="name" class="validate" value="<?= $Requete->name; ?>" readonly>

Comme c'était lorsque ça fonctionnait finalement.
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
RGCoins
0
Ah dans ce cas remet

Code:
<input type="text" name="name" id="name" class="validate" value="<?= $Requete->name; ?>" readonly>

Comme c'était lorsque ça fonctionnait finalement.
Je l'avais justement déjà remis, je viens de tester avec echo toujours rien :espion:
 

Tmoitoi

Membre
Inscription
28 Novembre 2017
Messages
16
Réactions
5
Points
46
RGCoins
0
Pas de soucis, écoute là je dois m'absenter et je serai là vers 23H, je t'envois un petit MP et on règle ça pour de bon ? sinon demain :)

N'hésite pas à avancer ton site en parallèle on reviendra là-dessus dès que on arrive à se joindre.
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
RGCoins
0
Pas de soucis, écoute là je dois m'absenter et je serai là vers 23H, je t'envois un petit MP et on règle ça pour de bon ? sinon demain :)
N'hésite pas à avancer ton site en parallèle on reviendra là-dessus dès que on arrive à se joindre.
D'accord merci bien pour ton aide!
C'était la dernière modification que j'avais a apporté à mon site (du moins après je dois faire une requête pour le changement d'email, mais rien de bien compliquer pour ça).
 

-PizzaHut-

Premium
Inscription
4 Septembre 2013
Messages
682
Réactions
232
Points
17 641
RGCoins
0
Salut,

Je suis désolé mais c'est dégueulasse comme code ce que tu lui a donné surtout pour l'écho d'une requête ça fait très mal aux yeux

Si je peux te donner un conseil créer un dossier config et si la session est active alors tu récupère tout sachant que tu l'inclue dans tout tes fichiers tu n'a juste qu'a afficher une variable de session pour le nom et le prénom ( ou autres )

Code:
if(isset($_SESSION['id']))
{
    $vUsers = $bdd->prepare("SELECT * FROM users WHERE id = ?");
    $vUsers->execute(array($_SESSION['id']));
    $rowcPseudo = $vUsers->rowCount();
    if($rowcPseudo == 1)
    {
        $aInfo = $vUsers->fetch();
        $_SESSION['id'] = $aInfo['id'];
        $_SESSION['pseudo'] = $aInfo['pseudo'];
        $_SESSION['email'] = $aInfo['email'];
        $_SESSION['grade'] = $aInfo['grade'];
        $_SESSION['avatar'] = $aInfo['avatar'];

    }
}


Pour l'input ça donne sa :

Code:
<input  type="email" name="email" value="<?= $_SESSION['email']; ?>" /></br>



 

-PizzaHut-

Premium
Inscription
4 Septembre 2013
Messages
682
Réactions
232
Points
17 641
RGCoins
0
Et pour une requête uniquement sur les mail ça donnerais ça :

Code:
[/B]
[B]            $mail = $_SESSION['admins'];
            $RecupMail= $bdd->prepare('SELECT name FROM admins WHERE mail = ?');
            $RecupMail->execute(array($mail));
            if($RecupMail->rowCount() == 1)
             {
                 $RecupMail= $RecupMail->fetch();
                 $email= $RecupMail['mail'];
             }

On ne passe jamais une variable dans une requête mais on l'a passe en paramètre dans un array

Si tu as besoin d'aide supplémentaire n'hésite pas à me mp je me ferais un plaisir de t'aider

Cordialement

~TheChypsis~
 

Tmoitoi

Membre
Inscription
28 Novembre 2017
Messages
16
Réactions
5
Points
46
RGCoins
0
Il n’est pas obligé de créer une requête permanente si elle est appelée que sur une page, de plus, ton code est similaire au mien j’ai fait une requête préparée avec un array tu as un esprit contradicteur pour rien..

Et concrètement faire des SESSIONS de manière abusive n’est pas obligatoirement intelligent tu viens stocker un array en session pour le écho derrière alors que tu peux écho le résultat de la requête sans faire une requête permanente à chaque mouvement de page.

Je partage pas ton avis en tout cas.
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 706
Réactions
897
Points
13 104
RGCoins
0
Code:
<?php

class Database {

  private $pdo;

  public function __construct()
  {
    $this->pdo = new PDO("mysql:dbname=ptt;host=localhost", "root", "root");
    $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
  }

  public function query($query, $params = false)
  {
    if($params)
    {
      $req = $this->pdo->prepare($query);
      $req->execute($params);
    }
    else {
      $req = $this->pdo->query($query);
    }

    return $req;
  }

  public function lastInsertId()
  {
    return $this->pdo->lastInsertId();
  }
}
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
RGCoins
0
Résolu, j'ai refait un peu tout le code..

A la place que $_SESSION['admin'] me donne l'email de l'utilisateur connecté, il me donne désormais son ID (ce qui est bien plus pratique).

Pour ceux qui voudraient savoir comment j'ai fait pour récupérer le nom ainsi que l'email du compte connecté (et que les inputs soit automatiquement complétés par ces informations) voici mon code :

PHP:
<?php
$sql = 'SELECT name,email FROM admins WHERE id = ?';
$req = $db->prepare($sql);
$req->execute(array($_SESSION['admin']));
$q = $req->fetchAll();
foreach ($q as $row){
?>

          <input type="text" value="<?= $row['name'] ?>">
          <input type="email" value="<?= $row['email'] ?>">
<?php } ?>

J'ai mis l'essentiel du code ci-dessus (j'ai enlevé l'ID, name des inputs, les div etc.. pour que le code soit plus compréhensible pour vous.

Merci quand même pour votre aide!
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut