Ergebnis 1 bis 4 von 4

Thema: JS zum Kampagnenlöschen im AF

  1. #1
    Erfahrener Benutzer
    Registriert seit
    26.08.2007
    Beiträge
    231

    JS zum Kampagnenlöschen im AF

    Hallo,

    ich habe gerade bei einem Sponsor auf den Kopf 100 Kampagnen löschen müssen, die entgegen den AGB des Ursprungssponsors weiter vermarktet wurden.

    Da die Übersichtsseite bei jedem löschen neu geladen wurde ( > 200 Banner, ressourcenhungrig ) wollte ich mal fragen ob jemand ein Tut oder Schnippsel hat der den
    normalen Link ( ?content=/interfacebanner/SPONSOR&blacklist=true&tan=LANGE_ZEICHENFOLGE )
    gegen einen Button tauscht, welcher eine eigens angelegte Datei aufruft ohne das eine Ausgabe erfolgt.
    Der Button kann ja via CSS nach dem Klicken ausgeblendet werden...

    JS ist so gar nicht mein Ding, gibts dabei ne Möglichkeit die Datei aufzurufen, sonst fällt mir nichts ein.

    eaxo

  2. #2
    Erfahrener Benutzer Avatar von Parl
    Registriert seit
    22.05.2008
    Beiträge
    358
    Bin leider auch kein JS Experte, aber hab dennoch eine effektive Lösung:

    Erstelle einen Ordner "ajax" im adminforce verzeichnis. Erstelle darin 2 Dateien

    1. ajax.js mit folgendem Inhalt:

    HTML-Code:
    var request = false;
    
    	function delete_campain(tan) {
    		if (window.XMLHttpRequest) {
    			request = new XMLHttpRequest(); 
    		} else if (window.ActiveXObject) {
    			try {
    				request = new ActiveXObject('Msxml2.XMLHTTP'); 
    			} catch (e) {
    				try {
    					request = new ActiveXObject('Microsoft.XMLHTTP'); 
    				} catch (e) {}
    			}
    		}
    
    		if (!request) {
    			alert("Kann keine XMLHTTP-Instanz erzeugen");
    			return false;
    		} else {
    			var url = "ajax/del_camp.php?tan="+tan+"";
    			request.open('post', url, true);
    			request.send(null);
    			request.onreadystatechange = mach_was;
    		}
    	}
    
    	function mach_was() {
    		switch (request.readyState) {
    			case 4:
    				if (request.status != 200) {
    					alert("Fehler:"+request.status);
    				} else {
    					var content = request.responseText;
    					document.getElementById("del_msg").style.display = 'block';
    					document.getElementById('del_msg').innerHTML = content;
    				}
    				break;
    			default:
    				break;
    		}
    	}
    	
    
    
    function schliessen(ziel) {
    if (!ziel) {
    document.getElementById("del_msg").style.display = 'none';
    } else {
    document.getElementById(ziel).style.display = 'none';
    }}
    2. del_camp.php mit folgendem Inhalt:

    HTML-Code:
    <?
    require_once('../../lib/functions.lib.php');
    db_connect();
    session_start();
    if ($_SESSION['admin'] != 1) exit;
    echo '<div align="right"><a href="javascript:schliessen()">X</a><br></div>';
    $tan = addslashes($_GET['tan']);
    if ($tan != '') db_query('DELETE FROM '.$db_prefix.'_gebuchte_werbung WHERE tan = "'.$tan.'" LIMIT 1');
    if (mysql_affected_rows() == 1) echo 'Kampagne '.$tan.' wurde gel&ouml;scht!';
    db_close();
    EDIT: Von den folgenden Dateien vorsichtshalber ein Backup machen!

    Danach das Script in den Header einbinden , adminforce/lib/header.php über </head> einfügen:

    HTML-Code:
    <script language="javascript" src="ajax/ajax.js"></script>
    Falls du dort schon ne ajax.js drin hast, kannste diese hier natürlich auch umbenennen.

    und der letzte Schritt:

    Die Datei öffnen, wo die eigentliche Lösch-Funktion drin ist. Ich nehm hier mal als Beispiel die adminforce/content/interfacebanner/dsn-ads.php:

    Füge im HTML Bereich, dabei darauf achten nicht zwischen <? und ?> zu schreiben, folgendes ein,

    HTML-Code:
    <div id="del_msg" style="style:display:none;position:fixed;z-index:2;width:300px;height:100px;top:40%;left:20%;border:solid 1px black;background-color:#DEDEDE;"></div>
    und zu guter letzt die Lösch Funktion an sich:

    aus:

    PHP-Code:
    <a href="?content=/interfacebanner/dsn-ads&loeschen=true&kid='.$anzeigen['kid'].'" target="_self">Löschen</a
    muss:

    PHP-Code:
    <a href="javascript:delete_campain(\''.$anzeigen['kid'].'\')">Löschen</a
    Habe das jetzt genauso bei mir eingebaut und es klappt ganz gut. Muss natürlich nix heissen, aber Versuch macht kluch.

    MFG
    YY Order!
    Meine Loseseite Meine Scripte
    For I am Costanza: Lord of the Idiots!

  3. #3
    Erfahrener Benutzer
    Registriert seit
    26.08.2007
    Beiträge
    231
    Hab gerade gesehen das die Banner dadurch ja "nur" aus der Tabelle gelöscht werden. Beim nächsten Cronlauf sind die dann doch wieder da.
    Aber als Schnippsel auf dem Weg zur Lösung nehm ich das gerne mit.


    eaxo

  4. #4
    Erfahrener Benutzer Avatar von Parl
    Registriert seit
    22.05.2008
    Beiträge
    358
    Yup, das ist beim löschen normal so.

    Kannst den Query aber auch abändern in z.B.:

    PHP-Code:
    db_query('UPDATE '.$db_prefix.'_gebuchte_werbung SET status = 2 WHERE tan = "'.$tan.'" LIMIT 1'); 
    oder ggf. durch einen Blacklist-query ersetzen, je nachdem obs das bei dir gibt.
    YY Order!
    Meine Loseseite Meine Scripte
    For I am Costanza: Lord of the Idiots!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •