# Nach confirm() eine PHP-Funktion aufrufen



## Eistee (12. Juli 2005)

Hallo,
ich arbeite grad am Admin-Bereich meines GB-Scripts.
Zu jedem Eintrag gibt es hier einen Button, um den jeweiligen Eintrag zu löschen.
Klickt man auf den Button kommt zunächst eine JS-Sicherheitsabfrage.

```
<script language="JavaScript" type="text/JavaScript">
<!--
function dialog(value) {
	var eingabe;
	check = confirm("Soll dieser Eintrag wirklich gelöscht werden?");
	if (check == true) { ... }
}
//-->
</script>
```
"value" entspricht der id  des GB-Eintrages, der gelöscht werden soll

Nun weiss ich aber nicht weiter 
Wenn "check == true" der Fall ist, soll eine PHP-Funktion in der selben Datei aufgerufen werden, die den Eintrag mit der übergebenen id löscht.
Die PHP-Funktion selbst ist keine Problem, ich weiss bloß nicht ob/wie ich sie mit JS aufrufen kann.
Ich hoffe, ihr könnt mir da ein wenig weiter helfen.
Danke!


----------



## Sven Mintel (12. Juli 2005)

Mit JS kannst du keine Funktionen aufrufen.

Da es sich um einen beschränkten Benutzerkreis handeln dürfte, könntest du, vorrausgesetzt, es werden IE, Mozilla etc., Opera8 oder Safari benutzt,  per XMLHttpRequest einen Request an das entsprechende Skript senden, welches die Funktion dann ausführt.


----------



## Eistee (12. Juli 2005)

Udn wie sähe so ein XMLHttpRequest aus?


----------



## Sven Mintel (12. Juli 2005)

http://developer.apple.com/internet/webcontent/xmlhttpreq.html


----------



## Eistee (12. Juli 2005)

sorry, aber da steig ich jetzt nicht ganz durch.
wie müsste das für mein obiges beispiel aussehen, wenn du aufzurufende php-funktion "php_delete()" heisst und der zu übergebene wert id heisst?


----------



## Sven Mintel (13. Juli 2005)

Ca so:

```
<?php
function php_delete($id)
{
 //Hier dein lösch-code.....
    
 //Ruckmeldung an Javascript
 die('Eintrag #' . $id . ' wurde entfernt');
}

if(isset($_GET['id']))
 {
  php_delete($_GET['id']);
 }
?>

<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
 lock = false;
 req  = false;
	
 if(window.XMLHttpRequest) 
  {
   try 
    {
     req = new XMLHttpRequest();
    } 
   catch(e) 
    {
     req = false;
    }
   } 
  else if(window.ActiveXObject) 
   {
    try 
     {
      req = new ActiveXObject("Msxml2.XMLHTTP");
     } 
    catch(e) 
     {
      try 
       {
        req = new ActiveXObject("Microsoft.XMLHTTP");
       } 
      catch(e) 
       {
        req = false;
       }
     }
   }
        
        
function dialog(objButton) 
{
 if(!req)
  {
   alert('dein Browser kann das nicht :o(');
   return;
  }
        
 if(lock)
  {
   alert('Warte bitte, bis die letzte Anfrage verarbeitet wurde');
   return;
  }
        
 if(confirm("Soll der Eintrag \n#" + objButton.value + "\nwirklich gelöscht werden?"))
  {
   //Die Anfrage senden
   lock = objButton;
   req.onreadystatechange = new Function('f','get_http_response()');
   req.open("GET", '<?php echo $_SERVER['PHP_SELF'];?>?id='+ objButton.value + '&amp;' + new Date().getTime(), true);
   req.send(true);
  }
}

//Antwort verarbeiten
function get_http_response()
{
 //Wenn Anfrage fertig
 if(req.readyState == 4)
  {   
   //Wenn Status OK
   if(req.status == 200)
    {
     //Antwort ausgeben
     alert(req.responseText);
                
     //Button entfernen
     lock.parentNode.parentNode.removeChild(lock.parentNode);
    }
   //Ansonsten
   else
    {
     //Statuscode ausgeben
     alert(req.statusText);
    }
   //Request beenden
   if(document.all && !window.opera)
    {
     req.abort();
    }
   lock = false;
  }
}
//-->
</script>
</head>
<body>
<form>
 <div><input type="button" onclick="dialog(this)" value="4711"> bla</div>
 <div><input type="button" onclick="dialog(this)" value="4712"> blubb</div>
 <div><input type="button" onclick="dialog(this)" value="4713"> blablubb</div>
</form>
</body>
</html>
```

*Test*

Ich glaub, es wird Zeit für ein Tutorial zu dem Thema


----------

