Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的php表单没有';t将消息添加到PhpMyAdmin_Php_Forms - Fatal编程技术网

我的php表单没有';t将消息添加到PhpMyAdmin

我的php表单没有';t将消息添加到PhpMyAdmin,php,forms,Php,Forms,所以我已经更新了下面的代码,但仍然不起作用,我不明白为什么。。。这些消息不会出现在PhpMyAdmin中的我的数据库中,我也看不到我在表单中的一个条目为空时所输入的错误消息。。提前感谢您对我的帮助 <?php $pdo = new PDO( 'mysql:host=localhost;dbname=portfolio', 'root', '', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_WA

所以我已经更新了下面的代码,但仍然不起作用,我不明白为什么。。。这些消息不会出现在PhpMyAdmin中的我的数据库中,我也看不到我在表单中的一个条目为空时所输入的错误消息。。提前感谢您对我的帮助

<?php

$pdo = new PDO(
    'mysql:host=localhost;dbname=portfolio', 
    'root', 
    '',
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING, 
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
    )
);

$message = '';

if (!empty($_POST))
{
   //Contrôle des données :
   if (!isset($_POST['nom']) || strlen($_POST['nom']) < 3 || strlen($_POST['nom']) > 50)
   {
      $message .= '<div>Le champ "nom" doit comporter entre 3 et 20 caractères.</div>';
   }

   if (!isset($_POST['prenom']) || strlen($_POST['prenom']) < 3 || strlen($_POST['prenom']) > 50)
   {
      $message .= '<div>Le champ "prénom" doit comporter entre 2 et 20 caractères.</div>';
   }

   if (!isset($_POST['email']) || strlen($_POST['email'] > 50) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
    {
        $message .= '<div class="alert alert-danger">L\'email n\'est pas valide</div>'; 
    }

   if(!isset($_POST) || !preg_match('#^[0-9]{10}$#', $_POST['telephone']) )
    {
        $message .= '<div class="alert alert-danger">Le champ "téléphone" doit comporter 10 chiffres</div>';
    }

    if (!isset($_POST['sujet']) || strlen($_POST['sujet']) < 3 || strlen($_POST['sujet']) > 100)
    {
       $message .= '<div>Le champ "sujet" doit comporter entre 2 et 20 caractères.</div>';
    }

    if(!isset($_POST['message']) || strlen($_POST['message']) < 3 || strlen($_POST['message']) > 500 )
    {
        $message .= '<div class="alert alert-danger">Le message est trop long !</div>';
    }

    if(empty($message))
    {
        foreach ($_POST as $indice => $valeur) {
            $_POST[$indice] = htmlspecialchars($valeur, ENT_QUOTES);  
        }
        
        $resultat = $pdo->prepare("INSERT INTO message(nom, prenom, email, telephone, sujet, message) VALUES(:nom, :prenom, :email, :telephone, :sujet, :message)");
        
        $succes = $resultat->execute(array(
            ':nom' => $_POST['nom'],
            ':prenom' => $_POST['prenom'],
            ':email' => $_POST['email'],
            ':telephone' => $_POST['telephone'],
            ':sujet' => $_POST['sujet'], 
            ':message' => $_POST['message']
        ));

        if ($succes)
        {
            $message .= '<div>Le message a bien été envoyé !</div>';
        }
        else 
        {
            $message .= '<div>Une erreur est survenue...</div>';
        }
    
    }// if (empty($message))

}//if (!empty($_POST))

<form action="" method="post" class="container form-container">
    <div class="row justify-content-center">
        <input id="nom" name="nom" class="form-control" type="text" value="<?= $_POST['nom'] ?? '';?>" placeholder="Nom">
        <input id="prenom" name="prenom" class="form-control" type="text" value="<?= $_POST['prenom'] ?? '';?>" placeholder="Prénom">
        <input id="email" name= "email" class="form-control" type="text" value="<?= $_POST['email'] ?? '';?>"placeholder="Email">
        <input id="telephone" name="telephone" class="form-control" type="text" value="<?= $_POST['telephone'] ?? '';?>"placeholder="Téléphone">
        <input id="sujet" name="sujet" class="form-control" type="text" value="<?= $_POST['sujet'] ?? '';?>"placeholder="Sujet">
        <textarea id="message"  name="message" class="form-control" cols="30" rows="10" value=""placeholder="Votre message"><?= $_POST['message'] ?? '';?></textarea>
        <input class="btn btn-primary" type="submit" value="Envoyer">
    </div>
</form>


表单中缺少name属性-因此没有任何内容会影响poset

应该是:

**更新日期:4.1.2020 19:03 CET 文本区错了,sujet vs subject**

<form action="" method="post" class="container form-container">
<div class="row justify-content-center">
    <input id="nom" name="nom" class="form-control" type="text" value="<?= $_POST['nom'] ?? '';?>" placeholder="Nom">
    <input id="prenom" name="prenom" class="form-control" type="text" value="<?= $_POST['prenom'] ?? '';?>" placeholder="Prénom">
    <input id="email" name= "email" class="form-control" type="text" value="<?= $_POST['email'] ?? '';?>"placeholder="Email">
    <input id="telephone" name="telephone" class="form-control" type="text" value="<?= $_POST['telephone'] ?? '';?>"placeholder="Téléphone">   
    <input id="sujet" name="sujet" class="form-control" type="text" value="<?= $_POST['sujet'] ?? '';?>"placeholder="Sujet">     
    <textarea id="message"  name="message" class="form-control" cols="30" rows="10" value=""placeholder="Votre message"><?= $_POST['message'] ?? '';?></textarea>
    <input class="btn btn-primary" type="submit" value="Envoyer">
</div>

此外,这是错误的

先设置一个变量,然后再询问其内容不是很有用;-) 此外,此变量不在其他任何地方设置

 $succes = ''; //   delete this line and set the variable above in the script 
     if ($succes) 
     {
     $message .= '<div>Le message a bien été envoyé !</div>';
    }
    else 
  {
  $message .= '<div>Une erreur est survenue...</div>';
 }
