Menu

Vérifier si la variable existe dans la bdd [Résolu]

iamlouky 13 Messages postés mardi 26 décembre 2017Date d'inscription 22 avril 2018 Dernière intervention - 7 janv. 2018 à 13:08 - Dernière réponse : jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention
- 7 janv. 2018 à 13:20
Bonjour,
J'aimerais vérifier dans ma base de donnée si la variable "code1" existe mais ça me mets :

( ! ) Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\Projet\authentification\index.php on line 36

<?php
  
// à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
session_start();
  
$mysqli = mysqli_connect("localhost", "root", '', "projet");
if(!$mysqli) {
echo "Connexion non établie.";
exit;
}
  
$error = false;
$adminpageError = "";
$code1Error = "";
$code1noncorrespondError = "";
  
  
if (isset($_SESSION['username']) && $_SESSION['username'] =="admin") {
$adminpageError = "<p><a href='inscription.php'>Admin page </a></p>";
}
  
if (isset($_POST['valider'])) {
if (empty($_POST['code1'])) {
$error = true;
$code1Error = "S'il vous plait entrez le code .";
} else {
$req="SELECT COUNT(*) FROM `client` WHERE code1= '".mysqli_real_escape_string($mysqli, $_POST['code1'])."'";
$res=mysqli_query($mysqli,$req);
header("location: accueil.php");
}
}
  
// Si tout va bien, on peut continuer
// On récupère tout le contenu de la table client
$req = $mysqli->prepare('SELECT * FROM `client` WHERE username = :username');
$req->execute(array(':username' => $_SESSION['username']));
  
// On affiche chaque entrée une à une
while ($donnees = $req->fetch())
{
?>
Afficher la suite 

2 réponses

Répondre au sujet
jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 7 janv. 2018 à 13:14
0
Utile
1
Bonjour,

Tu te connectes à ta bdd en utilisant le stylé "procédural".
Sauf qu'ensuite tu fais ta requête en style objet.

Donc soit tu fais tout en style objet.. soit tout en style procédural...



De plus.. je t'invite vivement à lire et à appliquer ceci : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

NB: Et pense aussi à mettre des EXIT après tes redirections.

jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 7 janv. 2018 à 13:20
Et sinon.. à quoi sert ta redirection dans ta première requete ??
<?php
// à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
session_start();

//activation des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
  

//connexion à la bdd (serait mieux dans un fichier à part...)  
$mysqli = mysqli_connect("localhost", "root", '', "projet");
if(!$mysqli) {
  echo "Connexion non établie.";
  exit;
}
  
//initilisation des variables  
$error = false;
$adminpageError = "";
$code1Error = "";
$code1noncorrespondError = "";
  
//récupération PROPRE des variables AVANT de les utiliser  
$username =  !empty($_SESSION['username']) ? $_SESSION['username']: NULL;
$valider = !empty($_POST['valider']) ? $_POST['valider'] : NULL;
$code1 = !empty($_POST['code1']) ? mysqli_real_escape_string($mysqli, $_POST['code1']) : NULL;

  
if ($username$ =="admin") {
  $adminpageError = "<p><a href='inscription.php'>Admin page </a></p>";
}
  
if ($valider) {
  if (! $code1) {
    $error = true;
    $code1Error = "S'il vous plait entrez le code .";
  } else {
    $req="SELECT COUNT(*) FROM `client` WHERE code1= '".$code1."'";
    $res= mysqli_query($mysqli,$req);
          
    header("location: accueil.php"); // et tu fais rien si tu as un code ??? tu retourne à l'accueil c'est tout ?
    //ça sert à quoi au juste ??
    exit();
  }
}


// le reste de ton code
Commenter la réponse de jordane45