# Link in altem Fenster öffnen + Fenster schließen



## PhoenixDH (7. September 2004)

Ich hab folgendes Problem, und zwar wenn ich einen Link klicke öffnet sich ein neues Fenster in welchem ich Auswahlen treffen kann. Diese Auswahlen sollen sich aber net in dem aktuellen, sondern in dem alten Fenster öffnen und gleichzeitig das letzte Fenster geschlossen werden, ist das möglich ?


```
$sendlink = build_link('pm.php?action=new&recipient='.$row['username'].'');
<a href="'.$sendlink.'">PM senden</a>
```

Das obere erstellt mir den Link und über den unteren wird er aufgerufen, und mit Klick darauf soll die neue Seite im alten Fenster geöffnet werden und dieses soll sich schließen !


----------



## shorty (7. September 2004)

Ist zwar kein PHP, aber mit Javascript wirst du das sicherlich hinbekommen .


```
<script language="Javascript">
opener.location.href="LinkzurDatei";
window.close();
</script>
```


----------



## PhoenixDH (7. September 2004)

Könntest du mir das bitte in den href tag einbauen ?


----------



## saila (7. September 2004)

Das geht prinzipiell nicht mit PHP und hat somit auch im PHP-Forum nichts verloren  

@PhoenixDH,

es gibt z.B. entweder Tutorials oder Selfhtml.de. Dort findest du genau die Antwort auf deine Frage inkl. entsprechender Beispiele.


----------



## PhoenixDH (7. September 2004)

Und wo gehört es dann hin ?
Es gibt bei sowas so vieles wo es hingehören könnte, aber wenn man halt ne so viel Ahnung hat weiß man halt net wo hin.

Und dann frage ich mich immer wieder nach dem Sinn eines Forums, wenn man eh net geholfen bekommt.


----------



## Thomas Lindner (7. September 2004)

Zur zeit werde ich aus deiner Frage noch nicht schlau, weil sie PHP Bestandteile hat.

Erkläre bitte dein Vorhaben etwas genauer und lieferew soweit wie Möglich Code Bestandteile.

Danke.


----------



## saila (7. September 2004)

also er hat einen Link aus einem Script.php, das aber wiederum HTML bestandteile hat. In diesem HTML-Bestandteil ist nun ein Link welchen er per Klick im gleichen Fenster ausführen lassen will in welchem er zuvor geklickt hat  

Wenn nun die Ausgabe über den Browser erfolgt, möchte er einen Link welcher das schließen des Fensters ermöglicht, was wiederum Java-Script entspricht.

Selbst wenn er ein iframe-Fenster öffnen will im gleichen Browserfenster, so ist es immer noch HTML und Java-Script.


----------



## PhoenixDH (7. September 2004)

Also:

Von der Hauptseite öffne ich ein POPUP das meine Kontakte in einem Forum enthält. In diesem POPUP gibt es dann die Option bei jedem Eingetragenen eine PM zu versenden. Jetzt hätte ich gerne, das wenn man in diesem POPUP auf PM senden klickt, das sich das POPUP schließt und sich der Link in dem Fenster öffnet von dem das POPUP geöffnet wurde.

Der Code des Links:


```
<a href="'.$sendlink.'">PM senden</a>
```

Das POPUP ist eine PHP Seite mit Variablen ! Dazu gibt es kein Template, das Template ist in die PHP Datei eingebunden.
Geöffnet wird dieses POPUP durch ein HTML Template.

Der komplette Code:


```
<?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="'.$sendlink.'">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>
';
}

?>
```


----------



## Thomas Lindner (7. September 2004)

Ganz ehrlich?

Dann verstehe ich das Problem nicht, weil Shorty dir die Lösung schon gepostet hat!

Sollte so gehen, wenn deine PHP Links mitspielen:

Im Head:


```
<script language="Javascript">
function uebergabe(ziel)
opener.location.href= ziel;
window.close();
</script>
```


Im Body (irgendwo , wo du es brauchst):

```
<a href="#" onclick="uebergabe('build_link('pm.php?action=new&recipient='.$row['username'].'');)');">Link</a>
```
Ob der PHP Link jetzt der korrekte ist weiß ich nicht weil ich kann fast kein PHP!

LG Thomas

N.S.: Nach JavaScript verschoben!


----------



## PhoenixDH (7. September 2004)

Beide Code Abschnitte kommen in das POPUP oder ?


----------



## Thomas Lindner (7. September 2004)

> _Original geschrieben von PhoenixDH _
> *Beide Code Abschnitte kommen in das POPUP oder ? *



Ja!

window.opener == das Fenster das das Popup geööfnet hat
self == das Popup selbst


Wenns nicht funktionieren sollte, müsste es eigentlich am Link liegen!


----------



## PhoenixDH (7. September 2004)

Da wo du ziel geschrieben hast in deinem Code, was muss da rein ?


----------



## flooo (7. September 2004)

mit dem links startest du eine funktion namens uebergage
dieser funktion wird eine variable (variablenname ist 'ziel') übergeben, in der die src zur datei, die in dem mutterfenster geöffnet werden soll, gespeichert wird

```
onClick="uebergabe('hierhin/zurdatei.php?bla=ich');"
```
die funktion verarbeitet dann was ihr übergeben wurde.
sie öffnet mit 

```
opener.location.href
```
im mutterfenster (opener), die der funktion übergebene seite
hoffe es war verständlich
flooo


----------



## PhoenixDH (7. September 2004)

Habe es versucht, es tut sich nichts, scheint wohl am Link zu liegen der falsch ist, wie könnte der noch aussehen ?


----------



## PhoenixDH (8. September 2004)

Egal, auch wenn ich einen normalen Link mache ohne php passiert nichts !


----------



## Thomas Lindner (8. September 2004)

Ändere mal bitte auf window.opener, könnte sein das es da hakt...

Außerdem folgende Änderung, ich hatte Klammern vergessen:




```
<script language="Javascript">
function uebergabe(ziel)
{
```
 *window.*opener.location.href =  ziel;
self.close();
}
</script>


----------



## PhoenixDH (8. September 2004)

Ich habe mittlerweile ne funktion gefunden die das macht was ich will, hab das Fenster das sich von der Hauptseite meines Forums öffnet schon über javascript geöffnet und dann in den quelltext des neuen fensters ne funktion eingebaut der den neuen Link im alten Fenster öffnet und das neue schließt. Geht alles soweit, leider habe ich jetzt das Problem das ich an das Javascript eine Variable übergeben muss, welche jedoch in einen speziellen Link eingebaut werden muss, d.h. der Link der geöffnet werden soll besteht aus einem Link des THW Boards wobei direkt Session etc. mit übergeben werden sollen in dem die Variable enthalten ist. Das ganze an das Javascript, daran hänge ich jetzt noch ! Aber alles andere geht ! Aber ich glaub das mit dem Link bekomme ich nur im THWB Support Forum gelöst.

Syntax des links lautet: _('url incl. Variable'), darin ist die Session enthalten und anstatt der Variable steht der Benutzername jedes Members das in einem Adressbuch steht, welches über sql aus ner Tabelle ausgelesen wird. Das ist das Problem.


----------



## Thomas Lindner (8. September 2004)

Das klingt mir bnach einem "hartnäckigen" würde ich dir ein Cross Posting im PHP Forum empfehlen und im Bedarf auf diesen Thread zur Erläuterung verweisen.

LG

Thomas


----------

