Alle mails selecteren en tegelijk verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Ray Mond

Ray Mond

02/11/2020 14:10:25
Quote Anchor link
Beste mensen,

Ik heb een website waar ik heel wat mails (berichten) tegelijk wil verwijderen.

Op het moment heb ik volgende code:

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
16
17
18
19
20
21
22
23
24
25
26
27
28
$(document).ready(function(){
    
$("#selectall").change(function(){
    var status = $(this).is(":checked") ? true : false;
    $(".idx").prop("checked",status);
});
$("#hapus_semua").live("click",function(e) {
e.preventDefault();
$(".ajax").attr("disabled", "disabled");

var sList = "";
$(".idx").each(function () {
    if (this.checked)
    sList +=  $(this).val() + ",";
});


var callback = function()
{
        $.post("../controller/ajax-admin.php", { daftar: sList , "delall-catch": "yes"},
            function(data) {
                processReport (data);
            }
        );
}
confirm("Weet u zeker dat u de geselecteerde mails wilt verwijderen?",callback )

});


Echter is het zo dat wanneer ik klik op de button dat er niets gebeurd aangezien er in de ajax.php bestand nog wat mist, wat moet ik hier plaatsen om dit stukje werkend te maken?
 
PHP hulp

PHP hulp

29/03/2024 08:25:33
 
- Ariën  -
Beheerder

- Ariën -

02/11/2020 14:13:01
Quote Anchor link
De code om de mails te verwijderen ;-)
Gewijzigd op 02/11/2020 14:13:21 door - Ariën -
 
Ray Mond

Ray Mond

02/11/2020 14:14:27
Quote Anchor link
Dat heb ik door inderdaad ja.... maar die mist dus :)
 
- Ariën  -
Beheerder

- Ariën -

02/11/2020 14:19:16
Quote Anchor link
Dan zul je toch echt moeten uitzoeken wat er moet gebeuren:

- Gaat het om echte mails die je uitleest? Of zijn mails hier een synoniem voor privé-berichten?
- Hoe is het opgeslagen?
- Welke procedures moeten er uitgevoerd worden om het te kunnen wissen?

Je zult echt wat meer uitleg moeten geven, want niemand kan hier een concreet antwoord op geven.

De eerste stap is al handig, lees je POST-data eens uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_POST);
?>

En kijk in de Network-tab van je browser welke data er overgestuurd wordt.
Gewijzigd op 02/11/2020 14:21:37 door - Ariën -
 
Ray Mond

Ray Mond

02/11/2020 14:21:37
Quote Anchor link
Het zijn inderdaad echte mails, die komen in de database mail_inbox hier moeten ze uiteindelijk dus via checkboxes op id nummer verwijderd kunnen worden.

selecteer ik 2 mails dan moeten er maar 2 verwijderd worden, selecteer ik de hele lijst dan moet de hele lijst verwijderd worden.. moet klinkt trouwens raar haha.. ik wil graag :)
 
- Ariën  -
Beheerder

- Ariën -

02/11/2020 14:22:53
Quote Anchor link
Als ze uit een database verwijderd worden (welke database?), moeten ze dan ook uit de fysieke mailbox verwijderd worden? En is er een link tussen de mails in de database en de mails in de fysieke mailbox?

Wees graag nog iets concreter over de opzet van je systeem.
Gewijzigd op 02/11/2020 14:26:31 door - Ariën -
 
Ray Mond

Ray Mond

02/11/2020 14:26:29
Quote Anchor link
mail_inbox in de database is waar ze allemaal komen, er is inderdaad een link tussen de database en de mailbox, wanneer er mails binnenkomen gooit hij ze automatisch in mail_inbox in de database, zo heet de database.

Het is de bedoeling dat we mail_inbox kunnen legen (database dus) maar met de mails op de mailserver zal verder niets gebeuren
 
- Ariën  -
Beheerder

- Ariën -

02/11/2020 14:29:59
Quote Anchor link
Wat voor database? Ik neem aan MySQL?

Dan kan je prima met een foreach() aan de slag om de gekozen mails door te lopen, en vervolgens met een query zoals dit DELETE FROM mails WHERE MailID = $id de mails stuk per stuk te verwijderen.

Zorg eerst maar even dat je jouw $_POST array even uitleest. Dan weet je in ieder geval wat je gekozen hebt.
 
Ray Mond

Ray Mond

02/11/2020 14:31:40
Quote Anchor link
Gewoon MySQL inderdaad en op dit moment bestaat er wat betreft die functie nog helemaal niets in de ajax file.
 
- Ariën  -
Beheerder

- Ariën -

02/11/2020 14:32:31
Quote Anchor link
Ik zou zeggen: Ga aan de slag met de eerste gegeven stappen ;-)
 
Ray Mond

Ray Mond

05/11/2020 13:46:49
Quote Anchor link
Oke.. ik heb inmiddels wat aanpassingen gedaan en het lijkt bijna te werken....

