-2
votes

Le bouton Supprimer ne fonctionne pas par ID conserve la page rafraîchissante

J'ai essayé de faire un bouton de suppression, mais si j'utilise une case à cocher, cela fonctionne bien mais ne fonctionnerai pas sans que quelqu'un ne peut m'aider mon code est comme suit:

J'ai ajouté mon code complet pour la table où je veux supprimer un Entrée via un bouton J'espère que c'est plus utile. P>

 <?php

if (isset($_POST['rBtn'])) {
    $sql = $odb->prepare("DELETE FROM `fe` WHERE `ID` = :id");
    $sql->execute(array(':id' => $id));
    $notify = '<div class="btn btn-outline-success btn-sm" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button><i class="mdi mdi-check-all"></i>API has been deleted!</div><meta http-equiv="refresh" content="2;url=customers.php">';
}
?>

<div class="card-body">
    <form action="" method="POST" class="form-horizontal">
        <table id="bootstrap-data-table-export" class="table table-striped table-bordered">
            <thead>
            <tr>
                <th>IP</th>
                <th>Type</th>
                <th>Name</th>
                <th>Date</th>
                <th>Action</th>
            </tr>
            </thead>
            <tbody>
            <?php
            $SQLSelect = $odb->prepare("SELECT * FROM `fe` WHERE `userID` = :user ORDER BY `ID` DESC");
            $SQLSelect->execute(array(':user' => $_SESSION['ID']));
            while ($show = $SQLSelect->fetch(PDO::FETCH_ASSOC)) {
                $ipShow   = htmlspecialchars($show['ip']);
                $noteShow = htmlspecialchars($show['note']);
                $ids      = intval($show['ID']);
                $date     = htmlspecialchars(date("d-m-Y, h:i:s a", $show['date']));
                $type     = $show['type'] == 'f' ? '<button class="btn btn-success btn-sm">Friend</button>' : '<button class="btn btn-danger btn-sm">Enemy</button>';
                echo '<tr><td>' . htmlspecialchars($ipShow) . '</td><td>' . $type . '</td><td>' . htmlspecialchars($noteShow) . '</td><td>' . htmlspecialchars($date) . '</td><td><input type="submit" value="Delete" name="rBtn" class="btn btn-outline-danger btn-sm" /></td></tr>';
            }
            ?>
            </tbody>
        </table>
    </form>
</div>


13 commentaires

Définir "ne fonctionnera pas". Qu'est-ce qui échoue spécifiquement?


Je veux supprimer un élément avec un bouton à partir d'un bouton de table doit saisir chaque identifiant pour la saisie de table


.... Mais plutôt ce qui se passe?


Par exemple, si mon instruction SELECT saisie à partir de DB et que le premier élément était "Test", il aurait une touche DELETE près d'avoir besoin de saisir l'ID pour cet élément afin que je clique sur le bouton Supprimer


@Twista rien ne se passe la page juste des recharges


@Private: Dans votre tentative de supprimer l'enregistrement, vous utilisez une variable appelée $ ID . Où définissez-vous cette variable et attribuez-vous une valeur?


Si c'est votre code complet, quelque chose ne va pas. Il semble ne pas connaître la base de données


Il n'y a même pas une balise php de fermeture


Je veux dire que ceci est le code complet de SELECT TABLE, pas la page complète Ce code est le code où j'essaie d'implémenter le bouton Supprimer pour une entrée.


S'il vous plaît expliquer ce que vous essayez de faire plus de manière exhaustive


Qu'est-ce que exactement ne fonctionne pas avec le code donné? Qu'avez-vous essayé de déboguer le problème? Veuillez ajouter toutes les informations à la question elle-même, pas à la section Commentaires


Je ne reçois pas de débogage @nicohaase mon bouton est supposé supprimer l'élément individuel du tableau Chaque élément a un bouton Supprimer, mais lorsque je clique sur le bouton ne fait que rafraîchir la page Rien ne supprime.


