Почему моя кнопка отправки не отправляется в mySQL? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть php-форма, я назову ее «php1», которая использует ajax для заполнения текстовых полей ввода из базы данных mySQL. для этого он использует дополнительную страницу, которую я назову "php2". На php2 есть кнопка "submit", используемая для отправки любых изменений в базу данных mySQL. Каждый аспект работает прекрасно, за исключением отправки, если я сам не проверил php2, а затем отправил в базу данных. Что я делаю не так?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
    function myBlur(str){
        if (str == "") {
        document.getElementById("demo").innerHTML = "You Must Enter a Device Name! <br>";
            $("#demo").css("background-color","red");
            $("#Name").css("background-color","red");
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("form1").innerHTML = this.responseText;
}
        };
        xmlhttp.open("GET","php2.php?q="+str,true);
        xmlhttp.send();
    }
}
    </script>

Это для вызова второй страницы.

        <fieldset><legend>Input</legend>
                  <div width="100%" id="form1">
        <div id="demo"><br></div><br>
        <form method="post" action="php1.php">
          Asset Number: <input type="text" required="required" id="Name" name="Name" autocomplete="off" autofocus="true" value="<?php echo $Name ?>" onChange="myBlur(this.value)">
          MAC Address: <input type="text" id="MAC" name="MAC" autocomplete="off" value="<?php echo $MAC ?>">
          Owner or Location: <input type="text" id="Own" name="Own" readonly="true" value="<?php echo $Own ?>">
            Type: <select name="Type" id="Type" required="required" readonly="true" value="<?php echo $Type ?>">
              <option value=""></option>
              <option value="Desktop">Desktop</option>
              <option value="Laptop">Laptop</option>
              <option value="Server">Server</option>  
              <option value="Monitor">Monitor</option>
              <option value="Printer">Printer</option>
              <option value="Phone">Phone</option>
                  </select>
        <br>
        </div>
            </fieldset>
                </form>

Это код формы из php1

    $sql = "SELECT * FROM $table WHERE Name = '$q'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            $N=$row["Name"];
            $MA=$row["MAC"];
            $Ow=$row["Own"];
            $Ty=$row["Type"];
            echo "<tr>";
            echo "<form  method='post' action='php1.php' id='UpAss'>",UpAss,"
            <br><br>
                Device Name: <input type='text' id='Name' name='Name' value=".$N." onBlur='myBlur(this.value)'>
                MAC Address: <input type='text' id='MAC' name='MAC' readonly='True' autocomplete='off' value=". $MA.">
                Owner or Location: <input type='text' id='Own' name='Own' value=". $Ow.">
                Type: <select id='Type'>
                    <option value='".$Ty."'>". $Ty."</option>
                    <option value='Desktop'>Desktop</option>
                    <option value='Laptop'>Laptop</option>
                    <option value='Server'>Server</option>  
                    <option value='Monitor'>Monitor</option>
                    <option value='Printer'>Printer</option>
                    <option value='Phone'>Phone</option>
                    <option value='iPhone'>iPhone</option>
                </select>
            echo "<input type='submit' id='Usubmit' value='Update Asset' form='UpAss' onClick='myUpdate()'></input></form>";
        }
function myUpdate()
    {    
// Create connection
$connU = new MySQLi($db_host, $db_user, $db_pass, $db_name, $db_port);
// Check connection
if ($connU->connect_error) {
    die("Connection failed: " . $connU->connect_error);
}
  $Name = ($_POST["Name"]);
  $MAC = ($_POST["MAC"]);
  $Own = ($_POST["Own"]);
  $Model = ($_POST["Model"]);
  $OS = ($_POST["OS"]);
  $Type = ($_POST["Type"]);
$sqlU = "REPLACE INTO SET $table SET MAC='$MAC', Own='$Own', Type='$Type' WHERE Name=$Name;";
if ($connU->query($sqlU) === TRUE) {
            echo "PPC-".$Name." Has Been Updated!";
} else {
    echo "Error: " . $sqlU . "<br>" . $connU->error;
}
$connU->close();
    }
    if(isset($_POST['Usubmit']))
    {
        myUpdate();
    }
