andyah
Goto Top

PHP-Funktion in JavaScript ausführen

Hi NG,

wie führe ich eine PHP-Funktion mir JavaScript aus? Sowohl die PHP-Funktion als auch das JavaScript stehen in der selben PHP-Datei.

Code:

<?php

function test()
{
   echo "Test";  
}

echo '<script type="text/javascript">  
      if(window.confirm("Wollen Sie das wirklich tun?") == true)  
      { 
        //Funktion -Test- ausführen
      }
      </script>';    
?>

Das Code-Tag wird schon wieder nicht angezeigt!

Gruß
Andy

Content-ID: 205107

Url: https://administrator.de/contentid/205107

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

Hitman4021
Hitman4021 17.04.2013 um 07:56:21 Uhr
Goto Top
Hallo,

sowas macht man normalerweise über einen Ajax Request.
Soweit ich weiß gibt es auch keine Möglichkeit diese Funktion so auszuführen.

Gruß
AndyAh
AndyAh 17.04.2013 um 08:16:52 Uhr
Goto Top
Hi,

gibst du mir evtl. ein paar deutschsprachige Links zu diesem Thema? Ich habe mich damit noch nicht auseinandergesetzt.

Gruß
Andy
michi1983
michi1983 17.04.2013 um 09:52:09 Uhr
Goto Top
Hallo,

ist das denn überhaupt möglich?
PHP ist ja serverseitig und Javascript is clientseitig.
Oder irre ich, dass das nicht funktionieren kann weil das Javascript ja erst geladen wird wenn die Seite komplett geladen ist?

MfG
Michi
dog
dog 17.04.2013 um 10:17:43 Uhr
Goto Top
ist das denn überhaupt möglich?

Jein.
PHP kann nicht mit Javascript interagieren (außer über AJAX).
Man kann aber in PHP einen JS-Funktionsaufruf ausgeben, der nach dem Laden der Seite ausgeführt wird.
Guenni
Guenni 17.04.2013 um 11:47:14 Uhr
Goto Top
Hi Andy,

genauso wie du im PHP-Code JS ausgibst, . . .

echo '<script type="text/javascript">  
      if(window.confirm("Wollen Sie das wirklich tun?") == true)  
      { 
        //Funktion -Test- ausführen
      }
      </script>';    

. . . gibst du im JS-Code PHP aus.

<?php
function test(){
 echo "Ich bins, PHP";  
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
</head>
<body>
<script type="text/javascript">  
<!--
if(window.confirm("Wollen Sie das wirklich tun?") == true) 
      { 
        document.write("<?php test();?>"); //Den PHP-Code ins Dokument schreiben. 
      }

// -->
</script>
</body>
</html>

Gruß
Günni
AndyAh
AndyAh 17.04.2013 um 12:44:06 Uhr
Goto Top
Hi Günni,

danke für den Tip. Es funktioniert.

Gruß
Andy
Guenni
Guenni 18.04.2013 um 01:16:48 Uhr
Goto Top
Zitat von @AndyAh:
Hi Günni,

danke für den Tip. Es funktioniert.

Gruß
Andy

Hi Andy,

naja, funktionieren . . . Es kommt vielleicht drauf an, was man mit so einem Konstrukt machen will.

Ich hab' hier mal was anderes probiert. Den PHP-Funktionsaufruf lasse ich von einer JS-Funktion ausführen.

Im body-Bereich wird ein Link auf die JS-Funktion gesetzt.

Script:

<?php
function test(){
 $conn = mysql_connect("localhost","user","passwort");  
	mysql_select_db("test");  
	$query = "select * from tabelle2";  
	$result = mysql_query($query, $conn);
	while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
	 echo implode(' | ',$row).'<br>';  
	}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function test(){
 document.write("<?php test();?>"); 
 document.write('<a href="javascript:window.history.back()">Zurück</a>'); 
}
// -->
</script>
</head>
<body>
<a href="javascript:test()">Test</a>   
</body>
</html>

Klicke ich den Link an, so wird die JS-Funktion aufgerufen, die wiederum ruft die PHP-Funktion auf und "voila": Das Ergebnis der Tabellenabfrage erscheint.

Dass die JS-Funktion die PHP-Funktion "wirklich" aufruft, ist aber (m.M. nach) nur scheinbar. Denn wenn du dir den Quelltext vom Script anzeigen läßt, steht da:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">  
<!--
function test(){
 document.write("5 | Paul | Dürheim | 68746468 | Krefeld | verkauf | 2001<br>6 | Hans-Dieter-Heinz | Gerhards | 231384354 | Hamburg | verkauf | 2001<br>7 | Paul | Nowottny | 3446168484 |  

Osnabrück | einkauf | 2003<br>8 | Günter | Pappon | 01735370126 | Viersen | einkauf | 2004<br>9 | Paul | Kamps | 9154864 | Köln | einkauf | 2006<br>11 | Franz | Xaver | 0987654321 | 

Düsseldorf | personal | 2006<br>13 | Horst-Eugen | Flug | 31690 | Viersen | personal | 2006<br>14 | Monika | Junker | 091857365 | Karlsruhe | versand | 2007<br>17 | Monika | Schmidt | 8854844 | 

Karlsruhe | versand | 2007<br>18 | Paul | Schmitt-Müller | 8854844 | Trier | lager | 2007<br>19 | Heike | Schmitz | 8854844 | Dortmund | lager | 2010<br>20 | Horst | Schmied | 8854844 | Krefeld | 

lager | 2010<br>21 | Martina | Schimanski | 987654 | Buxtehude | lager | 2011<br>23 | Hans | Schmidt | 8854844 | Viersen | lager | 2011<br>"); 
	document.write('<a href="javascript:window.history.back()">Zurück</a>'); 
}
// -->
</script>
</head>
<body>
<a href="javascript:test()">Test</a>   
</body>
</html>

Heißt: Die PHP-Funktion wurde bereits beim Laden der Seite ausgeführt, und die JS-Funktion gibt nur noch das Ergebnis wieder.

Gruß
Günni