Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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&;jQuery表单提交问题_Php_Jquery_Sql_Forms - Fatal编程技术网

PHP&;jQuery表单提交问题

PHP&;jQuery表单提交问题,php,jquery,sql,forms,Php,Jquery,Sql,Forms,我正在创建一个网站项目,您可以在发布后编辑帖子。我用PHP、SQL和jQuery创建了一个网站,所有发布到该网站的帖子都会通过while循环(不包括在本问题内容中)输出到网站的“提要”。所有帖子在发布时(在数据库中)都会添加一个唯一的ID 我现在面临的问题是,第二种形式(后期编辑)根本没有提示 我发现我需要在字段中传递帖子的id。下面的表单仅提示用于提交帖子更改的acctual post_edit表单 echo ' <form method="post"> <butt

我正在创建一个网站项目,您可以在发布后编辑帖子。我用PHP、SQL和jQuery创建了一个网站,所有发布到该网站的帖子都会通过while循环(不包括在本问题内容中)输出到网站的“提要”。所有帖子在发布时(在数据库中)都会添加一个唯一的ID

我现在面临的问题是,第二种形式(后期编辑)根本没有提示

我发现我需要在
字段中传递帖子的id。下面的表单仅提示用于提交帖子更改的acctual post_edit表单

echo '
 <form method="post"> 
   <button type="button" class="post__editBtn">Edit post</button> 
   <input type="hidden" name="post__editHidden" value="'.$postID.'">
 </form>';
然后我有一个PHP if语句,它检查是否设置了隐藏值。如果有,那么我将回显前面隐藏的表单,并分配一个会话变量,以便稍后在执行更新查询时使用

if(isset($_POST['post__editHidden'])) {
  $_SESSION['post__editHidden'] = $_POST['post__editHidden'];

  echo'
  <form method="post" action="../../php/includes/updatePost.php" class="post__edit">
   <input type="text" name="postTitle" placeholder="Edit title" required>
   <textarea name="postMsg" maxlength="255" placeholder="Edit message" required></textarea>
   <button type="submit">Edit Post</button>
   <button class="post__edit-close">Close</button>
  </form>';
 }
if(isset($\u POST['POST\u editHidden'])){
$\u会话['post\uuuEditHidden']=$\uPost['post\uuEditHidden'];
回声'
编辑文章
接近
';
}
概括

  • 第一个表单为corret post(使用$postID)触发jQuery fadeIn效果
  • jQuery只是以第二种形式淡出(后期编辑)
  • 第二个表单(post_uuedit)接受
    post_ueditHidden
    值(正确帖子的正确ID),并将其分配给会话变量,该变量可在以后用于进行SQL更新查询,该查询在第二个表单最终提交(到updatePost.php)时运行
我相信,因为我将第一个表单按钮设置为
type=“button”
它不会提交表单,所以
isset($\u POST['POST\u editHidden']
dosen不运行。但是如果我将按钮更改为正常提交类型,那么第一个表单将被提交并重新加载它所在的页面。我可以在我的jQuery fadeIn中使用
e.preventDefault
,但我不知道这是否有效


我对PHP和SQL很陌生,所以我可能完全弄错了。无论如何,谢谢!

这与其说是一个答案,不如说是一个建议的替代方案。


会话变量的用法在其他情况下更有用,例如,我们可以混淆ID值,或者在孤立(断开连接的)导航级别中重用它

但在这种情况下,我最好只使用一个表单,并使用Ajax填充它的输入值

这个演示只更新postId'32的值……当它与获取Id并返回jSon对象的功能性动态ajax处理程序一起使用时,它应该可以工作

$('.post\u editbn')。单击(函数(){
var myform=$('.post_uedit');
var postId=$(this.attr('data-id');
myform.find(“输入[name='post\uu editHidden']”)val(postId);
$.ajax({
键入:“获取”,
数据类型:“json”,
url:“https://api.myjson.com/bins/kx5xs“,//稍后替换为php
数据:{id:postId},
成功:功能(数据){
myform.find(“输入[name='postTitle']”).val(数据[0].title);
myform.find(“textarea[name='postsg']”)val(数据[0].content);
},
错误:函数(){
警报(“某些错误…!”);
}
});
$('.post_uedit').fadeIn();
//要使demo puropose在更新表单中显示新值,请执行以下操作:
log($(“.post\u edit输入[name='post\u editHidden'])).val();
});
.post\u编辑{
显示:无;
}

发布30编辑发布
帖子32编辑帖子
职位37编辑职位
邮政储蓄
接近

表单中没有包含隐藏输入的提交按钮。所有php和初始HTML表单都位于同一页面?php_self?@Bilel两个HTML表单位于同一页面(在同一php脚本中),它们在一个while循环中输出,该循环检查DB表中的帖子,然后显示所有帖子。@Barmar是的,我在帖子中说过。如果我有一个类型为submit的按钮,那么页面只会重新加载,而第二个表单不会显示。但我不知道如何更好地构造脚本。有不同的方法来解决它…比如添加ID要使用提交方法创建表单并处理它,Thx只需更改第一个表单按钮以包含数据id=$postID,然后通过jQuery找到数据id并将其值添加到空的输入类型=“隐藏”字段。再次使用Thx!很高兴它有所帮助!我建议的是一种不同的表单处理方法。祝您好运:)
if(isset($_POST['post__editHidden'])) {
  $_SESSION['post__editHidden'] = $_POST['post__editHidden'];

  echo'
  <form method="post" action="../../php/includes/updatePost.php" class="post__edit">
   <input type="text" name="postTitle" placeholder="Edit title" required>
   <textarea name="postMsg" maxlength="255" placeholder="Edit message" required></textarea>
   <button type="submit">Edit Post</button>
   <button class="post__edit-close">Close</button>
  </form>';
 }