2017-04-17 126 views
0

我想在弹出窗口中显示一个窗体,当我点击“添加”按钮时。所以我使用模式来显示PHP表单,但是当我试图将插入到表单中的数据保存到数据库中时,它不起作用。当我点击保存,一个奇怪的URL出来像这样:?将数据从模态插入到数据库中

.../pembelitkatakutest.php图像= 025pikachu_xy_anime_3.png &节省=

我不知道,但我认为URL不应该有“image = 025pikachu_xy_anime_3.png &”部分。

我的代码如下:

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">Add Tongue Twister</button><br><br><br> 

<!-- Modal --> 
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
<div class="modal-dialog"> 
<div class="modal-content"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
    <h4 class="modal-title" id="myModalLabel">Add Tongue Twister</h4> 
    </div> 
    <div class="modal-body"> 
    <form method = "POST"> 
     <div class="form-group"> 
      <label for="usr">Please Choose a Picture:</label> 
      <input type="file" name="image"> 
      <script type="text/javascript"> 
      $(document).ready(function() { 
      $(window).keydown(function(event){ 
      if(event.keyCode == 13) { 
      event.preventDefault(); 
      return false; 
      } 
      }); 
      }); 
      </script> 
     </div> 
     <div class="form-group"> 
      <label for="pwd">Please write the tongue twister:</label> 
      <input type="text" rows = "3" class="form-control"> 
     </div> 
    </div> 
    <div class="modal-footer"> 
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
    <button type="submit" class="btn btn-primary" name="save">Save changes</button> 
    <?php if(isset($_POST['save'])) 
    { 
     //target folder to keep the media 
     $target = "images/".basename($_FILES['image']['name']); 

     //get all submitted data from form 
     $image = $_FILES['image']['name']; 
     $text = $_POST['text']; 

     if(!empty($_FILES['image']['name'])) 
     { 
     $sql = "INSERT INTO pembelitkataku(image, text) VALUES ('$image','$text')"; 
     mysqli_query($db, $sql); 
     } 
     else 
     { 
     $message = "Sila pilih semua fail"; 
     echo "<script type='text/javascript'>alert('$message');</script>"; 
     } 

     move_uploaded_file($_FILES['image']['tmp_name'], $target); 
    } 
    ?> 
    </div> 
    </form> 
</div> 

我可以知道哪里出了问题在我的代码,我能做些什么来解决这个问题?

如果可能的话,我想避免使用Javascript,因为它很容易理解。

谢谢。

+0

你的代码容易受到[** SQL注入攻击**](https://en.wikipedia.org/wiki/SQL_injection)的影响。你应该使用[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https://secure.php.net/ manual/en/pdo.prepared-statements.php)准备带有绑定参数的语句,如[**这篇文章**]所述(https://stackoverflow.com/questions/60174/how-can-i-prevent-sql步喷射功能于PHP)。 –

+0

你还应该确保在插入数据库之前img上传没有出错 – OldPadawan

回答

1

使用<form method="POST" enctype="multipart/form-data">

因为默认情况下你的代码正在GET请求,但你的PHP代码要接收POST请求。你可以在这行代码中看到它:

if(isset($_POST['save'])) 
+0

我编辑了发布方法,但是表单无法捕获图像,因为如果图像没有上传到 if(! ($ _FILES ['image'] ['name'])) { $ sql =“INSERT INTO pembelitkataku(image,text)VALUES('$ image','$ text')”; mysqli_query($ db,$ sql); } else { $ message =“Sila pilih semua fail”; echo“”; } 代码行@ F1dzh。我可以知道为什么吗? –

+0

好吧,我忘记了'enctype =“multipart/form-data”'请将此添加到表单中!我更新了以前的代码! :) – F1dzh

+0

这很好@ F1dzh!非常感谢你,祝你一个愉快的一天:D –

相关问题