1

I have a table which fetches data from a server and can be edited too. When I update a few data fields, it updates perfectly, but if I try to update lots of data fields together then most of the fields fails to update.

I think SQL is a lot slower than PHP and PHP is not waiting for the SQL query to finish which causes code to assume it didn't work and hence shows an error. I also tried sleep(), but even after sleep(2); it still misses some values if I make lots of changes. This is my jQuery code:

$(document).ready(function(){
    $("#edit").click(function(){
        $("td").attr('contenteditable', 'true');
    });
    var old_message;
    $("td").click(function(){
        old_message = $(this).text();
    });

    $("td").blur(function(){
        var new_message = $(this).text();
        if(old_message!=new_message)
        {
            $(this).addClass("changed");
            old_message = null;
            new_message = null;
        }
    });

    $("#submit").click(function(){
        $(".changed").each(function(){
            var row_num = $(this).siblings().eq(0).text();
            var col_name = $(this).attr("id");
            var value = $(this).text();
            var current = $(this);
            $.post("../php/update_table.php",
                {
                    id:row_num,
                    cn:col_name,
                    data:value
                },
                function(response,status){
                    if(response=="updated")
                    {
                        $(current).removeClass("changed");
                    }
                    else
                    {
                        alert("Failed");
                    }
                });
        });
        location.reload(true);
    });
});

This is my update.php:

<?php
    if(isset($_POST['id']) && isset($_POST['cn']) && isset($_POST['data']))
    {
        $id = $_POST['id'];
        $col_name = $_POST['cn'];
        $data = $_POST['data'];
        include "mysql_login.php";
        $mysql_database = "bus_database";
        $connect = mysqli_connect($host, $mysql_user, $mysql_pass, $mysql_database) or die("Couldn't Connect To The Database");
    $time = false;
    if($col_name=='a1_a1t' || $col_name=='a2_a2t' || $col_name=='d1_d1t' || $col_name=='d2_d2t')
    {
        $t_data = substr($data,0,-2);
        $tz_data = substr($data, 9);
        $t = substr($col_name,0, 2);
        $tz = substr($col_name, 3);
        $time = true;
    }
    if($time)
    {
        if($t_data == '' || $tz_data == '')
        {
            $t_data = "NULL";
            $tz_data = "NULL";
            $result = mysqli_query($connect, "UPDATE buses SET $t=$t_data, $tz=$tz_data WHERE id='$id'");
        }
        else
        {
            $result = mysqli_query($connect, "UPDATE buses SET $t='$t_data', $tz='$tz_data' WHERE id='$id'");
        }

        if($result)
        {
            echo("updated");
        }
        else
        {
            echo("failed");
        }
    }
    else if($col_name == 'route' || $col_name == 'bus_num')
    {
        $result = mysqli_query($connect, "UPDATE buses SET $col_name='$data' WHERE id='$id'");
        if($result)
        {
            echo("updated");
        }
        else
        {
            echo("failed");
        }
    }
    mysqli_close($connect);
    }
    else
    {
        echo("Failed");
    }
?>
7

1 Answer 1

1

I was using version 5 of XAAMP which caused the problem. Version 7 fixed everything.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.