【问题标题】:jquery form inserting with php用php插入jquery表单
【发布时间】:2015-08-31 10:15:10
【问题描述】:

请帮助找到我的代码问题的根源...当我单击请求时,页面会刷新,所有数据都消失了,但没有任何内容插入到数据库中... 这是数据库的图像和代码!我需要更改什么才能将数据与登录用户的用户名一起插入? ![数据库]http://imgur.com/t0DrlHH

@user1151316 我进行了更改,这里是删除无意义 cmets 的代码...数据没有被插入,提交后我得到一个空白屏幕...

        <?php
        //require_once 'includes/dbconnect.php';
        session_start();

         if (isset($_POST["request"])) 
         {
            //print_r($_POST);die;
        //take care of injections
        $service = mysqli_real_escape_string($link,$_POST['service']);
        $service_details  = mysqli_real_escape_string($link,$_POST['service_details']);
        $duedate  = mysqli_real_escape_string($link,$_POST['duedate']);
        $postdate  = mysqli_real_escape_string($link,$_POST['postdate']); //READ ONLY DATE POST



        // Insert data into mysql + LOGGED IN USERS USERNAME TO BE INSERTED
         $sql = "INSERT INTO serviceposts VALUES ('".$_SESSION["username"]."','".$service."', '".$service_details."', '".$duedate."', '".$postdate."')";

        $result= $link -> query($sql) or die (mysqli_error($link));

         echo "($result)";
        // if successfully insert data into database, displays message "Successful".
        if($result){
                echo "request post success!";
                 echo'<script>window.location="http://localhost/Project2/User.php#viewrequests";</script>';     
        }
        else {
            echo "Possible data input error";       

                }
        $link->close();
        }

        ?>
        <!DOCTYPE html>
        <html>
        <head>
        <script src="includes/js/modernizr.js"></script>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="jqueryAssets/jquery.mobile.icons.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/Mobi~Style~Me.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/jquery.mobile-1.4.5.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/jquery.ui.theme.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/jquery.mobile.icons-1.4.5.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/jquery.mobile.structure-1.4.5.min.css" rel="stylesheet" type="text/css">
        <link href="jqueryAssets/jquery.ui.datepicker.min.css" rel="stylesheet" type="text/css">
        <style type="text/css">
        body,td,th {
            font-family: Constantia, "Lucida Bright", "DejaVu Serif", Georgia, serif;
            color: #303;
        }
        body {
            background-image: url();
        }
        </style>
        <link href="jqueryAssets/jquery.ui.core.min.css" rel="stylesheet" type="text/css">
        <style type="text/css">
        a {
            font-weight: bolder;
        }
        </style>
        <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="jqueryAssets/jquery-ui.min.js"></script>
        <script src="jqueryAssets/jquery-2.1.1.min.js"></script>
        <script src="jqueryAssets/jquery.mobile-1.4.5.min.js"></script>
        <script src="jqueryAssets/jquery-ui-1.9.2.dialog.custom.min.js"></script>
        <script src="jqueryAssets/jquery-1.8.3.min.js" type="text/javascript"></script>
        <script src="jqueryAssets/jquery-ui-1.9.2.datepicker.custom.min.js" type="text/javascript"></script>
        <title>MyITjobs</title>
        <meta charset="utf-8">
        </head>  
        <body>  
          <div data-role="page" id="servicerequest" data-theme="c">
        <div data-role="header" data-add-back-btn="true"><h4>IT~Service Request</h4></div>
        <span align="center"><?php if (isset($_SESSION["username"]))
        {
         echo "".$_SESSION["username"]."";
        }
        ?>
        </span>
        <div data-role="content" class="ui-field-contain" align="center" data-content-theme="c">
             <form style="align-items:justify" method="post" action="" id="servicerequest">
             <input type="hidden" name="service" id="selected_service"/>
            <span>
            <select name="selectmenu" required class="ui-bar-c slidedown" id="service" data-collapsed="false" onchange="onchangeservice()">
            <option selected="selected" class="ui-selectmenu-placeholder">IT-Services</option>
            <option value="service1" id="MobileApps">Mobile Apps Development</option>
            <option value="service2" id="WebDev">Website Development</option>
            <option value="service3" id="Programming">Programming</option>
                   </select>
                   </span>
                   <br>
            <span>
            <div data-role="fieldcontain">
            <label for="service_details">IT~Service Request Details</label>
              <textarea name="service_details" cols="35" rows="6" id="service_details" placeholder="Input Request details"></textarea>
            </div>
            </span>
              <span>        
                <label for="duedate">Set Due Date:</label>
                <input type="datetime-local" required name="duedate" id="duedate" data-mini="true">
                </span> 
                 <br>   
              <span>
               <label for="datetime-local">Request Date</label>
               <DateTime id="postdate" data-mini="true">
                <?php      
              $postdate = date("Y-m-d, H:i");
                echo "$postdate";
                   ?>

               </span>  
               <input type="hidden" name="postdate" value="<?php echo $postdate; ?>"/>
               <br>
           <fieldset class="ui-grid-a">
        <div class="ui-block-a">
               <button type="submit" data-icon="check" data-iconshadow="true" data-iconpos="left" id="request" name="request">Request</button></div>
        <div class="ui-block-b">
          <button type="reset" data-icon="delete" data-iconshadow="true" data-iconpos="left">Cancel</button>
          </div>
         </fieldset>  
         <script>

             function onchangeservice()
             {
                 var service_option = $( "#service option:selected" ).text();  
                 $('#selected_service').val(service_option);
             }
                </script>
                </form>
                 </div>     
        <div data-role="footer" data-theme="c" align="center">
                  </div>
             </div> 
        </body>
        </html>