Donc, vous n'avez rien débogué et vous ne voulez pas partager plus de détails aux personnes qui essaient de vous aider? Cela me semble étrange


3 Réponses :


-1
votes

Vous pouvez utiliser un bouton dans un formulaire par ligne, puis utiliser JavaScript pour soumettre: xxx

... xxx


8 commentaires

Veuillez ne pas utiliser onclick des gestionnaires. Il y a beaucoup de meilleures façons. En outre, expliquez pourquoi vous pensez que cela résout le problème - Envoi d'un formulaire à l'aide d'un bouton et JS n'est pas nécessaire


Si j'ai raison, cela supprimerait tous les articles non individuels corrects? Désolé si j'ai trompé mes mots.


Nicohaase: Qui a dit qu'il est autorisé ou non à utiliser onclick () pour soumettre un formulaire. Ce qui est préférable, c'est au développeur. Au fait, où est votre solution? Privé: Vous pouvez envelopper la balise de formulaire autour de vous supprimer le code et utiliser un identifiant N dans le nom du bouton ou un champ masqué, de cette façon, vous savez quel bouton a été cliqué.


Je viens d'essayer un champ caché ne semble pas vouloir travailler


@Martinnewman Je n'ai aucune idée de ce que le problème initial est, je ne peux donc pas fournir de solution à cela. Et la question de oncllick attributs vs. pure JS Solutions est couvert dans Stackoverflow.com/Questtions/12627443/JQUERY-CLICK-VS-ONCLICK


Vous ne connaissez pas la question mais vous me critiquez .. :-) Il est censé lui donner un indice facile, il peut élaborer. Je suis d'accord avec vous, il y a plusieurs façons qui semblent être «plus agréables», mais simplement parce que beaucoup de gens le préfèrent, ce n'est pas une approche obligatoire. Le développeur et celui qui répond à la question peut choisir librement ;-)


Mais pourriez-vous même expliquer pourquoi vous avez besoin de JS pour soumettre un formulaire? Que se passerait-il si vous ignorez la partie JS?


@Nicohaase que j'utilise pour préférer sur comme peut contenir HTML comme contenu et une valeur dédiée. Comme il s'agit d'un bouton Supprimer, je préférerais également JS, car il souhaiterait peut-être obtenir une boîte de dialogue de confirmation d'abord à l'étape suivante.



2
votes

C'est probablement parce qu'il n'y a pas de connexion à la base de données.

Vous devez vous connecter à la base de données avant de pouvoir faire n'importe quoi.Je ne peux voir d'où vous vous connectez au Base de données SQL.

Pour se connecter à la base de la base de données PDO, vous pouvez utiliser: xxx


6 commentaires

J'y ai déjà, j'inclus db.php dans header.php qui appelle toutes les pages.


S'il vous plaît ne soyez pas en colère mais je ne vois pas d'inclure 'db.php'


UpdateAactivité ($ ODB, $ _Session ['ID']); ?> Juste pour toi princesse


Ok.mais ce n'est pas dans le code donné


Parce que cela ne provoque pas l'erreur que je dois résoudre le problème est avec le code RBTN ne supprimant pas une entrée avec bouton clic


OK !!! Je reçois le problème. Il n'y a aucun moyen que le serveur puisse savoir quand le bouton est cliqué.



1
votes

Comme indiqué plusieurs fois dans le commentaire, vous n'avez pas envoyé de valeur pour $ ID code> au backend sur la soumission du formulaire. Il existe deux manières possibles de résoudre ce problème:

1) Envoyez-le via le bouton à l'aide de la pièce suivante dans votre modèle: P>

if (isset($_POST['rBtn'])) {
    $id = $_POST['rBtn'];
    $sql = $odb->prepare("DELETE FROM `fe` WHERE `ID` = :id");
    $sql->execute(array(':id' => $id));
    $notify = '<div class="btn btn-outline-success btn-sm" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button><i class="mdi mdi-check-all"></i>API has been deleted!</div><meta http-equiv="refresh" content="2;url=customers.php">';
}


0 commentaires