# PHP-Wert an JavaScript übergeben



## mokaschitta (1. März 2004)

*PHP Variable an Javascript übergeben*

Hi!
Ich habe ein kleines Problem bei der Übergabe einer PHP variable an eine JavaScript Funktion. Ich möchte ein neues browserwindow mit javascript öffnen, an das eine Variable weitergegeben werden soll. Das klappt leider nur teilweise. 


```
<table width="100%" height="0" border="0" cellspacing="0">
<tr><td width='100%'><b>nick</b>:</td><td><b>rank:</b></td></tr>
<?php
$result = mysql_query("SELECT * FROM test_member order by rank DESC");
                      while ($row = mysql_fetch_array($result)) { 
					  $mid = $row["id"];
					  $name = $row["nick"];
					  $rank = $row["rank"];
					  if($rank == 1) {
					  $rank="admin";
					  $name="~ $name";
					  } else {
					  $rank="artist";
					  $name="* $name";
					  }
					  ?>
<script language="JavaScript" type="text/JavaScript">
<!--
function neuesfenster() {
window.open('memberdetails.php?mid=<? echo "$mid"; ?>', 'fenster1' , 'width=750,height=500,toolbar=no,status=no,menubar=no,scollbars=auto,left=2, top=0').focus();
}
//-->
</script>
					  <tr><td width='100%'><b><a href='javascript:neuesfenster()'><? echo"$name"; ?></a></b></td><td><? echo"$rank"; ?></td></tr>
					  <? } ?>
					  </table>
```
Das ist das script was ich mir daszu ausgedacht habe. leider übergibt das Javascript immer nur die neuste ID und nicht jede einzeln. Kann mir da jemand helfen? Das was ich komisch finde ist, dass das Javascript in die While-Schleife eingebunden ist, aber dennoch nur die neuste ID übergibt.


----------



## _voodoo (1. März 2004)

du müsstest bei jedem Durchlauf eine neue Funktion erzeugen! Das heißt z.Z wird immer wieder eine neuesfenster() Funktion erzeugt - du musst dafür sorgen dass die Funktion bei jedem Durchlauf einen neuen Namen erhält. Zum Beispiel könntest du einfach die ID an neuesfenster an hängen:

```
<table width="100%" height="0" border="0" cellspacing="0">
<tr><td width='100%'><b>nick</b>:</td><td><b>rank:</b></td></tr>
<?php
$result = mysql_query("SELECT * FROM test_member order by rank DESC");
                      while ($row = mysql_fetch_array($result)) {
                      $mid = $row["id"];
                      $name = $row["nick"];
                      $rank = $row["rank"];
                      if($rank == 1) {
                      $rank="admin";
                      $name="~ $name";
                      } else {
                      $rank="artist";
                      $name="* $name";
                      }
                      ?>
<script language="JavaScript" type="text/JavaScript">
<!--
function neuesfenster<?=$mid?>() {
window.open('memberdetails.php?mid=<? echo "$mid"; ?>', 'fenster1' , 'width=750,height=500,toolbar=no,status=no,menubar=no,scollbars=auto,left=2, top=0').focus();
}
//-->
</script>
                      <tr><td width='100%'><b><a href='java script:neuesfenster<?=$mid?>()'><? echo"$name"; ?></a></b></td><td><? echo"$rank"; ?></td></tr>
                      <? } ?>
                      </table>
```


----------



## Chino (1. März 2004)

Nein, eine JavaScript-Funktion für den Link reicht 

In den Header:


```
<script language="JavaScript" type="text/JavaScript"> 
<!-- 
function neuesfenster(user_id) { 
    window.open('memberdetails.php?mid='+user_id+', 'fenster1' , 'width=750,height=500,toolbar=no,status=no,menubar=no,scollbars=auto,left=2, top=0'); 
} 
//--> 
</script>
```

Im Body:


