PHP Отправить два действия формы через одну форму на сервер SQL/FTP

Нужна ваша помощь и предложения, пожалуйста. У меня есть форма, которая отправляет данные в базу данных 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
    });
}

person DodgeThat    schedule 03.02.2014    source источник


Ответы (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).

person 2ndkauboy    schedule 03.02.2014
comment
у меня такая же проблема т.к. Действия формы конфликтуют друг с другом, потому что кнопка отправки является общей. - person DodgeThat; 03.02.2014
comment
Где действия противоречат друг другу? Я думаю, что в вашем примере кода что-то пропущено (например, я не вижу необходимого параметра запроса идентификатора). - person 2ndkauboy; 04.02.2014
comment
Есть ли другой способ, кроме того, что в моем коде, для запроса идентификатора. Я пытаюсь опубликовать все данные с конкретным идентификатором в базе данных. - person DodgeThat; 04.02.2014
comment
Позвольте мне упростить мой вопрос. Я пытаюсь использовать форму для обновления данных и изображений определенного идентификатора в базе данных. Прямо сейчас я могу сделать только один из каждого, а не оба вместе. Я думаю, что это то, как я запрашиваю идентификатор .. - person DodgeThat; 04.02.2014
comment
Я до сих пор не вижу, куда вы отправляете идентификатор из формы в PHP-скрипт. Вы получили какую-то ошибку? Каков результат print_r($_POST) для вашего запроса? - person 2ndkauboy; 04.02.2014