Home  >  Q&A  >  body text

How do I apply this save_percentage function to my code?

I'm currently making a project about a scoring system and I don't know how to handle this at the moment because I'm still learning. I got this part of the code from the internet, not my own.

$('#percentage-form').submit(function(e){
            e.preventDefault();
            $('.pop_msg').remove()
            var _this = $(this)
            var total = $('#total').text()
                total = total.replace(/\%/gi,'')
                console.log(total)
            if(parseFloat(total) !== 100)
            {
                alert("Total Percentage must be 100%");
                return false;
            }
            var _el = $('<div>')
                _el.addClass('pop_msg')
            $('#uni_modal button').attr('disabled',true)
            $('#uni_modal button[type="submit"]').text('submitting form...')
            $.ajax({
                url:'./Actions.php?a=save_percentage',
                method:'POST',
                data:$(this).serialize(),
                dataType:'JSON',
                error:err=>{
                    console.log(err)
                    _el.addClass('alert alert-danger')
                    _el.text("An error occurred.")
                    _this.prepend(_el)
                    _el.show('slow')
                     $('#uni_modal button').attr('disabled',false)
                     $('#uni_modal button[type="submit"]').text('Save')
                },
                success:function(resp){
                    if(resp.status == 'success'){
                        _el.addClass('alert alert-success')
                        $('#uni_modal').on('hide.bs.modal',function(){
                            location.reload()
                        })
                    }else{
                        _el.addClass('alert alert-danger')
                    }
                    _el.text(resp.msg)

                    _el.hide()
                    _this.prepend(_el)
                    _el.show('slow')
                     $('#uni_modal button').attr('disabled',false)
                     $('#uni_modal button[type="submit"]').text('Save')
                }
            })
        })

I think the function save_percentage is suitable for sqlite3 and not what I'm using. I want this code to work with my code but I don't know how. I'm using MySql and running the server on XAMPP. This is the code for Actions.php

<?php 

Class Actions{
    function save_percentage(){
        extract($_POST);
        $data = "";
        foreach($component_id as $k => $v){
            if(!empty($data)) $data .= ", ";
            $data .= "('$id','{$v}','{$percentage[$k]}')";
        }
        if(!empty($data))
        $this->query("DELETE FROM `component_subject_percentage` where `subject_id` = '{$id}'");
        $sql = "INSERT INTO `component_subject_percentage` (`subject_id`,`component_id`,`percentage`)VALUES {$data}";
        $insert = $this->query($sql);
        if($insert){
            $resp['status'] ='success';
            $resp['msg'] = "Data successfully saved";
        }else{
            $resp['status'] ='failed';
            $resp['msg'] = "Data fails to save. Error: ". $this->lastErrorMsg();
            $resp['sql'] = $sql;
        }
        return json_encode($resp);
    }
}
$a = isset($_GET['a']) ?$_GET['a'] : '';
$action = new Actions();
switch($a){

    case 'save_percentage':
        echo $action->save_percentage();
    break;
    default:
    // default action here
    break;
}

My DBConnection.PHP:

<?php
$con=mysqli_connect("localhost", "root", "", "resultgrading");
if(mysqli_connect_errno()){
    echo "Connection Fail".mysqli_connect_error(); 
}

P粉391955763P粉391955763377 days ago472

reply all(1)I'll reply

  • P粉182218860

    P粉1822188602023-09-12 13:36:10

    Ok, I can fix my code with this:

    <?php 
    
    Class Actions extends mysqli{
        public $sql;
        function __construct(){
            $this->sql = new mysqli("localhost", "root", "", "resultgrading");
        }
        function save_percentage(){
            extract($_POST);
            $data = "";
            foreach($component_id as $k => $v){
                if(!empty($data)) $data .= ", ";
                $data .= "('$id','{$v}','{$percentage[$k]}')";
            }
            if(!empty($data))
            $this->sql->query("DELETE FROM `component_subject_percentage` where `subject_id` = '{$id}'");
            $mb = "INSERT INTO `component_subject_percentage` (`subject_id`,`component_id`,`percentage`)VALUES {$data}";
            $insert = $this->sql->query($mb);
            if($insert){
                $resp['status'] ='success';
                $resp['msg'] = "Data successfully saved";
            }else{
                $resp['status'] ='failed';
                $resp['msg'] = "Data fails to save. Error: ". $this->sql->lastErrorMsg();
                $resp['sql'] = $sql;
            }
            return json_encode($resp);
        }
    }
    $a = isset($_GET['a']) ?$_GET['a'] : '';
    $action = new Actions();
    switch($a){
    
        case 'save_percentage':
            echo $action->save_percentage();
        break;
        default:
        // default action here
        break;
    }

    reply
    0
  • Cancelreply