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   -
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
<?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:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
  // 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

.
1
hankabyl Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Je vous remercie beaucoup de l' importance que vous m' avez donner. Je vais voir avec le lien que vous m' avez envoyé et merci beaucoup.
0