PHP Variable im Javascript

PhoenixDH

Erfahrenes Mitglied
Mit Verweis auf folgenden Link: Link

Folgendes Problem:
Ich öffne auf der Hauptseite meines Forums über ein Javascript ein neues Fenster, dieses neue Fenster beinhaltet mein Adressbuch für PM's. Darin gibt es zu jedem Benutzer die Möglichkeit eine PM zu verschicken. D.h. das ganze wird aus der sql Tabelle ausgelesen und liegt in Variablen. Genauso wie der Link für die neue PM zu senden in einer Variablen liegt:

Code:
$sentlink = built_link('url + Variable[Name])

In Variable Name steht jeweils der Name drin zu der ensprechenden Person, damit der gleich im Textfeldes des Empfängers der neuen PM steht. built_link ist eine spezielle Funktion des Forums um gleich die Session mit zu übergeben. Ist aber egal, mir würd es schon reichen wenn ich wüsste wie ich die Variable in der der Name des Empfängers steht, dynamisch an das Javascript übergeben kann. Die Variable heißt $row['username'] !

Meine Erklärung:
Die Variable $row['username'] kennt das Javascript bzw. sie ist leer ! Denke das liegt daran das das Javascript ja im <head> Bereich steht und erst danach der eigentliche PHP Code.

Ist es möglich, die Javascript Funktion in die While Schleife (welche schaut ob noch mehr Namen im Adressbuch sind um die Links zu erstellen) einzubinden ? Also zu dem Zeitpunkt bei dem die Variable $row['username'] schon bekannt ist ?
In dem Javascript, welches mir den Link auf der Mutterseite öffnet und gleichzeitig das Adressbuch schließt, wird der Link im PHP Code über:

Code:
javascript:fenster3()

geöffnet.

und im Javascript steht

Code:
opener.location.href

und genau danach muss die Variable kommen in der URL die da eingefügt wird.


Langer Text, hoffe die Erjklärungen sind ausreichend damit mir jemand weizterhelfen kann.
 
Die Variable $row['username'] kennt das Javascript bzw. sie ist leer ! Denke das liegt daran das das Javascript ja im <head> Bereich steht und erst danach der eigentliche PHP Code.


Der PHP-Code hat mit JS nix zu tun, da PHP letzendlich nur HTML, JS-Scriptz,s CSS und co eifnach so ausgibt.
Ob die Variable leer ist siehst du ja wenn du sie dir beispielsweise mit alert o.ä. ausgeben lässt.
Wie sieht denn der Code überhaupt aus, dass man hier nicht so im trüben fischt.
 
Ich erkenne das daran das die Variable leer ist, weil das Textfeld in dem eignetlich der Wert der Variable steht auch leer ist.

Bin leider auf der Arbeit im Moment, den kompletten Code so wie er im Moment ist hab ich zu Hause. Poste ihn heute Abend wenn ich da zu Hause bin !
 
Hier der komplette Code:

Code:
<html>
<head>
<title>Adressbuch</title>
<script language="JavaScript">
function fenster3()
{
opener.location.href="pm.php?action=new&recipient='.$row['username'].'";
self.close();
}
</script>
</head>
</html>

<?php
/*
Adressbuch Addon für THWB 2.84
*/

define('THWB_NOSESSION_PAGE', true);

include "./inc/header.inc.php";

if ( $g_user['userid'] == 0 )
{
		buddy_messages('Error', 'Gäste können das Adressbuch nicht nutzen');
		exit;
}

if ( !isset($_GET['act']) ) {
	$act = "adbook"; 
} else {
	$act = $_GET['act'];
}

switch($act) {
	case 'add':
		addbuddy(intval($_GET['buddy']));
		break;
	case 'del':
		deletebuddy(intval($_GET['buddy']));
		break;
	case 'adbook':
		index();
		break;
	default:
		index();
		break;
}

function index() {
	global $pref, $g_user;
	
	$search = mysql_query("SELECT b.id, b.buddyid, u.username FROM ".$pref."buddys b LEFT JOIN ".$pref."user u ON (b.buddyid = u.userid) WHERE b.memberid='".$g_user['userid']."' order by u.username ASC") OR DIE (mysql_error());
	if (mysql_num_rows($search) >0 ) {
		while ( $result = mysql_fetch_array($search) ) {
			$users[$result['buddyid'] ] = array('buddyid' => $result['buddyid'], 'username' => $result['username']);
		}
		buddy_overview('Adressbuch', $users);
	} else {
			buddy_messages('Error', 'Keine User in Deinem Adressbuch');
	}
}

function addbuddy($id) {
	global $pref, $g_user;
	
	if ( !isset($id) )
	{
		buddy_messages('Error', 'Keinen User gewählt');
	}
	else if ( $id == 0 )
	{
		buddy_messages('Error', 'Gäste können nicht ins Adressbuch hinzugefügt werden');
	}
	else {
	
		if ( $id == $g_user['userid'] ) {
			buddy_messages('Error', 'Du kannst Dich nicht selbst in Dein Adressbuch hinzufügen');
		} else {
			$check = mysql_query("SELECT buddyid FROM ".$pref."buddys WHERE buddyid='".$id."' AND memberid='".$g_user['userid']."'") OR DIE (mysql_error());
			if ( mysql_num_rows($check) > 0 ) {
				buddy_messages('Error', 'User ist schon in Deinem Adressbuch');
			} else {
				mysql_query("INSERT INTO ".$pref."buddys (buddyid,memberid) VALUES ('".$id."', '".$g_user['userid']."') ") OR DIE (mysql_error());
				buddy_messages('Ausgeführt', 'Der User wurde Deinem Adressbuch hinzugefügt');
			}
		}
	}
}

function deletebuddy($id) {
	global $pref, $g_user;
	
	if ( !isset($id) )
	{
		buddy_messages('Error', 'Keinen User gewählt');
	}
	
	
		mysql_query("DELETE FROM ".$pref."buddys WHERE buddyid='".$id."' AND memberid='".$g_user['userid']."' ") OR DIE (mysql_error());
		buddy_messages('Ausgeführt', 'Der User wurde aus Deinem Adressbuch gelöscht');
}

function buddy_messages($title,$msg) {
	global $style;
	
	print '
	<link rel="stylesheet" type="text/css" href="templates/css/'.$style['styleid'].'.css">
	<table width="100%" border="0" cellspacing="0" cellpadding="0" class="border-col">
  <tr>
    <td>
      <table width="100%" border="0" cellspacing="1" cellpadding="3">
        <tr class="color4"> 
          <td>'.$style["smallfont"].'<span style="color:'.$style["col_he_fo_font"].'"><strong>'.$title.'</strong></span>'.$style["smallfontend"].'</td>
        </tr>
        <tr class="cellB"> 
          <td>
            <table width="100%" border="0" cellspacing="0" cellpadding="22">
              <tr>
                <td>'.$style['stdfont'].''.$msg.''.$style['stdfontend'].'</td>
              </tr>
            </table>
          </td>
        </tr>
        <tr class="color4">
          <td align="center">
            '.$style['smallfont'].'<strong><span style="color:'.$style['col_he_fo_font'].'"><a href="javascript:window.close()"><font color="#FFFFFF">Schliesse dieses Fenster</font></a></span></strong>'.$style['smallfontend'].'
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
';
}

function buddy_overview($title,$users=array()) {
	global $style;

	print '
	<link rel="stylesheet" type="text/css" href="templates/css/'.$style['styleid'].'.css">
	<table width="100%" border="0" cellspacing="0" cellpadding="0" class="border-col">
  <tr>
    <td>
      <table width="100%" border="0" cellspacing="1" cellpadding="3">
        <tr class="color4"> 
          <td>'.$style["smallfont"].'<span style="color:'.$style["col_he_fo_font"].'"><strong>'.$title.'</strong></span>'.$style["smallfontend"].'</td>
        </tr>
        <tr class="cellB"> 
          <td>
            <table width="100%" border="0" cellspacing="0" cellpadding="22">
              <tr>
                <td>'.$style['stdfont'].'';
                

               	foreach($users as $row){
               		$dellink = build_link('buddy.php?act=del&buddy='.$row['buddyid'].'');
               		$sendlink = build_link('pm.php?action=new&recipient='.$row['username'].'');
			print 'Username: <b>'.$row['username'].'</b> | <a href="javascript:fenster3()">PM senden</a> | <a href="'.$dellink.'">Aus Adressbuch löschen</a><br />';
		}
                
                print '
                '.$style['stdfontend'].'</td>
              </tr>
            </table>
          </td>
        </tr>
        <tr class="color4">
          <td align="center">
            '.$style['smallfont'].'<strong><span style="color:'.$style['col_he_fo_font'].'"><a href="javascript:window.close()"><font color="#FFFFFF">Schliesse dieses Fenster</font></a></span></strong>'.$style['smallfontend'].'
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
';
}

?>
 
Zurück