```
<table width="100%" height="0" border="0" cellspacing="0">
    <tr>
        <td width="100%"><b>nick</b>:</td>
        <td><b>rank:</b></td>
    </tr> 
<?php 
$result = mysql_query("SELECT * FROM test_member order by rank DESC"); 
while ($row = mysql_fetch_array($result)) { 
    $mid    = $row["id"]; 
    $name   = $row["nick"]; 
    $rank   = $row["rank"]; 
    if($rank == 1) { 
        $rank   = "admin"; 
        $name   = "~ $name"; 
    } else { 
        $rank   = "artist"; 
        $name   = "* $name"; 
    } 
?> 
    <tr>
        <td width="100%"><b><a href="java script:neuesfenster(<? echo $mid; ?>);"><? echo $name; ?></a></b></td>
        <td><? echo $rank; ?></td>
    </tr> 
<? } ?> 
</table>
```


----------



## mokaschitta (1. März 2004)

Jou, Danke. Mit der zweiten version funktioniert das wunderbar. Hattest allerdings nen Tippfehler im Javascript  . Naja ein Anführungszeichen vergisst jeder mal. 

Vielen Dank!


----------



## _voodoo (1. März 2004)

Sorry, hab nicht wirklich Ahnung von JavaScript und dachte es funktioniert ähnlich PHP Funktionen :/


----------



## philishake (17. Februar 2005)

*Re: PHP Variable an Javascript übergeben*

Warum gibt er "Hello World" nicht aus? 


```
<? $mid = "Hello World"; ?>
<body>
<script type=text/JavaScript>
var Ausgabe=<? echo "$mid"; ?>;
document.write( Ausgabe ); 
</script>
```


----------



## pehape (27. Februar 2005)

*Re: PHP Variable an Javascript übergeben*

Du hast die Anführungszeichen an der falschen Stelle.
 Versuch es mal so:

 var Ausgabe="<? echo $mid; ?>";


----------



## Scratti (19. Juli 2005)

*Re: PHP Variable an Javascript übergeben*

Hallöchen, 

also ich habe hier ein ähnliches Problem aber es will nicht so recht klappen...

Ich möchte gern auf meinem CMS im Navigationsmenü diesen Link ausführen:



```
javascript:openWindow('/chat/flashchat.php?username=$userdata[user_name]&password=$logincheck[1]&lang=gm', 600,550)
```
 


mit userdata[user_name]&password=$logincheck[1] überprüft er den Benutzer und wählt sich dann mit diesem Namen in den Chat, es klappt auch soweit, das heisst er wählt sich ein und begrüsst mich dann aber dummerweise mit Hallo userdata[user_name]

bloss eine Datenbankverbindung muss er doch haben sonst würde er eine Eingabeaufforderung zwecks Benutzernamen und Password für den Chat erzeugen...


Oder hat das doch was mit der Datenbank zu tun?


Hat jemand nen kleinen Tip für mich?



Gruss Scratti


----------



## majinz (19. Juli 2005)

*Re: PHP Variable an Javascript übergeben*

Was ich mich Frage ist:
Hast du den geposteten Code im PHP geschrieben oder nur im HTML? Mich schaut das nach HTML aus, du müsstest das in PHP umwandeln:

```
<?php echo "javascript:openWindow('/chat/flashchat.php?username=" . $userdata[user_name] . "&password=" . $logincheck[1] . "&lang=gm', 600,550)"; ?>
```
oder

```
javascript:openWindow('/chat/flashchat.php?username=<?=$userdata[user_name];?>&password=<?=$logincheck[1];?>&lang=gm', 600,550)
```


----------



## Scratti (19. Juli 2005)

*Re: PHP Variable an Javascript übergeben*

hmm, da gibt es bei mir dann diesen Fehler :

*Parse error*: parse error, unexpected ':' in */var/www/x1167/html/netsnoop_neu/chatphp.php* on line *3*


mit diesem Code :



```
javascript:openWindow('/chat/flashchat.php?username=<?=$userdata[user_name];?>&password=<?=$logincheck[1];?>&lang=gm', 600,550)
```
 

und mit diesem Code:



```
<?php echo "javascript:openWindow('/chat/flashchat.php?username=" . $userdata[user_name] . "&password=" . $logincheck[1] . "&lang=gm', 600,550)"; ?>
```
 

gibt er mir nur das aus :