$succes='';//删除此行并在脚本中设置上面的变量
如果($成功)
{
$message.='Le message a bienété特使!';
}
其他的
{
$message.='Une ERRUR est SURVINE…';
}
应该如此 必须为“成功”指定一个值-例如,如果要检查插入:

    $succes= $resultat->execute(array(
        ':nom' => $_POST['nom'],
        ':prenom' => $_POST['prenom'],
        ':email' => $_POST['email'],
        ':telephone' => $_POST['telephone'],
        ':sujet' => $_POST['sujet'], 
        ':message' => $_POST['message']
    ));



    //$succes = '';   // NO!  
    //do not  just **write $var='';** when you get a variable is undefined error
    if ($succes) 
    {
        $message .= '<div>Le message a bien été envoyé !</div>';
    }
    else 
    {
        $message .= '<div>Une erreur est survenue...</div>';
    }
$succes=$resultat->execute(数组)(
“:nom'=>$\u POST['nom'],
“:prenom'=>$\u POST['prenom'],
“:email'=>$\u POST['email'],
“:telephone'=>$\u POST['telephone'],
“:sujet'=>$\u POST['sujet'],
':message'=>$\u POST['message']
));
//$succes=“”;//不
//不要只是**写$var='';**当你得到一个变量是未定义的错误
如果($成功)
{
$message.='Le message a bienété特使!';
}
其他的
{
$message.='Une ERRUR est SURVINE…';
}
我还认为最后一个if条件是错误的,应该是这样的:
不能为空且大于500个字符;-)在第一种情况下,['message']丢失了

if(empty($_POST['message']) || strlen($_POST['message']) < 3 || strlen($_POST['message']) > 500 )
    {
        $message .= '<div class="alert alert-danger">Le message est trop long !</div>';
    }
if(空($_POST['message'])| strlen($_POST['message'])<3 | | strlen($_POST['message'])>500)
{
$message.='Le message est trop long!';
}
############################################################################### 最终更新:这里是完整的修复代码,并添加了一些调试

<?php


$pdo = new PDO(
    'mysql:host=localhost;dbname=portfolio', 
    'root', 
    '',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
    )
);

$message = '';

