recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - PHP n'a pas réussi à supprimer les données. S'il vous plaît, aidez-moi.

Après avoir cliqué sur le bouton Supprimer, les données sélectionnées disparaissent de la page. Elles semblent avoir été supprimées, mais elles seront à nouveau affichées après l'actualisation des données dans la table de la base de données, les données n'ont pas été supprimées. jetez un oeil à mes données. Quel est le problème avec le code?

L'action de routage d'origine est le paramètre dans l'URL. Il s'agit de l'erreur $action de la ligne 6 dans data.php. Le message d'erreur a maintenant été modifié, mais les données ne peuvent toujours pas être supprimées de la base de données. Étoffe de laine? Comment dois-je déboguer le code en php ?

Après modification :
php :

//Créer une route. Action est le paramètre dans l'URL. Il s'agit de la ligne 6 $action dans data.php.
    $action = $_GET['action'];

    commutateur ($ action) {
        cas 'init_data_list' :
            init_data_list();
            casser;
        cas 'add_row' :
            add_row();
            casser;
        cas 'del_row' :
            del_row();
            casser;
        cas 'edit_row' :
            edit_row();
            casser;
    }

//Méthode Supprimer, comment déboguer php dans le navigateur ? Comment puis-je voir si cette méthode a été exécutée ?
    fonction del_row(){
        //test
        /*echo "ok!";*/
        
        //Recevoir les paramètres renvoyés
        $rowId = $_GET['rowId'];
        $sql = "supprimer de t_users où user_id='$rowId'" ;
        
        si(query_sql($sql)){
            écho "d'accord!";
        }autre{
            echo "La suppression a échoué !";
        }
    

Après modification :
Première page JS :

var $table = $('#table'),
    $supprimer = $('#supprimer');

$(fonction() {
    searchData();
    delData();
});

fonction delData() {
                $remove.on('clic', fonction() {
                    if(confirm("Voulez-vous continuer la suppression")) {
                        var lignes = $.map($table.bootstrapTable('getSelections'), function(row) {
                            //Renvoie le numéro d'index de la ligne sélectionnée
                            renvoyer row.user_id ;
                        });
                    }
                    
                    $.map($table.bootstrapTable('getSelections'),function(row){
                        var del_url = "./php/data.php";
                        // Supprime les données en fonction de l'ID utilisateur, car cet identifiant est le paramètre transmis au serveur
                        var rowId = row.user_id;
                        
                        //Selon les exigences de PHP, del_row doit être renvoyé pour activer la méthode de suppression.
                        /*var dataParam = {
                            action : "del_row",
                            ID de ligne : ID de ligne
                        };*/
                        
                        $.ajax({
                            tapez : "supprimer",
                            url:del_url + "?action=del_row&rowId=" + rowId,
                            Type de données : "html",
                            contentType : 'application/json;charset=utf-8',
                            succès : fonction (données) {
                                $table.bootstrapTable('supprimer',{
                                    champ : 'user_id',
                                    valeurs : lignes
                                });
                                $remove.prop('disabled', true);
                            },
                            erreur:fonction(données){
                                alert('La suppression a échoué !');
                            }
                        });
                    });
                })
            

Après modification :
Affiché dans les en-têtes du réseau, il s'affiche sous la forme : 200

URL de demande : http://localhost/muke/php/data.php?action=del_row&rowId=1
Méthode de requête : DELETE
Code d'état : 200 OK
Adresse distante :[::1]:80

Paramètres de chaîne de requête
action:del_row
ID de ligne : 1

Aperçu dans Réseau, le message d'erreur d'origine est : action dans data.php à la ligne 6

Il n'y a rien maintenant, c'est vide

Afficher la réponse dans le réseau, le message d'erreur d'origine est : action dans data.php à la ligne 6

Il n'y a rien maintenant, c'est vide

En utilisant Rest Client pour tester, le résultat est 200, mais la suppression des données renvoyées a toujours échoué ! Cela me tue vraiment. Je n'arrive pas à comprendre ce qui ne va pas et pourquoi il ne peut pas être supprimé. À en juger par les informations renvoyées, la méthode del_row() en PHP peut ne pas être exécutée, n'est-ce pas ?
< br>

Que dois-je faire ?

Exécutez l'instruction SQL dans la base de données : delete from t_users où user_id='1'. L'invite indique que la suppression a réussi, mais l'exécution a échoué sur la page. Est-ce parce que les paramètres renvoyés ne sont pas reçus ?
< /p>

某草草某草草2800 Il y a quelques jours802

répondre à tous(8)je répondrai

  • phpcn_u1582

    phpcn_u15822017-05-16 13:03:04

    Pour résumer, il y a 4 erreurs ci-dessus :

    1. Les paramètres renvoyés par delete ne peuvent être obtenus qu'en utilisant $_GET ;

    2. delete Les paramètres renvoyés doivent être placés dans l'URL, pas dans le corps ; les paramètres dans le corps sont utilisés pour la requête
    3.  ;

    4. Les instructions SQL doivent être compétentes, une mauvaise étape entraînera de mauvaises étapes ;
    5. Pour exécuter une instruction SQL dans la base de données pour vérifier si l'instruction est exécutée correctement, utilisez Rest Client pour tester si la requête URL est correcte
    6.  ;

    7. Ce qui suit est mon code correct Bien qu'il soit mal écrit, il peut être exécuté sans erreur.

    php

    <?php
        //测试php是否可以拿到数据库中的数据
        /*echo "44444";*/
        
        //做个路由 action为url中的参数
        $action = $_GET['action'];
    
        switch($action) {
            case 'init_data_list':
                init_data_list();
                break;
            case 'add_row':
                add_row();
                break;
            case 'del_row':
                del_row();
                break;
            case 'edit_row':
                edit_row();
                break;
        }
    
    //删除方法
        function del_row(){
            //测试
            /*echo "ok!";*/
            
            //接收传回的参数
            $rowId = $_GET['rowId'];
            $sql = "delete from t_users where user_id='$rowId'";
            
            if(query_sql($sql)){
                echo "ok!";
            }else{
                echo "删除失败!";
            }
        }
    ?>
    Page JS frontale :

    var $table = $('#table'),
        $remove = $('#remove');
    
        $(function() {
            searchData();
            delData();
        });
    
    function delData() {
                    $remove.on('click', function() {
                        if(confirm("是否继续删除")) {
                            var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
                                //返回选中的行的索引号
                                return row.user_id;
                            });
                        }
                        
                        $.map($table.bootstrapTable('getSelections'),function(row){
                            var del_url = "./php/data.php";
                            //根据userId删除数据,因为这个id就是 传给服务器的参数
                            var rowId = row.user_id;
                            
                            $.ajax({
                                type:"delete",
                                url:del_url + "?action=del_row&rowId=" + rowId,
                                dataType:"html",
                                contentType: 'application/json;charset=utf-8',
                                success: function(data) {
                                    $table.bootstrapTable('remove',{
                                        field: 'user_id',
                                        values: rows
                                    });
                                    $remove.prop('disabled', true);
                                },
                                error:function(data){
                                    alert('删除失败!');
                                }
                            });
                        });
                    })
                }

    Méthode publique, connectez-vous à la base de données :

    function query_sql(){
            $mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
            $sqls = func_get_args();
            foreach($sqls as $s){
                $query = $mysqli->query($s);
            }
            $mysqli->close();
            return $query;
        }

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:03:04


    Vous avez soumis la demande en utilisant la méthode delete, le backend ne peut donc pas recevoir de paramètres à l'aide de $_GET et $_POST.

    Le paramètre delete doit être placé dans l'url :

    if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
        //参数包含在请求url中
        $uri = $_SERVER['REQUEST_URI'];
    }

    répondre
    0
  • 迷茫

    迷茫2017-05-16 13:03:04

    Ça devrait être $userId = $_POST['rowId']; vrai

    "DELETE FROM `t_user` where `user_id` = '.$userId'" 

    Un peu plus

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:03:04

    Imprimez $_GET, il faudrait que les paramètres n'aient pas été passés

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:03:04

    Tu prends action放在body里了,自然$_GET就取不到action了,要用$_POST
    看你都用了DELETE方式提交了,不如改成restful...

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:03:04

    $sql = "DELETE FROM `t_user` where `user_id` = '".$userId."';";

    Y a-t-il un problème avec l'instruction sql ? Imprimez-le lorsque le programme est en cours d'exécution, copiez-le dans la base de données et exécutez le test une fois.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:03:04

    Imprimez d'abord $_GET pour voir ce qu'il y a ?

    Cet endroit est très étrange, essayez de changer le dataType en json

    La raison de l'erreur est que le paramètre d'action est introuvable

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-16 13:03:04

    Et query_sql ? Quoi utiliser ?

    répondre
    0
  • Annulerrépondre