【问题标题】:PHP Submit two form actions via one form to SQL/FTP serverPHP 通过一个表单向 SQL/FTP 服务器提交两个表单操作
【发布时间】:2014-02-03 19:12:30
【问题描述】:

需要您的帮助和建议。我有一个将数据提交到 MySQL 数据库和将图像提交到数据库 + Sql 的表单。我面临的问题是我可以使用方法成功提交数据但无法提交图像,因为它需要<form method="post" enctype="multipart/form-data" action="myFile.php">。图像也是如此。我可以成功地将图像提交到 ftp,但是使用 <form method="post" enctype="multipart/form-data" action="myFile.php"> 时数据不会发布。

我已经尝试了书中所有可能的方法,并研究了很多网站。我尝试过使用 Ajax、Jquery(两个表单、两个操作和一个提交按钮)来解决这个问题。请指出正确的方向。

我的代码:Form.php(我目前最终制作了两个表单):

<form method="post">
    <input name="haz1" type="text" value="<?php echo $haz1; ?>">
    <input name="haz2" type="text" value="<?php echo $haz2; ?>">
    <input name="submit" type="submit" id="submit" value="SAVE FORM">
    </form>

    <form method="post" enctype="multipart/form-data" action="myFile.php">
    <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    <input name="haz_img1" type="file" id="img" />
    <br>
    <input name="submit" type="submit" id="submit" value="SAVE FORM">
</form>

我的文件.php

<?php

    require("../db.php");
    $id =$_REQUEST['id'];

    $result = mysql_query("SELECT * FROM haz3 WHERE id  = '$id'");
    $test = mysql_fetch_array($result);

    if(!$result)
    {
        die("Error: Data not found..");
    }

    $haz_img1 = $test['haz_img1'];
    $haz1 = $test['haz1'];
    $haz2 = $test['haz2'];

    if(isset($_POST['submit']))
    {
        $haz_img1_save = $_POST['haz_img1'];
        $haz1_save = $_POST['haz1'];
        $haz2_save = $_POST['haz2'];

        $remote = "hazard-access/";
        $target1 = $remote . basename( $_FILES['haz_img1']['name']);
        $haz_img1 = ($_FILES['haz_img1']['name']);
        move_uploaded_file( $_FILES['haz_img1']['tmp_name'], $target1 );

        mysql_query("UPDATE haz3 SET haz_img1 = '$haz_img1_save',haz1 ='$haz1_save',haz2 ='$haz2_save' WHERE id = '$id'")
        or die(mysql_error()); 
        echo "";
    }

    mysql_close($conn);
?>

我正在尝试将数据和文件一起提交。我不知道这是否可以通过一种或两种形式实现,或者我是否应该通过 ajax 进行异步。

我试过这种方法:

function sendData()
{
    var formData = new FormData(document.getElementById('form1'));

    $.ajax({
        url: 'h1_temp.php',  //Server script to process data
        type: 'POST',  //POST or GET
        xhr: function()
        {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            return myXhr;
        },
        data: formData,  //form data
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
}

【问题讨论】:

    标签: php jquery ajax forms


    【解决方案1】:

    为什么不将所有数据只发送到一个脚本?

    <form method="post" enctype="multipart/form-data">
        <input name="haz1" type="text" value="<?php echo $haz1; ?>" />
        <input name="haz2" type="text" value="<?php echo $haz2; ?>" />
    
        <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
        <input name="haz_img1" type="file" id="img" />
        <br>
        <input name="submit" type="submit" id="submit" value="SAVE FORM">
    </form>
    

    您不仅仅是将图像保存在form.php 中(也许使用 myFile.php 脚本)。

    【讨论】:

    • 我也有同样的问题。由于提交按钮很常见,因此表单操作相互冲突。
    • “动作”在哪里冲突?我认为您的示例代码缺少某些内容(例如,我没有看到必要的“id”请求参数)。
    • 除了我的代码中的请求ID之外,还有其他方法吗?我正在尝试将所有数据发布到数据库中的特定 ID。
    • 让我简化一下我的问题。我正在尝试使用表单来更新数据库中特定 id 的数据和图像。现在我只能做一个,不能同时做。我认为这是我请求 id 的方式..
    • 我仍然看不到您将 ID 从表单发送到 PHP 脚本的位置。你有什么错误吗? print_r($_POST) 对您的请求的输出是什么?
    猜你喜欢
    • 2018-03-09
    • 2013-03-17
    • 2017-01-21
    • 2014-05-14
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多