if (!empty($_POST))
{
    
   //Contrôle des données :
   if (!isset($_POST['nom']) || strlen($_POST['nom']) < 3 || strlen($_POST['nom']) > 50)
   {
      $message .= '<div>Le champ "nom" doit comporter entre 3 et 20 caractères.</div>';
   }

   if (!isset($_POST['prenom']) || strlen($_POST['prenom']) < 3 || strlen($_POST['prenom']) > 50)
   {
      $message .= '<div>Le champ "prénom" doit comporter entre 2 et 20 caractères.</div>';
   }

   if (!isset($_POST['email']) || strlen($_POST['email'] > 50) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
    {
        $message .= '<div class="alert alert-danger">L\'email n\'est pas valide</div>'; 
    }

   if(!isset($_POST) || !preg_match('#^[0-9]{10}$#', $_POST['telephone']) )
    {
        $message .= '<div class="alert alert-danger">Le champ "téléphone" doit comporter 10 chiffres</div>';
    }

    if (!isset($_POST['sujet']) || strlen($_POST['sujet']) < 3 || strlen($_POST['sujet']) > 100)
    {
       $message .= '<div>Le champ "sujet" doit comporter entre 2 et 20 caractères.</div>';
    }

    if(!isset($_POST['message']) || strlen($_POST['message']) < 3 || strlen($_POST['message']) > 500 )
    {
        $message .= '<div class="alert alert-danger">Le message est trop long !</div>';
    }

    
    if(empty($message))
    { //echo"<br>message empty<br>";
     
        foreach ($_POST as $indice => $valeur) {
            $_POST[$indice] = htmlspecialchars($valeur, ENT_QUOTES);  
        }
        
        $resultat = $pdo->prepare("INSERT INTO messages(nom, prenom, email, telephone, sujet, message) VALUES(:nom, :prenom, :email, :telephone, :sujet, :message)");
        
        
        if (!$resultat)
        { $message .= var_dump($resultat->errorInfo());}
     else{ $message .= "PDO prepare sucessful";}
        
     //var_dump($_POST);
              
        $succes = $resultat->execute(array(
            ':nom' => $_POST['nom'],
            ':prenom' => $_POST['prenom'],
            ':email' => $_POST['email'],
            ':telephone' => $_POST['telephone'],
            ':sujet' => $_POST['sujet'], 
            ':message' => $_POST['message']
        ));
        
        

        
     
        //changed for debug 
        if ($succes)
        {
        $message .='<div>Le message a bien été envoyé !</div>';
        $message .= "PDO execute sucessful<br>";}
        
        else 
        {
        $message .= '<div>Une erreur est survenue...</div>';
        $message .= var_dump($resultat->errorInfo()); //for debug only 
        }
        
     
    echo "MESSAGE saved!<br>". $message;
    }
    else     
    { echo "ERROR: ". $message;
    }
}


if (empty($_POST))
{
?>
<form action="" method="post" class="container form-container">
    <div class="row justify-content-center">
        <input id="nom" name="nom" class="form-control" type="text" value="<?php echo $_POST['nom'] ?? '';?>" placeholder="Nom">
        <input id="prenom" name="prenom" class="form-control" type="text" value="<?php echo $_POST['prenom'] ?? '';?>" placeholder="Prénom">
        <input id="email" name="email" class="form-control" type="text" value="<?php echo $_POST['email'] ?? '';?>"placeholder="Email">
        <input id="telephone" name="telephone" class="form-control" type="text" value="<?php echo $_POST['telephone'] ?? '';?>"placeholder="Téléphone">
        <input id="sujet" name="sujet" class="form-control" type="text" value="<?php echo $_POST['sujet'] ?? '';?>" placeholder="Sujet">
        <textarea id="message" name="message" class="form-control" cols="30" rows="10" value=""placeholder="Votre message"><?php echo $_POST['message'] ?? '';?></textarea>
        <input class="btn btn-primary" type="submit" value="Envoyer">
    </div>
</form>
<?php } ?>


如果答案帮助您,请将答案标记为“已接受”。谢谢!我忘了这个。但它仍然不起作用,我不明白……我明白为什么。;-)如果成功,你有一个条件,但是成功不是在上面任何地方设置的。我已经更改了我的答案以反映上面的评论。是的,的确^^谢谢你的帮助和耐心。你试着调试这个问题了吗?您是否检查了
$\u POST
包含的内容?MySQL是否返回任何错误消息?