Berichten verwijderen na klik [OPGELOST]

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Ronald brt

Ronald brt

28/11/2014 10:29:53
Quote Anchor link
Beste leden,


een klein vraagje over het verwijderen van een insert bij het klikken.
Nou werk alles gewoon goed mijn vraag is als ik de row laat verwijderen bij het klikken ervan dan verwijderd hij dit in het database maar in de browser blijft deze data nog bestaan.
Pas na het vernieuwen is deze verdwenene, nou wil ik dit zo maken dat als er op verwijderen wordt geklikt dat deze ook in het browser direkt verdwijnt.

Is dit mogelijk met PHP of moet ik hier gebruik maken van een AJAX call ?

Dit is de code om het berichten te laten zien of te verwijderen;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
        $message_show = $db->prepare("SELECT * FROM messages WHERE reciever=?");
        $message_show->bindParam(1, $id);
        $message_show->execute();
        echo "Achtergelaten krabbels voor $id";
        foreach($message_show as $b){
?>

<div id=message-board>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
                echo $b['id'];
                echo $b['deliver'];
                echo $b['source'];
                echo $b['message_date'];
                echo $b['message_time'];
                print_r($_POST);
                if(isset($_POST['message-delete'])){
                    $message_id = $_POST['message-del'];
                    $message_show = $db->prepare("DELETE FROM messages WHERE id=?");
                    $message_show->bindParam(1, $message_id);
                    $message_show->execute();
                }

                    
?>

</div>
<form method=POST>
<input type="hidden" name="message-del" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $b['id']; ?>
">
<button name=message-delete>Verwijder bericht</button>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        }
?>

Gewijzigd op 28/11/2014 14:55:42 door Ronald brt
 
PHP hulp

PHP hulp

22/11/2024 07:23:41
 
Kevin J

Kevin J

28/11/2014 10:50:13
Quote Anchor link
je kan sowieso als gebeurd is gewoon refresh automatisch laten sturen, anders met je met ajax gaan werken zover ik weet
gwn dit erbij zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<meta http-equiv="refresh" content="30">';
 
Koen Hollander

Koen Hollander

28/11/2014 10:56:51
Quote Anchor link
Je kan simpelweg een header invullen na de query
Header("Location: pagina_naam.ext");
 
Ronald brt

Ronald brt

28/11/2014 13:10:25
Quote Anchor link
Bedankt voor de reacties, ik wilde juist een refresh voorkomen.
Ik heb het onderhand al goed werkend nu.
Ik moest de if(isset($_POST['message-delete'])){ buiten de foreach lus zetten, nu werkt het goed.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/11/2014 13:29:31
Quote Anchor link
Lijkt mij logischer om eerst de DELETE query uit te voeren en DAARNA de SELECT query die de records uit de database haalt om de rijen op de pagina weer te geven. Want dan is er geen redirect nodig.
 
Koen Hollander

Koen Hollander

28/11/2014 13:46:34
Quote Anchor link
Frank Nietbelangrijk op 28/11/2014 13:29:31:
Lijkt mij logischer om eerst de DELETE query uit te voeren en DAARNA de SELECT query die de records uit de database haalt om de rijen op de pagina weer te geven. Want dan is er geen redirect nodig.


Frank, je idee is goed. Echter zal ik het doen met een soft_delete
Een column aanmaken met de naam "deleted" en dan ENUM('0','1') geven
 
- Ariën  -
Beheerder

- Ariën -

28/11/2014 14:20:24
Quote Anchor link
Als je zonder een refresh wilt werken, dan zul je toch moeten kijken naar AJAX. Je verwijderd dan asynchroon op de achtergrond de reactie. Het probleem is dan nog dat hij zichtbaar blijft in het overzicht.
Je kan dan met jQuery's .remove() functie het item ook uit je DOM (opbouw van HTML-elementen) verwijderen:

Enfin, kijk maar eens:
http://papermashup.com/jquery-ajax-delete/

Verder raad ik een soft-deltee, zoals Koen zegt aan:
- Bij misbruik of een verkeerde klik, kan de data nog worden teruggezet, door van de '1' een '0' te maken.
- Huidige koppelingen (zoals berichten van diegene) zoals via JOINS blijven bestaan: Stel, als je een user weggooit, dan heeft de JOIN van de berichten van hem geen voorwaarde meer, waardoor ze wel blijven bestaan, maar niet meer zichtbaar worden.
Gewijzigd op 28/11/2014 14:31:07 door - Ariën -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/11/2014 17:12:53
Quote Anchor link
Koen Hollander op 28/11/2014 13:46:34:
Frank, je idee is goed. Echter zal ik het doen met een soft_delete
Een column aanmaken met de naam "deleted" en dan ENUM('0','1') geven


Daar is helemaal niets mis mee Koen maar dan geldt hetzelfde: eerst (soft)deleten en dan een nieuwe SELECT.

Zoals Aar aangeeft kan het ook met AJAX. De gebruiker blijft dan gewoon op de pagina. echter heb je dan wel de taak om je javascript de rij uit de browser te laten verwijderen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.