Undefined Index

Petit nouveau ! | 3 Messages

01 mars 2021, 16:37

	
<?php
	$bdd = mysqli_connect('127.0.0.1','root','','sitemarchand');

	$nomPersonne = $_POST['nomPersonne'];
	$prenomPersonne = $_POST['prenomPersonne'];
	$mailPersonne = $_POST['mailPersonne'];
	$mdpPersonne = $_POST['mdpPersonne'];

	// Vérification de la connexion
	if ($bdd) {
	   echo "Connexion réussie";
	}
	else {
	   echo("Échec de la connexion : " . mysqli_connect_error());
	}
	echo '<br>';
	// Insertion dans la base de données
	$requete = "INSERT INTO inscription VALUES ('$nomPersonne','$prenomPersonne','$mailPersonne','$mdpPersonne')";
	if (mysqli_query($bdd, $requete)) {
	  echo "Vous êtes maintenant inscrit";
	}
	else {
	  echo "<br>" . "Erreur: " . $requete . "<br>" . mysqli_error($bdd);
	}
?>

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Inscription</title>
        <link rel="stylesheet" href="../css/Accueil.css">
		<link rel="stylesheet" href="../css/Inscription.css">
		<!-- Lien pour les polices d'écriture -->
        <link href="https://fonts.googleapis.com/css2?family=Potta+One&display=swap" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@500&display=swap" rel="stylesheet">
		<link href="https://fonts.googleapis.com/css2?family=Questrial&display=swap" rel="stylesheet">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css">
    </head>
    <body>
	    <!-- Barre de navigation -->
        <header id="header" role="banner" class="main-header">
            <div class="header-inner">
                <div class="header-logo">
                    <img src="../../Photos/logo.png" alt="Notre Logo" width="120">
                </div>
				<div class="header-nav">
                    <a href="../HTML/Accueil.html" class="header-nav a"><i class="fas fa-home"></i> ACCUEIL </a>
                    <a href="../HTML/PasserelleProduit.html" class="header-nav a"><i class="fas fa-cart-arrow-down"></i> PRODUIT </a>
                    <a href="../HTML/Inscription.html" class="header-nav a"><i class="fas fa-user-circle"></i> COMPTE </a>
                    <a href="../HTML/A_Propos.html" class="header-nav a"><i class="fas fa-envelope"></i> A PROPOS </a>
                </div>
            </div>
        </header>
		<!-- Formulaire de connexion -->
        <div class="login-box">
			<h2 class="">INSCRIPTION</h2>
			<form method="POST" action="../PHP/Inscription.php">
				<div class="user-box">
					<input type="text" name="nomPersonne" required="">
					<label>Nom</label>
				</div>
				<div class="user-box">
					<input type="text" name="prenomPersonne" required="">
					<label>Prénom</label>
				</div>
				<div class="user-box">
					<input type="text" name="mailPersonne" required="">
					<label>Mail</label>
				</div>
				<div class="user-box">
					<input type="password" name="mdpPersonne" required="">
					<label>Mot de Passe</label>
				</div>
				<div class="connexion">
					<a href="../HTML/Connexion.html">
						Déja inscrit, Cliquez ici pour vous connecter.
					</a>
				</div>
				<div class = "insertion">
					<a href="../PHP/Inscription.php">
						<span></span>
						<span></span>
						<span></span>
						<span></span>
						Valider
					</a>
				</div>
			</form>
		</div>
	</body>
</html>


Voici les messages d'erreur qui apparaissent :
( ! ) Notice: Undefined index: nomPersonne in C:\wamp\www\Sites\Site Marchand\Code\PHP\Inscription.php on line 4
( ! ) Notice: Undefined index: prenomPersonne in C:\wamp\www\Sites\Site Marchand\Code\PHP\Inscription.php on line 5
( ! ) Notice: Undefined index: mailPersonne in C:\wamp\www\Sites\Site Marchand\Code\PHP\Inscription.php on line 6
( ! ) Notice: Undefined index: mdpPersonne in C:\wamp\www\Sites\Site Marchand\Code\PHP\Inscription.php on line 7

Merci d'avance pour votre aide !
Modifié en dernier par Enzord le 01 mars 2021, 16:41, modifié 3 fois.

Mammouth du PHP | 2703 Messages

01 mars 2021, 16:39

il faudrait le code du formulaire html.

Petit nouveau ! | 3 Messages

01 mars 2021, 16:54

Normalement le code est posté je suis nouveau je connais pas encore très bien en tout cas merci pour m'accorder du temps et de l'aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 mars 2021, 17:25

Le problème est que tu utilises $_POST['nomPersonne'] (et les autres) dans ton code PHP sans vérifier que ton formulaire ait été envoyé, du coup même au 1er affichage tu essayes de faire l'enregistrement en BDD.
C'est pour cela que tu as ce message d'erreur.

Donc soit tu met la logique de traitement de ton formulaire sur un autre page.
Soit tu vérifies que le formulaire ait bien été envoyé, par exemple en encadrant ton code de traitement par :
if ($_POST) {
     // Ton formulaire a été envoyé, tu peux faire le traitement
}
Il faut donc que tu vérifies
if (empty($_POST['nomPersonne'])
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

01 mars 2021, 17:28

Je ne comprend pas bien ce qu'il faut que je modifie en fin de compte cela doit-il ressembler à cela
	if ($_POST) {
     // Ton formulaire a été envoyé, tu peux faire le traitement
		 if (empty($_POST['nomPersonne'])
}

Avatar du membre
Mammouth du PHP | 1564 Messages

02 mars 2021, 12:35

if ($_POST) {//est pour montrer le chemin, $_POST est toujours true
//fait la vérification de tes champs, savoir si ils sont "postés", comme:
if(isset ($_POST['mon premier champ'])) {
//ok
if(isset($_POST['mon deuxième champ'])) {
//ok
//ainsi de suite...

//tu peux faire la vérif de plusieurs champs en même temps:
if(isset($_POST['mon premier champ'],$_POST['mon deuxième champ'])) {
//te faut ensuite t'assurer de ce que l'utilisateur rentre dans ton formulaire pour insérer au format que tu le souhaite afin de limiter la casse! (Voir: faille injection SQL)
Pour en apprendre d'avantage, une doc PHP est disponible (et en Français):
https://www.php.net/manual/fr/reserved.variables.post
https://www.php.net/manual/fr/function.isset