PHP SQL 更新问题和未定义的变量

PHP SQL UPDATE problem and undefined variables

我正在寻求您的帮助,以解决我无法解决的两个问题。 第一个不是真正的问题,而是很烦人:

?php
session_start();
 $_SESSION['pseudo'];
 $CAT="";
//tentative de connexion à la base de donnée 
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre;charset=utf8', 'root', '');
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage()); //message d'erreur au cas où la connexion échoue
}
if(isset($_SESSION['id']))
{   //echo "ok";

 }
else
{
  //echo "lol";
  header('location:connexion.php');
} 
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
  $getid=intval($_GET['id']);
  $requser= $bdd -> prepare('SELECT * FROM membres WHERE id= ?');
  $requser->execute(array($getid));
  $userinfo=$requser->fetch();
}
function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
         }
$CAT = test_input($_POST["categorie"]);
$TYPE= test_input($_POST["typeannonce"]);
$WILA= test_input($_POST["wilaya"]);
$fk_membres_id=$_SESSION['id'];
 if(isset($_POST['revenirprofil']))
 {
  header("Location: profil.php?id=".$_SESSION['id']);
 }
if(isset($_POST['article_titre']) AND isset($_POST['article_description']) AND isset($_POST['categorie']) AND isset($_POST['wilaya']) AND isset($_POST['typeannonce']) )
  {
     $article_titre=htmlspecialchars($_POST['article_titre']);
     $article_description=htmlspecialchars($_POST['article_description']);
     ///insertion dans la BDD /////
     $ins=$bdd->prepare('INSERT into articles (titre_article, description,date_publication,catégorie,type_article,wilaya,fk_membres_id) VALUES(?,?, NOW(),?,?,?,?)' );
     $ins->execute(array($article_titre,$article_description,$CAT,$TYPE,$WILA,$fk_membres_id));
     //header("Location: profil.php?id=".$_SESSION['id']);
  }
  else
  {
    $erreurAE = "veuillez remplir tous les champs du formulaire d'ajout";
  }
?>
<!DOCTYPE html>
<html>
<head>
  <title>Ajouter une annonce</title>
  <meta charset="utf-8">
</head>
<body>

  <h3>Bonjour <?php echo  $_SESSION['pseudo'] ?> ajoutez une annonce TROKI par ici : </h3>
  <h3>Bonjour <?php echo  $_SESSION['id'] ?> ajoutez une annonce TROKI par ici : </h3>
  <h3>Ajoutez une annonce <?php echo  $_SESSION['email']?></h3>
  <a href="editionprofil.php"> éditer mon profil</a> 
             <a href="modifiermdp.php">modifier mon mot de passe</a>
             <a href="profil.php">mon profil</a>
             <a href="deconnexion.php"> se déconnecter</a>
    
    <div align="center">
  <form method="POST">
     <label>titre de votre annonce</label>
    <input type="text" placeholder="titre de votre annonce" name="article_titre" /> <br/>
     <label>description de votre annonce</label>
    <textarea name = "article_description" rows = "5" cols = "40" placeholder="décrivez votre annonce en insistant sur les mots clés pour attirer le plus de visiteurs possible"> </textarea> <br/>
    <label>veuillez seletionner la catégorie de votre article</label>
    
                   <input type="radio" name="categorie" value="Livres">Livres
                   <input type="radio" name="categorie" value="Sport">Sports en tout genre
                    <br/> <br/>
                    <label>veuillez seletionner la catégorie de votre article</label>
                   <input type="radio" name="wilaya" value="25">Constantine
                   <input type="radio" name="wilaya" value="31">Oran
                   
                    <br/> <br/>
               <td>Que souhaitez-vous faire de votre objet ?:</td> <br/>
               <td>
                  <input type = "radio" name = "typeannonce" value = "vente">vendre seulement
                  <input type = "radio" name = "typeannonce" value = "échange">troquer seulement
                  <input type = "radio" name = "typeannonce" value = "indécis">Je suis indécis 
               </td>
               <br/>
               <input type="submit" value="envoyer l'article" >

                                         <?php 
                          if (isset($erreur))
                          {
                            echo $erreur;
                          }
                          ?> <br/>
       
                          <?php 
                          if (isset($erreur))
                          {
                            echo $erreur;
                          }
                          ?>
<button name="revenirprofil">revenir au profil</button>


  </form>
</body>
</html>

嗯,页面显示三个错误:

Notice: Undefined index: categorie in C:\wamp\www\projet3\formulaireajout.php on line 44 Notice: Undefined index: typeannonce in C:\wamp\www\projet3\formulaireajout.php on line 45 Notice: Undefined index: wilaya in C:\wamp\www\projet3\formulaireajout.php on line 46

但令人惊讶的是,代码仍然有效,并且 3 个通知在完成表单并将其发送到数据库后消失了。除了神秘的 3 个不是真正错误的错误外,一切正常

我的第二个问题可能看起来像是 SQL 查询中的输入错误,但仍然无法找到问题所在。

我正在尝试用以前的表格更新发送到数据库的信息。

这是 SQL :

$update=$bdd->prepare('UPDATE articles SET titre_article= ?, description=?,catégorie=?,type_article=?,wilaya=?,fk_membres_id=? WHERE id = ?' );
     $update->execute(array($article_titre,$article_description,$CAT,$TYPE,$WILA,$fk_membres_id,$fk_membres_id));
      die('Edit successful');

我得到了 'edit successful',但我的数据库中仍未进行任何更改。您通常会期望将更改应用于所需的行,但似乎没有任何变化

感谢您的阅读。 (希望这不是我在查询中遗漏的东西)

这是因为无论您是否提交表单,您的 php 代码都会在页面加载后立即执行。在您未提交表单之前,$_POST 全局变量 无法访问类别、typeannoance 和 wilaya。

当您提交它时,$_POST 全局变量 可以访问这些值,这就是那些通知消失的原因。

首先尝试使用 isset() 函数检查它们是否存在,这应该可以解决您的问题