Message d'erreur conçernant insértion des données dans bdd
hankabyl
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
hankabyl Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
hankabyl Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour messieurs: Je vous prie de m'aider à résoudre le problème suivant et je vous remercie d'avance: Message d'erreur: Fatal error: Call to a member function escape_string() on null in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\foruteste\add_topic.php on line 25
- voila les fichiers config.php et add_topic.php
- voila les fichiers config.php et add_topic.php
<?php $link = new mysqli('localhost','root','') or die ('Erreur : '.$link->error ); $link->select_db('topsawa_forum') or die ('Erreur :'.$link->error); ?>
<?php include("espace/verif.php"); include("config.php"); global $mysqli; // on teste si le formulaire a été soumis if (isset ($_POST['go']) && $_POST['go']=='Poster') { // on teste la déclaration de nos variables if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['message'])) { $erreur = 'Les variables nécessaires au script ne sont pas définies.'; } else { // on teste si les variables ne sont pas vides if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['message'])) { $erreur = '<b><big><big>Remplir tous les champs.</big></big><big></b>'; } // si tout est bon, on peut commencer l'insertion dans la base else { // on calcule la date actuelle $date = date("Y-m-d H:i:s"); // préparation de la requête d'insertion (pour la table forum_sujets) $sql = 'INSERT INTO forum_sujets VALUES("", "'.$mysqli->escape_string($_POST['auteur']).'", "'.$mysqli->escape_string($_POST['titre']).'", "'.$mysqli->escape_string($_POST['message']).'", "'.$date.'")'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $mysqli->query($sql) or die('Erreur SQL !'.$sql.'<br />'.$mysqli->error); // on recupère l'id qui vient de s'insérer dans la table forum_sujets $id_sujet = $mysqli->insert_id; // lancement de la requête d'insertion (pour la table forum_reponses $sql = 'INSERT INTO forum_reponses VALUES("", "'.$mysqli->escape_string($_POST['auteur']).'", "'.$mysqli->escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $mysqli->query($sql) or die('Erreur SQL !'.$sql.'<br />'.$mysqli->error); // on ferme la connexion à la base de données //->close(); mysqli_close($conn); //-> mysqli_close($link); // on redirige vers la page d'accueil header('Location: index.php'); // on termine le script courant exit; } } } ?> <html> <head> <title>Insertion d'un nouveau sujet</title><link rel="stylesheet" type="text/css" href="style.css"> <script type="text/javascript"> function add_icone(ico) { var elem = document.getElementById("message"); var tmp = elem.value; var lentmp = tmp.length; var debcurseur = elem.selectionStart; var fincurseur = elem.selectionEnd; // place le code du smiley a la position du curseur elem.value = tmp.substring(0, debcurseur) + ico + tmp.substring(fincurseur, lentmp); // place le curseur juste apres le smiley elem.setSelectionRange(debcurseur+ico.length, debcurseur+ico.length); } </script> </head> <body> <?php include("header.html"); ?> <?php include("liens_menu.html"); ?> <!-- on fait pointer le formulaire vers la page traitant les données --> <?php // on affiche les erreurs éventuelles if (isset($erreur)) echo '<br />',$erreur; ?> <?php // on affiche le contenu de la zone de texte if (isset($_POST['envoi'])) { $message = $_POST['message']; $message = str_replace('*)', '<img src="simileys/bravo.gif" />', $message); echo $message.'<br /><hr /><br />'; } ?> <center><b><big>Ajoutez un nouneau sujet maintenant !</big></b> <br> <center><b><big>Tous les champs sont obligatoires</big></b> <table bgcolor="#660000 width="700" border="20" cellpadding="0" cellspacing="5"> <tr><td> <form action="add_topic.php" method="post"> <span style="font-weight: bold; color: white;">Auteur :</span> <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>"> <br><br> <span style="font-weight: bold; color: white;">Titre :</span> : <input type="text" name="titre" maxlength="80" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>"> <br><br> <span style="font-weight: bold; color: white;">Message :</span> : <img src="simileys/bravo.gif" onclick="add_icone('*)');" /> <br /> <textarea id="message" name="message" cols="60" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea> </textarea></table> <br> Entrer le code <img src="captcha.php"> <input type="text" name="captcha"> <input type="submit" name="go" value="Poster"> </tr></td> </form></table></center> <br> <?php session_start(); if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["code"]==$_POST["captcha"]) { $status = "<p style='color:#FFFFFF; font-size:20px'> <span style='background-color:#46ab4a;'>Votre code captcha est correct.</span></p>"; }else{ $status = "<p style='color:#FFFFFF; font-size:20px'> <span style='background-color:#FF0000;'>Le code captcha entré ne correspond pas! Veuillez réessayer.</span></p>"; } echo $status; ?> <br> <?php include("footer.html"); ?> </body> </html>
A voir également:
- Message d'erreur conçernant insértion des données dans bdd
- Recuperer message whatsapp supprimé - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
- Trier des données excel - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
2 réponses
Bonjour,
Déjà, lorsque tu postes du code sur le forum, il faut que tu y indiques le langage pour avoir la coloration syntaxique.
Merci de lire entièrement le lien suivant avant de nous poster à nouveau du code :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite,
Ton message d'erreur ne concerne pas mysql .. mais une partie de ton code PHP
Je déplace donc ta question dans le bon forum...
Merci d'y faire attention à l'avenir.
Et donc
l'erreur concerne cette ligne
Il t'indique une erreur sur la fonction escape_string en te précisant qu'il ne peut pas le faire sur une valeur NULL.
Tu n'as donc pas envoyé une (ou plusieurs) de tes variables POST
Pour t'aider à corriger ton souci, je t'invite à lire ET à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.
Déjà, lorsque tu postes du code sur le forum, il faut que tu y indiques le langage pour avoir la coloration syntaxique.
Merci de lire entièrement le lien suivant avant de nous poster à nouveau du code :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite,
Ton message d'erreur ne concerne pas mysql .. mais une partie de ton code PHP
Je déplace donc ta question dans le bon forum...
Merci d'y faire attention à l'avenir.
Et donc
l'erreur concerne cette ligne
// préparation de la requête d'insertion (pour la table forum_sujets) $sql = 'INSERT INTO forum_sujets VALUES("", "'.$mysqli->escape_string($_POST['auteur']).'", "'.$mysqli->escape_string($_POST['titre']).'", "'.$mysqli->escape_string($_POST['message']).'", "'.$date.'")';
Il t'indique une erreur sur la fonction escape_string en te précisant qu'il ne peut pas le faire sur une valeur NULL.
Tu n'as donc pas envoyé une (ou plusieurs) de tes variables POST
Pour t'aider à corriger ton souci, je t'invite à lire ET à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
.