我的php表单没有';t将消息添加到PhpMyAdmin
所以我已经更新了下面的代码,但仍然不起作用,我不明白为什么。。。这些消息不会出现在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
<?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是否返回任何错误消息?