?>

И это код для загрузки формы из php2 в php1. Я уверен, что это что-то простое, что мне не хватает, и буду признателен за любую помощь. Весь этот код прекрасно работает, но представьте. * (Я специально удалил информацию БД из этого кода.)

1 Ответ

0 голосов
/ 05 октября 2019

1.) Для публикации (вставка, обновление и удаление с помощью ajax)

Это поможет вам начать работу с помощью ajax jquery. вы можете видеть комментарии к коду

Вы также можете видеть, что для параметра формы установлено значение id="add_content", которое указывается в вызове jquery ajax

<form method="post" id="add_content">

, которое вы также можете видеть в телеhtml div, который показывает загрузчик изображений, когда кнопка нажата, и когда отображается результат из бэкэнда, следовательно,

см. пример на этом post.html

<html><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script 
  src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 
  type="text/javascript" charset="utf-8"></script>


<script>

$(document).ready(function(){
$('#add_content').on('submit', function(e){
e.preventDefault();
alert('ok');

// display a loading image and message
$('#loader').fadeIn(400).html('<img src="loader.gif" align="absmiddle">&nbsp;<span class="loading">Please Wait.. submiting form..</span>');

        $.ajax({

            type:'POST',
            url:'post.php',
            data:$(this).serialize(),
                        crossDomain: true,
            cache:false,
            success:function(msg){
// hide loader to display result
$('#loader').hide();
                $('#showposts').fadeIn('slow').prepend(msg);

            }

        });


});
});


</script>
  </head>
    <body>

    <div id="loader"> </div>
    <div id="showposts"> </div>


<form method="post" id="add_content">
          Asset Number: <input type="text" required="required" id="Name" name="Name" autocomplete="off" autofocus="true" value="100" onChange="myBlur(this.value)">
          MAC Address: <input type="text" id="MAC" name="MAC" autocomplete="off" value="1001">
          Owner or Location: <input type="text" id="Own" name="Own" readonly="true" value="nancy read only">
            Type: <select name="Type" id="Type" required="required" readonly="true" value="nancy type">
              <option value=""></option>
              <option value="Desktop">Desktop</option>
              <option value="Laptop">Laptop</option>
              <option value="Server">Server</option>  
              <option value="Monitor">Monitor</option>
              <option value="Printer">Printer</option>
              <option value="Phone">Phone</option>
                  </select>
        <br>
        </div>
            </fieldset>
<input type="submit" name="add" id="add"  value="Add" />

                </form>

</body>

пример post.php

<?php

// use strip_tags to avoid html injection that can also leads to xss attck
// sample with assets number

$asset_number= strip_tags($_POST['Name']);
$MAC= $_POST['MAC'];
$Own= $_POST['Own'];
$Type= $_POST['Type'];

// you can check for emptiness eg.

if($asset_number ==''){

echo "asset number is empty";
exit();
}else{

echo "success. my assests no is: $asset_number";
}




?>

sample 2.

Если вы хотите получать записи только с параметрами отправки или без, вы можете попробовать

Не забудьте передать библиотеку jquery (jquery.min.js) , если вы вызываете ее с другой страницы

<script>

$(document).ready(function(){

// set variable payload for formality. though you can pass it to backend as a variable  
var payload= 'Am Nancy Mooree';
var datasend = "payload="+ payload;
        $('#loader1').fadeIn(400).html('<img src="loader.gif" align="absmiddle">&nbsp;<span class="loading">Please Wait.. submiting form..</span>');

        $.ajax({

            type:'POST',
            url:'showresult.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){
            $('#loader1').hide();   

                $('#listposts').fadeIn('slow').prepend(msg);

            }


        });


});






</script>

<div id="loader1"></div>
<div id="listposts"></div>

showresult.php

<?php

// assuming you are sending a post or get variables to query database
$payload= strip_tags($_POST['payload']);

// query your database to display result to ajax.

echo $result ="Am from database where payload is: $payload";




?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...