bonjour,
je debute en php et tente de faire un espace admin pour mon site j'aimerais biensur avoir quelques commandes en plus que les autres admins
<?php
session_start();
if(isset($_SESSION['pseudo']) AND isset($_SESSION['id']))
{
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $id;
$requser = $bdd->prepare("SELECT * FROM connexionadmin WHERE pseudo = Monpseudo and id = 1 ");
$requser->execute(array($pseudo, $id));
$useradmin1 = $requser->rowCount();
if($useadmin1 == 1)
{
echo "commande admin 1";
}
else
{
echo " commande autres admin";
}
}
else
{
echo "erreur !!!";
}
?>
j'aimerais que : si ma session est connectée alors afficher .... sinon afficher .
pour le moment j'ai juste le message "erreur !!!" qui s'affiche
Je suis pas trop fan de PDO, perso, mais je dirait peutêtre que le problème vient de ta requête
Faut mettre :Monpseudo et non pas Monpseudo
Salut logique tu as inversé...
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $id;
devient
$pseudo = $_SESSION['pseudo'];
$id = $_SESSION['id'] ;
En même temps le code complet est faut ta requête devrait être :
$useradmin1 = $bdd->query("SELECT COUNT(*) FROM connexionadmin WHERE pseudo='$pseudo' AND id='$id'")->fetchColumn();
Pourquoi tu dis que le code complet est faut.
Il est possible de faire une requete préparée.
Par contre oui tu a raison rowCount ne permet pas de faire un count sur un select. Rowconut va permetre de compter le nombre de ligne DELETE, UPDATE, INSERT.
Ce que tu peux faire :
<?php
session_start();
if(isset($_SESSION['pseudo']) AND isset($_SESSION['id']))
{
$pseudo = $_SESSION['pseudo'];
$id = $_SESSION['id'];
$requser = $bdd->prepare("SELECT * FROM connexionadmin WHERE pseudo = :pseudo and id = :id");
$requser->execute([':pseudo' => $pseudo, ':id' => $id]);
$useradmin1 = $requser->fetchAll(PDO::FETCH_ASSOC);
if($useradmin['id'] == 1)
{
echo "commande admin 1";
}
else
{
echo " commande autres admin";
}
}
else
{
echo "erreur !!!";
}
?>
Bonjour.
Tu as plusieurs erreurs dans ton code, je vais donc les expliquer en les énumérant :
pseudo
et id
sont mal ordonnées, tu dois d'abord déclarer la variable, puis ensuite lui définir sa valeur, tu dois donc faire comme te l'a suggéré shinix :
$pseudo = $_SESSION['pseudo'];
$id = $_SESSION['id'];
$bdd
ou l'inclusion du fichier afin de pouvoir l'utiliser."SELECT * FROM connexionadmin WHERE pseudo = Monpseudo and id = 1 "
Par :
"SELECT * FROM connexionadmin WHERE pseudo = :pseudo AND id = :id"
?
à la place de celle qui nécessite la forme :variable
, il te faut donc remplacer :
array($pseudo, $id)
Par :
array('pseudo' => $pseudo, 'id' => $id)
useradmin1
mais tu utilises ensuite la variable useadmin1
qui n'est pas définie et qui ne correspond donc pas à la variable useradmin1
.
<?php
session_start();
if(isset($_SESSION['pseudo']) && isset($_SESSION['id']))
{
$pseudo = $_SESSION['pseudo'];
$id = $_SESSION['id'];
// Inclusion ici de ton fichier qui instancie la connexion à la base de données en PDO et qui définie bien l'objet dans la variable $bdd
$requser = $bdd->prepare("SELECT * FROM connexionadmin WHERE pseudo = :pseudo and id = :id");
$requser->execute(array('pseudo' => $pseudo, 'id' => $id));
$useradmin1 = $requser->rowCount();
if($useradmin1 == 1)
{
echo "commande admin 1";
}
else
{
echo " commande autres admin";
}
}
else
{
echo "erreur !!!";
}
Par contre, même si tu fais toutes ces corrections, ton problème ne changera pas étant donné que l'erreur qui t'es retournée correspond à celle qui dit en gros que la première condition n'est pas rempli, donc que les clés `pseudo` et `id` n'existent pas dans la session.
Tu dois donc avant faire en sorte qu'elles soient instruites avant de vouloir faire fonctionner le code que tu nous montre.
merci beaucoup mais par contre je ne comprend pas bien l'erreur sur id et pseudo voici le code pour la connexion peut être que l'erreur est finalement dedans :
<?php
$bdd = new PDO('mysql:host=localhost;dbname=bddsti','root','');
if(isset($_POST['connexion']))
{
$pseudoconnect = htmlspecialchars($_POST['pseudo']);
$mdpconnect = sha1($_POST['mdp']);
if(!empty($pseudoconnect) AND !empty($mdpconnect))
{
$requser = $bdd->prepare("SELECT * FROM connexionadmin WHERE pseudo = ? and mdp = ? ");
$requser->execute(array($pseudoconnect, $mdpconnect));
$userexist = $requser->rowCount();
if($userexist == 1)
{
header("location: tblcontrole.php");
}
else
{
$erreur = "mdp ou pseudo incorrect";
}
}
else
{
$erreur = "Tout les champs doivent etre remplis";
}
}
?>
<?php
if(isset($erreur))
{
echo $erreur;
}
?>
je ne comprend pas bien l'erreur sur id et pseudo
Ton problème, c'est que d'après le code que tu nous montre, tu ne définies pas les clés pour la session, du coup elles ne peuvent pas être utilisables par la suite.
Je te recommande de visionner le tutoriel Tutoriel Vidéo PHP » Gestion d'un espace membre, bien qu'il serait préférable que tu utilises la structure MVC : Tutoriel Vidéo PHP » Gestion d'un espace membre (refactorisation).
Juste comme ça, ne serait il pas plus simple de solutionner le problème si on connaissait le message d'erreur que php retourne ?
Captainfier, comme déja dit le rowcoun ne permet pas de retourner le nombre de ligne d'un select.
Donc $userexist == 1 => False donc on passe dans le else