【问题讨论】:

  • 您在浏览器的控制台中查看过请求/响应吗?你检查过错误日志吗?
  • 你调用 session_start() 之后你已经在使用会话变量,并且你没有名为 request 的表单字段,所以 $_POST['request'] 永远不会被设置,跳过你所有的数据库代码。
  • 虽然这似乎与 jQuery 没有任何关系,但你为什么要包含这么多不同版本的它(和 jQuery UI)?
  • 嘿 blanchard...我是 php 和 jquery 的初学者,我正在使用 xampp,而且错误日志不是很容易访问,尤其是对于像我这样的人...另外我有一个 migrane,我只想插入数据...我尝试在 echo "($result)" 之前回显错误(如果有);线,但我什么也没得到......
  • Marc B...感谢您的指点...“请求”指的是提交按钮...

标签: php jquery-mobile mysqli insert


【解决方案1】:

执行以下步骤来解决问题:

  • 添加一个新的隐藏字段 &lt;input type="hidden" name="service" id="selected_service"/&gt;

  • 添加onchange函数以选择框为

    &lt;select name="selectmenu" required class="ui-bar-c slidedown" id="service" data-collapsed="false" onchange="onchangeservice()"&gt;

  • 将你的脚本替换成函数

    function onchangeservice() { var service_option = $( "#service option:selected" ).text(); $('#selected_service').val(service_option); }