Vorige code is compleet weg, daar is voor in de plek gekomen:

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$(document).ready(function(){
    
    $( "#target" ).submit(function( event ) {

    var action = $("#task").val();
    if(action =="delete_email"){
        event.preventDefault();
        $(".ajax").attr('disabled', 'disabled');

        var sList = "";
        $('.profile_id').each(function () {
            if (this.checked)
            sList += "'"+$(this).val().trim() + "',";
        });
        var modid = 'yes';

        var callback = function()
        {
            $.post('../controller/ajax.php', { list: sList , 'delall-catch': modid},
            function(data) {
                var re = jQuery.parseJSON(data);
                processJson (re);
            }
            );
        }
        confirm("<?php echo $trns['confirm_action']; ?>",callback )    

    }else{
        alert( "You must choose an action" );
        event.preventDefault();
    }
  
});


en dan in de ajax heb ik het volgende:

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
16
17
18
19
if(isset($_POST['delall-catch'])){
    if ($_SESSION['role'] == 'admin'  or $_SESSION['role'] == 'master') {
        $list = trim(stripcslashes($_POST['list']));
        $list = substr($list,0,-1);
        if($list == ''){
            $r =array('status' => 'error' , 'text'=>'no email selected');
            
        }else{
            $sql = "delete from mail_inbox where id in (".$list.") ";        
            if($db->query($sql)){
                $r =array('status' => 'success' , 'text'=> $db->affected_rows . ' email(s) deleted');
            }else{
                $r =array('status' => 'error' , 'text'=>'Error:'.$sql);
            }
        }
        
        debug($r,config::debug);
    }
}


Het probleem is nu als volgt: als ik mails wil verwijderen vanuit mail_inbox en dan op id dan werkt het niet.. doe ik wat selecteren en verwijden op mail_inbox en dan op mail_sender dan werkt het wel.. hij pakt puur enkel maar de mail adressen en niet de id's? Hoe kan ik dit wel zo werkend maken? Nu verwijder ik bijvoorbeeld op 1 checkbox 60 mails aangezien de afzender hetzelfde is, dit zal ik graag op id willen zodat ik 1 aanvink dat er 1 verwijderd gaat worden en bij 2 dat er 2 verwijderd gaan worden enzovoort.
 
- Ariën  -
Beheerder

- Ariën -

05/11/2020 14:00:35
Quote Anchor link
Met een foreach.
Hoe ziet je formulier eruit? Heb je al ervoor gezorgd dat alles met blokhaken ( [] ) al als een array wordt gezien?
 
Ray Mond

Ray Mond

05/11/2020 14:11:27
Quote Anchor link
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<div class="row-fluid">

<form method="get" id="target" class="form-inline">

<div class="widget-box">
                            <div class="widget-title">
                                    <span class="icon">
                                    <input type="checkbox" id="selectall"> Selecteer Alle
                                </span>
                                <h5><?php echo $trns['h5']; ?></h5>
                        

                            </div>
                            <div class="widget-content nopadding">
                                <table class="table table-bordered table-striped table-hover data-table">
                                    <thead>
                                    <tr>
                                    <th></th>
                                    <th><?php echo $trns['website']; ?></th>
                                    <th><?php echo $trns['from']; ?></th>
                                    <th><?php echo $trns['to']; ?></th>
                                    <th><a href="#" class="tip-bottom" data-original-title="Is the sender register? 1= yes, 0 = no "><?php echo $trns['registered']; ?></a></th>
                                    <th><?php echo $trns['subject']; ?></th>
                                    <th><?php echo $trns['action']; ?></th>
                                    <th><?php echo $trns['time']; ?></th>
                                    </tr>
                                    </thead>
                                    <tbody>

                                    </tbody>
                                    </table>  
                            </div>
                        </div>
                        <select id="task" name="task" class="span3">
                <option value="delete_email"><?php echo $trns['delete_selected']; ?></option>
                </select>
                
<button type="submit" class="btn"><i class="icon-envelope"></i> Go</button>
        </form>    
                </div>


Dit is de pagina..
 
- Ariën  -
Beheerder

- Ariën -

05/11/2020 14:35:17
Quote Anchor link
Is het niet praktisch als je in je overzicht een loop hebt met al berichten, voorzien van een checkbox? Want in het overzicht die je laat zien, zie ik geen enkele loop. Of is deze ennkel bedoeld voor het individueel verwijderen van een bericht?
Gewijzigd op 05/11/2020 14:37:02 door - Ariën -
 
Ray Mond

Ray Mond

05/11/2020 14:39:31
Quote Anchor link
Deze is normaal gesproken wel gereed voor het individueel verwijderen van berichten..

Daar zijn deze codes voor:

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
16
$('.del').live("click",function(e) {

e.preventDefault();
    var tr = $(this).closest('tr');
    var pg = $(this).attr("data");
    var callback = function()
    {
        $.post('../controller/ajax.php', { del: pg , 'delete-mail': 'yes'},
            function(data) {
                if (data=='success')
                 tr.remove().fadeIn("slow");
            }
        );
}
confirm("<?php echo $trns['confirm_action']; ?>",callback )        
    });


en dan in de ajax:

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
16
17
18
if (isset($_POST['delete-mail'])){

    if ($_SESSION['role'] =='admin' or $_SESSION['role'] == 'master'){

    $sql ="DELETE from mail_inbox WHERE id='".$db->escape_string($_POST['del'])."'";    
    if ($db->query($sql)){
        echo 'success';
    }else{
        echo 'failed';
    }
    
    }else{                
        echo 'failed';
        exit();
    }
    

}


Dat is dus voor het per stuk zonder checkboxes en ik zou het enorm graag met willen en zoals ik net al aangaf het lukt bijna tot zover enkel pakt hij de mail adressen bij de list in plaats van id's..

En normaal zal ik echt niet snel om hulp vragen en heb tig dingen geprobeerd alleen kom er niet meer helemaal uit
 
- Ariën  -
Beheerder

- Ariën -

05/11/2020 14:43:24
Quote Anchor link
Als je meerdere mails tegelijkertijd wilt verwijderen, dan moet je toch een overzicht hebben van alle emails, met elk een eigen checkbox?

Nu laat je hier een pagina zien met de inhoud van een individuele e-mail.
 
Ray Mond

Ray Mond

05/11/2020 14:45:35
Quote Anchor link
Hm excuses, nee die pagina is niet individueel maar die is aangeroepen door deze code:

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
16
17
18
19
20
21
22
23
24
25
if (isset($_GET['manage-mail'])){


        //Ophalen sites die je mag zien
        $toegestanesites='';
        $sql= "SELECT web_id FROM `moderator_sites` WHERE moderator_id='".$_SESSION['user_id']."'";
        $result = $db->query($sql);
        while($row =  $result->fetch_object()){
            $toegestanesites.=$row->web_id.',';
        }
        $toegestanesites.='0';
    //echo $toegestanesites;


    $config['aColumnsin'] = array( 'distinct(email_sender) as xxx', 'domain', 'email_sender', 'email_receiver', " IF(is_register = 1,'ja','nee') as is_register",'subject', 'id as view',"DATE_FORMAT(times,'%d %b %Y %k:%i') as times" );
    $config['aColumnsout'] =   array('xxx', 'domain', 'email_sender', 'email_receiver', 'is_register','subject','view','times' );
    $config['sIndexColumn'] = "id";
    $config['sTable'] = "mail_inbox a LEFT JOIN slave_sites e ON a.web_id = e.web_id WHERE e.web_id IN (".$toegestanesites.")";
    $config['searchable'] = array(0,2);
    $config['aConfig']['xxx']= '<input type="checkbox" name="ck[]" class="profile_id" value="[VAL]">';
    $config['aConfig']['view']= '<a href="../admin/email.php?id=[VAL]" title="view email" class="btn btn-mini"><i class="icon-envelope"></i></a>
    <a href="#" class="btn btn-mini del" data="[VAL]"><i class="icon-remove"></i></a>';
    $config['aConfig']['del']= '';
    create_table($config);
}
 
- Ariën  -
Beheerder

- Ariën -

05/11/2020 15:03:12
Quote Anchor link
ck[] is dus een array in je (vermoedelijke) POST-request.
Dus lees $_POST['ck'] eerst eens uit in print_r in je AJAX-response.
Gewijzigd op 05/11/2020 15:03:31 door - Ariën -
 
Ray Mond

Ray Mond

05/11/2020 15:06:35
Quote Anchor link
Ik denk zelf eigenlijk dat het in de value="[VAL]" zit.. Verander ik dat namelijk naar test dan geeft ie aan dat ie test niet kan verwijderen.. maak ik er val weer van.. dan pakt hij mail adressen maar dat moet juist ID worden
 
- Ariën  -
Beheerder

- Ariën -

05/11/2020 15:09:57
Quote Anchor link
Je zou [VAL] kunnen vervangen met str_replace in het juiste ID-nummer, maar ik heb eerder het idee dat je beter de create_table() functie moet aanpassen zodat de ID's van de mails ook meegestuurd worden.

Ook vraag ik mij af of je het wel zo complex wilt hebben om er een aparte functie voor nodig te hebben. Infeite kan het zo veel simpeler zonder die functie.
 
Ray Mond

Ray Mond

05/11/2020 15:13:02
Quote Anchor link
Dacht dat dit al simpel moest zijn haha maar valt tegen dus, hoe zou het dan alsnog simpeler kunnen inderdaad?

En wat zou ik daar moeten aanpassen trouwens voor de id's? Bij Create_table?
 

Pagina: 1 2 volgende »



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.