"javascriptpenWindow('/chat/flashchat.php?username=" . $userdata[user_name] . "&password=" . $logincheck[1] . "&lang=gm', 600,550)"; 


auf Grund von echo denke ich...


----------



## spesso (6. April 2006)

Ich habe ein ähnliches Problem. Seit PHP5 funktioniert mir dieses script nicht mehr:


```
<table width="100%" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFFF00">
    <div align="center"></div>    
    <div align="center"><font class="texttitel"> Klassenzuteilung 2005 / 2006 </font></div>    </td>
  </tr>
</table>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td valign="top">
      <table  width="100%" border="0" cellpadding="8" cellspacing="0">
	  
	  

<?

$cat_result = mysql_db_query($database, "SELECT * FROM lehrpersonen_cat WHERE cat_id=1 OR cat_id=2 OR cat_id=3 OR cat_id=5 OR cat_id=6"  );
while($cat_row = mysql_fetch_array($cat_result)){

$cat_id = $cat_row["cat_id"];
$cat_description = $cat_row["cat_description"];

$pers_result = mysql_db_query($database, "SELECT * FROM lehrpersonen_pers WHERE cat_id = '$cat_id'  ORDER BY pers_name");
	while($pers_row = mysql_fetch_array($pers_result)){

    $pers_id = $pers_row["pers_id"];
	$pers_name = $pers_row["pers_name"];
	$pers_description = $pers_row["pers_description"];

	if($cat_description) echo "<tr><td colspan=\"3\">&nbsp;</td></tr>";

?>

        <tr>
          <td width="28%"><strong><?=$cat_description?></strong></td>
          <td width="44%"><a href="#" onClick="window.open('personen_details.php?id=<?=$pers_id?>','Personendetails','width=220,height=120,resizable=no,screenX=100,top=270,left=200,screenY=160')"><?=$pers_name?></a></td>
          <td width="28%"><div align="left"><?=$pers_description?></div></td>
        </tr>

<?

	unset($cat_description);
	}
}

?>

      </table>
    </td>
  </tr>
</table>



<p>&nbsp;</p>
<p align="center"><strong><a href="pdf/telefonliste.pdf" target="_blank">Link: Telefonliste als PDF</a> <a href="pdf/telefonliste.pdf" target="_blank"><img src="bilder/pdf/pdf.gif" width="30" height="29" border="0"></a></strong></p>
```



```
<html>
<head>
<title>Details</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel=stylesheet type="text/css" href="var/style.css">

</head>

<body bgcolor="#FFFFFF" background="bilder/hg/tab_hg.jpg" onLoad="setTimeout('window.close()',5000)">



<?
$result = mysql_db_query($database, "SELECT * FROM lehrpersonen_pers WHERE pers_id='$id'");
$row = mysql_fetch_array($result);

	$pers_name = $row["pers_name"];
	$pers_description = $row["pers_description"];
	$pers_address = nl2br($row["pers_address"]);
	$pers_phone = $row["pers_phone"];
	$pers_email = $row["pers_email"];
	$pers_picture = $row["pers_picture"];

?>
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><b><?=$pers_name; ?></b></td>
    <td rowspan="5"><div align="center">
	<?
	if($pers_picture == ""){
		echo " ";
	}
	else{
		$bildpfad = "bilder/persbilder/".$pers_picture;
		if(file_exists($bildpfad)){
			?>
			<?
		}
		else{
			echo "Bild Pfad falsch";
		}
	}
	?>
	
	</div></td>
  </tr>
  <tr>
    <td><?=$pers_description?></td>
  </tr>
  <tr>
    <td><?=$pers_address?></td>
  </tr>
  <tr>
    <td><?=$pers_phone?>
    </td>
  </tr>
  <tr>
    <td><a href="mailto:<?=$pers_email?>"><?=$pers_email?></a>    </td>
  </tr>
</table>

<table border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td><div align="center">
        <p>&nbsp;</p>
        <p><a href="javascript:window.close();"><strong>Fenster schliesst in 5 sec.</strong></a> 
        </p>
        </div></td>
  </tr>
</table>
</body>
</html>
```