完整代码如下所示:

   `<?php
    require_once 'includes/dbconnect.php';
    session_start();
    //require_once 'includes/dbconnect.php';

    /* if (isset($_SESSION["username"]) && !empty($_SESSION["username"])){
    echo "".strtoupper($_SESSION['username'])."(Sign out)"; }else{
    echo "Sign In";
    } */

     if (isset($_POST["request"])) 
     {
        //print_r($_POST);die;
    //take care of injections
    $service = mysqli_real_escape_string($link,$_POST['service']);
    $service_details  = mysqli_real_escape_string($link,$_POST['service_details']);
    $duedate  = mysqli_real_escape_string($link,$_POST['duedate']);
    $postdate  = mysqli_real_escape_string($link,$_POST['postdate']); //READ ONLY DATE POST



    // Insert data into mysql + LOGGED IN USERS USERNAME TO BE INSERTED
     $sql = "INSERT INTO serviceposts VALUES ('".$_SESSION["username"]."','".$service."', '".$service_details."', '".$duedate."', '".$postdate."')";

    $result= $link -> query($sql) or die (mysqli_error($link));

     echo "($result)";
    // if successfully insert data into database, displays message "Successful".
    if($result){
            echo "request post success!";
             echo'<script>window.location="http://localhost/Project2/User.php#viewrequests";</script>'; 

       // header('Location: ../User.php?success=1');

    }
    else {
        echo "Possible data input error";
    //header('Location: ../user.php?error=1');


            }
    $link->close();
    }

    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <script src="includes/js/modernizr.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="jqueryAssets/jquery.mobile.icons.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/Mobi~Style~Me.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.ui.theme.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile.icons-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile.structure-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.ui.datepicker.min.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    body,td,th {
        font-family: Constantia, "Lucida Bright", "DejaVu Serif", Georgia, serif;
        color: #303;
    }
    body {
        background-image: url();
    }
    </style>
    <link href="jqueryAssets/jquery.ui.core.min.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    a {
        font-weight: bolder;
    }
    </style>
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="jqueryAssets/jquery-ui.min.js"></script>
    <script src="jqueryAssets/jquery-2.1.1.min.js"></script>
    <script src="jqueryAssets/jquery.mobile-1.4.5.min.js"></script>
    <script src="jqueryAssets/jquery-ui-1.9.2.dialog.custom.min.js"></script>
    <script src="jqueryAssets/jquery-1.8.3.min.js" type="text/javascript"></script>
    <script src="jqueryAssets/jquery-ui-1.9.2.datepicker.custom.min.js" type="text/javascript"></script>
    <title>MyITjobs</title>
    <meta charset="utf-8">
    </head>  
    <body>  
      <div data-role="page" id="servicerequest" data-theme="c">
    <div data-role="header" data-add-back-btn="true"><h4>IT~Service Request</h4></div>
    <span align="center"><?php if (isset($_SESSION["username"]))
    {
     echo "".$_SESSION["username"]."";
    }
    ?>
    </span>
    <div data-role="content" class="ui-field-contain" align="center" data-content-theme="c">
         <form style="align-items:justify" method="post" action="" id="servicerequest">
         <input type="hidden" name="service" id="selected_service"/>
        <span>
        <select name="selectmenu" required class="ui-bar-c slidedown" id="service" data-collapsed="false" onchange="onchangeservice()">
        <option selected="selected" class="ui-selectmenu-placeholder">IT-Services</option>
        <option value="service1" id="MobileApps">Mobile Apps Development</option>
        <option value="service2" id="WebDev">Website Development</option>
        <option value="service3" id="Programming">Programming</option>
               </select>
               </span>
               <br>
        <span>
        <div data-role="fieldcontain">
        <label for="service_details">IT~Service Request Details</label>
          <textarea name="service_details" cols="35" rows="6" id="service_details" placeholder="Input Request details"></textarea>
        </div>
        </span>
          <span>        
            <label for="duedate">Set Due Date:</label>
            <input type="datetime-local" required name="duedate" id="duedate" data-mini="true">
            </span> 
             <br>   
          <span>
           <label for="datetime-local">Request Date</label>
           <DateTime id="postdate" data-mini="true">
            <?php      
          $postdate = date("Y-m-d, H:i");
            echo "$postdate";
               ?>

           </span>  
           <input type="hidden" name="postdate" value="<?php echo $postdate; ?>"/>
           <br>
       <fieldset class="ui-grid-a">
    <div class="ui-block-a">
           <button type="submit" data-icon="check" data-iconshadow="true" data-iconpos="left" id="request" name="request">Request</button></div>
    <div class="ui-block-b">
      <button type="reset" data-icon="delete" data-iconshadow="true" data-iconpos="left">Cancel</button>
      </div>
     </fieldset>  
     <script>

         function onchangeservice()
         {
             var service_option = $( "#service option:selected" ).text();  
             $('#selected_service').val(service_option);
         }


            </script>
            </form>



                 </div>     
    <div data-role="footer" data-theme="c" align="center">
              </div>
         </div> 
    </body>
    </html>`

【讨论】:

  • 数据库连接是includes/dbconnect.php 还要怎么连接?
  • 是的!它已插入所有字段!!!谢谢!除了用户名...没有被插入我认为是因为会话没有被读取...并且页面在我提交后刷新...没有任何反应但是当我签入数据库时​​服务、service_details、duedate和 postdate 被插入!顺便说一句,我删除了第一行 require_once 上的注释行,以便发布...
【解决方案2】:

您必须进行大量修复。

  • 您没有为所有输入类型添加任何名称属性,因此它们没有发布。
  • 您应该编写大量缩进和干净的代码,以便找出问题所在。
  • 不要多次包含文件。
  • 删除不需要的注释代码。

请尝试以下代码:

<?php
    require_once 'includes/dbconnect.php';

    session_start();
    //require_once 'includes/dbconnect.php';

    /* if (isset($_SESSION["username"]) && !empty($_SESSION["username"])){
    echo "".strtoupper($_SESSION['username'])."(Sign out)"; }else{
    echo "Sign In";
    } */

     if (isset($_POST["request"])) 
     {
    //take care of injections
    $service = mysqli_real_escape_string($link,$_POST['service']);
    $service_details  = mysqli_real_escape_string($link,$_POST['service_details']);
    $duedate  = mysqli_real_escape_string($link,$_POST['duedate']);
    $postdate  = mysqli_real_escape_string($link,$_POST['postdate']); //READ ONLY DATE POST



    // Insert data into mysql + LOGGED IN USERS USERNAME TO BE INSERTED
     $sql = "INSERT INTO serviceposts VALUES ('".$_SESSION["username"]."','".$service."', '".$service_details."', '".$duedate."', '".$postdate."')";

    $result= $link -> query($sql) or die (mysqli_error($link));

     echo "($result)";
    // if successfully insert data into database, displays message "Successful".
    if($result){
            echo "request post success!";
             echo'<script>window.location="http://localhost/Project2/User.php#viewrequests";</script>'; 

       // header('Location: ../User.php?success=1');

    }
    else {
        echo "Possible data input error";
    //header('Location: ../user.php?error=1');


            }
    $link->close();
    }

    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <script src="includes/js/modernizr.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="jqueryAssets/jquery.mobile.icons.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/Mobi~Style~Me.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.ui.theme.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile.icons-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.mobile.structure-1.4.5.min.css" rel="stylesheet" type="text/css">
    <link href="jqueryAssets/jquery.ui.datepicker.min.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    body,td,th {
        font-family: Constantia, "Lucida Bright", "DejaVu Serif", Georgia, serif;
        color: #303;
    }
    body {
        background-image: url();
    }
    </style>
    <link href="jqueryAssets/jquery.ui.core.min.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    a {
        font-weight: bolder;
    }
    </style>
    <script src="jqueryAssets/jquery-1.11.1.min.js"></script>
    <script src="jqueryAssets/jquery-ui.min.js"></script>
    <script src="jqueryAssets/jquery-2.1.1.min.js"></script>
    <script src="jqueryAssets/jquery.mobile-1.4.5.min.js"></script>
    <script src="jqueryAssets/jquery-ui-1.9.2.dialog.custom.min.js"></script>
    <script src="jqueryAssets/jquery-1.8.3.min.js" type="text/javascript"></script>
    <script src="jqueryAssets/jquery-ui-1.9.2.datepicker.custom.min.js" type="text/javascript"></script>
    <title>MyITjobs</title>
    <meta charset="utf-8">
    </head>  
    <body>  
      <div data-role="page" id="servicerequest" data-theme="c">
    <div data-role="header" data-add-back-btn="true"><h4>IT~Service Request</h4></div>
    <span align="center"><?php if (isset($_SESSION["username"]))
    {
     echo "".$_SESSION["username"]."";
    }
    ?>
    </span>
    <div data-role="content" class="ui-field-contain" align="center" data-content-theme="c">
         <form style="align-items:justify" method="post" action="" id="servicerequest">
        <span>
        <select name="selectmenu" required class="ui-bar-c slidedown" id="service" data-collapsed="false">
        <option selected="selected" class="ui-selectmenu-placeholder">IT-Services</option>
        <option value="service1" id="MobileApps">Mobile Apps Development</option>
        <option value="service2" id="WebDev">Website Development</option>
        <option value="service3" id="Programming">Programming</option>
               </select>
               </span>
               <br>
        <span>
        <div data-role="fieldcontain">
        <label for="service_details">IT~Service Request Details</label>
          <textarea name="service_details" cols="35" rows="6" id="service_details" placeholder="Input Request details"></textarea>
        </div>
        </span>
          <span>        
            <label for="duedate">Set Due Date:</label>
            <input type="datetime-local" required name="duedate" id="duedate" data-mini="true">
            </span> 
             <br>   
          <span>
           <label for="datetime-local">Request Date</label>
           <DateTime id="postdate" data-mini="true">
            <?php      
          $postdate = date("Y-m-d, H:i");
            echo "$postdate";
               ?>

           </span>  
           <input type="hidden" name="postdate" value="<?php echo $postdate; ?>"/>
           <br>
       <fieldset class="ui-grid-a">
    <div class="ui-block-a">
           <button type="submit" data-icon="check" data-iconshadow="true" data-iconpos="left" id="request" name="request">Request</button></div>
    <div class="ui-block-b">
      <button type="reset" data-icon="delete" data-iconshadow="true" data-iconpos="left">Cancel</button>
      </div>
     </fieldset>  
     <script>
     $( "#service option:selected" ).text();  
            </script>
            </form>               
                     </div>     
    <div data-role="footer" data-theme="c" align="center">
              </div>
         </div> 
    </body>
    </html>

【讨论】:

  • 为什么 OP 应该“试试这个”?请添加对您所做的事情以及为什么这样做的解释,不仅是为了 OP,也是为了 SO 的未来访问者。
  • @Jay :我还在代码上方添加了我的评论。请检查。
  • 感谢 user1151316 插入的数据是服务详细信息以及到期日期和发布日期...但是我选择的服务没有插入?!在我点击请求后,页面刚刚刷新......我认为它至少会告诉我成功......
  • 服务没有被插入......它是一个集合,在 jquery 中是一个选择选项,但我放在底部的 js 代码没有任何区别!哦,当会话中的用户未被识别时,如何插入用户名?这就是为什么再次开始会话被证明是冲突的!
  • 顺便说一句,这个页面是一个受保护的页面......只有登录用户才能访问它......记住你帮助我的 login.php,登录后他们会转到他们的个人资料页面并可以发布一个请求......所以如果可能的话,会话将不得不溢出到这个页面......我真的很感谢你花时间提供帮助,你真的是上帝发送@user1151316!
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2020-03-25
相关资源
最近更新 更多