Bonjour,

Pour un site web j'ai du créer un livre d'or basique sans formatage pour le moment.

Tout mon script marche, sauf que en allant sur ma page livreor.php, 3 erreurs s'afiche

Notice: Undefined index: message in D:\wamp\www...\livreor.php on line 17

Et sa pareil pour les lignes 15 et 16, bref pour les 3 variables.

Pour une question d'organisation le fichier livreor.php est en include dans la page index.php.

Voici le code php de la page livreor.php:

<?php

// Connexion base de données
require "config.php";
$conn = mysqli_connect(DB_SERVER,DB_LOGIN,DB_PASS,DB_NAME);
mysqli_query($conn,'SET NAMES'.DB_ENC);

// Check connection
if (!$conn){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    die("Erreur: ".mysqli_connect_errno());
}

// Récupération valeurs
$pseudo = mysqli_real_escape_string($conn, $_POST['pseudo']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$message = mysqli_real_escape_string($conn, $_POST['message']);

// Traitement donnees
if(!empty($_POST)){
    $ip=$_SERVER["REMOTE_ADDR"];
    $pseudo=htmlentities($pseudo);
    $email=htmlentities($email);
    $message=htmlentities($message);
    $req = "INSERT INTO lo_messages(pseudo,mail,message,ip) VALUES ('$pseudo','$email','$message','$ip')";
    $res = $conn->query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysqlierror($conn));
}

// Suppression donnees
if(isset($_GET['suppr'])){
    $req = "DELETE FROM lo_messages WHERE id={$_GET['suppr']}";
    $res = $conn->query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysqlierror($conn));
    echo 'Message supprimé';
}
?>

<form method="post" action="index.php">
    <label for="inputpseudo">Nom:</label><br>
        <input type="text" name="pseudo" id="inputpseudo"><br>
    <label for="inputmail">Email</label><br>
        <input type="email" name="email" id="inputemail"><br>
    <label for="inputmessage">Message</label><br>
        <textarea name="message" id="inputmessage"></textarea><br><br>
    <button type="submit">Envoyer</button>
</form>

<?php

// Affichage message
$req = "SELECT * FROM lo_messages ORDER BY id DESC";
 $res = $conn->query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysqli_error($conn));
while ($data = mysqli_fetch_array($res)){
    echo "<strong>".$data["pseudo"]."</strong><br>";
    echo "<p>".$data["message"]."</p>";
    echo '<p><a href="index.php?suppr='.$data["id"].'"> x </a></p>';
}

// Fermeture connexion
mysqli_close($conn);
?>

Et le fichier congig.php:

<?php

define("DB_SERVER","localhost");

define("DB_NAME","livreor");

define("DB_LOGIN","root");

define("DB_PASS","");

define("DB_ENC","UTF8");

Si vous pouvez m'aider car c'est tres important.

8 réponses


bugland
Réponse acceptée

Oupps désolé j'ai oublié les parenthèses :

if (isset($_POST['pseudo'])){
    $pseudo = mysqli_real_escape_string($conn, $_POST['pseudo']);
}
bugland
Réponse acceptée

Pour la récupération des variables met un sinon :

if (isset($_POST['pseudo'])){
    $pseudo = mysqli_real_escape_string($conn, $_POST['pseudo']);
}
else{
    $pseudo = "";
}

Après c'est des erreurs mineurs si tu veux pas qu'elle apparaissent tu mets cela en début de fichier :
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 1);

Ce sont des erreurs pas très grave il te suffit de faire cela :

if isset($_POST['pseudo']){
    $pseudo = mysqli_real_escape_string($conn, $_POST['pseudo']);
}

Pareil pour les deux autres variables.

Meridias
Auteur

il doit il y avaoir un truc sa me met un problem sur isset

Meridias
Auteur

Parfait sa c'est réparer maintenant sa me met une ereur aux lignes 23 + 24 quand j'envoie le formulaire :/

C'est quoi l'erreur ?

Meridias
Auteur

Voici un screen direct de l'erreur:
Lien erreur screen email + message

Meridias
Auteur

pas eu besoin de

else{
    $pseudo = "";
}

j'ai juste mis

// Récupération valeurs
if (isset($_POST['pseudo'])){
    $pseudo = mysqli_real_escape_string($conn, $_POST['pseudo']);
}
if (isset($_POST['email'])){
    $email = mysqli_real_escape_string($conn, $_POST['email']);
}
if (isset($_POST['message'])){
    $message = mysqli_real_escape_string($conn, $_POST['message']);
}

j'avai oublier de mentionner $email et $message lol