kann mir da jemand helfen ?

P.S. es wir bei der Variable id auch nichts mehr übergeben ...

Besten Dank im Voraus


----------



## Gumbo (6. April 2006)

Arbeite am besten nur mit den eigentlichen PHP-Tags (<?php … ?>).


----------



## arillus (18. März 2007)

Hallo liebe Tutorials Gemeinde ich hab fogendes Problem, welches sich aber mit den oben genannten Lösungen nicht lösen lässt.

Ich will ebenfalls über einen Link und window.open ein Fenster öffnen. Es wird aber der die Variable nicht übergeben.

Java-script:

```
<?php
$o_cont =  "<script language=\"JavaScript1.1\">
                   function open_kun_addr(recid)
                      {
                       window_kun_addr = window.open(\"windows/windows.php?module=address&action=detail&id=+recid+\", \"Adressbrowser\", \"width=800,height=563,toolbar=no,status=no,menubar=no,titlebar=no,scollbars=auto,left=50,top=50\");
                       window_kun_addr.focus();
                      }
                      
                     </script>";
?>
```

Die Zeile, welche das script aufruft:

```
<? $o_cont .= "<tr bgcolor=\"#ffffff\"><td width=\"10\" bgcolor=\"#d4d0c8\"><img src=\"images/leer.gif\"></td><td>&nbsp;<a href=\"javascript:open_kun_addr($row[REC_ID]);\" target=\"_self\">".$row[NAME1]."</a></td><td>&nbsp;".$row[TELE1]."</td><td>&nbsp;<a href=\"mailto:".$row[EMAIL]."\">".$row[EMAIL]."</a></td><td>&nbsp;".$row[FUNK]."</td><td align=\"right\">&nbsp;".number_format($row[Bestand], 0)."</td><td align=\"right\">&nbsp;".$row[REC_ID]."</td></tr>";
        ?>
```

der Link hat auch die richtige ID in der Stauszeile zb: (javascriptpen_kun_addr(38)) 

Bitte um Hilfe. häng hier schon seit 5 Tagen


----------



## arillus (24. März 2007)

keiner eine Ahnung?

bitte um hilfe


----------



## rexxitall (11. April 2007)

Generell kann man PHP Werte nur indirekt an javascript übergeben. Es sei denn man verwendet ajax, was aber in diesem simplen Fall overkill wäre.

Bitte prüfe doch erst einmal was in dem neuen Fenster überhaupt ankommt 
z.B. mit alert(window.location.href)
Sollten hier die Übergebenen Parameter nicht drin sein
ist es eine Idee einmal im window.php selber zu sehen ob Parameter gesetzt wurden.
Ich erinnere mal an die $_GET[
"wasauchimmer"] Globale Variable.


```
//------------------------------------------------------------------------------
function parm(){
$arg  = func_get_args();
$val  =$arg[0];
$def  =$arg[1];
//------------------------------------------------------------------------------

$h=$_GET[$val];
if ($h==""){
	$h=$_POST[$val];
}
if ($h==""){
$h=$def;
}
$GLOBALS[$val]=$h;
return $h;
}
```

Wenn du also window.php?KUNDE=Willi Wichtig&ARTIKEL="Pümpel" aufrufst
kannst du mit obiger Funktion im window.php folgendes machen:
echo parm("KUNDE")."<br>";
echo parm(ARTIKEL)."<br>";
echo "<br>$KUNDE will $ARTIKEL<br>"

Die Methode funktioniert mit POST(Formular) oder GET(URL).
Der 2. optionale Parameter setzt übrigens optional den Wert wenn nichts definiert wurde 

Alternativ gibt es auch noch die Variante das das geöffnete Fenster auf Die erzeuger Variablen (Vaterfenster zugreift)

if (window.opener && !window.opener.closed){
  alert(window.opener.KUNDE);
  alert(window.opener.ARTIKEL);
}

Klappt wenn im Vaterfenster die entsprechenden Variablen gesetzt wurden
Halte ich nebenbei gesagt auch für viel eleganter und einfacher als diese
endlos langen URL Statements.

Viel Spass
Thomas


----------

