Maison > Questions et réponses > le corps du texte
Je travaille actuellement sur un projet concernant un système de notation et je ne sais pas comment aborder cela pour le moment car j'apprends encore. J'ai obtenu cette partie du code sur Internet et ce n'est pas la mienne.
$('#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') } }) })
Je pense que la fonction save_percentage convient à sqlite3 et non à ce que j'utilise. Je veux que ce code fonctionne avec mon code mais je ne sais pas comment. J'utilise MySql et j'exécute le serveur sur XAMPP. C'est le code pour 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; }
Mon DBConnection.PHP :
<?php $con=mysqli_connect("localhost", "root", "", "resultgrading"); if(mysqli_connect_errno()){ echo "Connection Fail".mysqli_connect_error(); }
P粉1822188602023-09-12 13:36:10
D'accord, je peux corriger mon code avec ceci :
<?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; }