ugrás a tartalomhoz

window.open meghívása PHP-ből?

hunge · 2005. Nov. 4. (P), 10.38
Sziasztok. Abszolut kezdő vagyok szóval ne lepődjetek meg ha csacska ságot kérdezek. A következőt szeretném: php-ből szeretnék (a feltételes elágazás else ágaként) megnyitni egy új ablakot úgy hogy néhány változónak az értéket átadom és azt a felugró oldalon kiiratom.

Vagyis a kérdés: 1 hogy lehet php-ből új ablakot nyitni? 2 php-s értékekkel műveletet végezni-kiiratni az új ablakban?

Javascriptre már találtam megoldást: ime egy rövid a Js 1.3 referenciából:

function windowOpener() {
   msgWindow=window.open("","displayWindow","menubar=yes,width=250,height=200")
   msgWindow.document.write
    ("<HEAD><TITLE>Message window</TITLE></HEAD>")
   msgWindow.document.write
    ("<CENTER><BIG><B>Hello, world!</B></BIG></CENTER>")
} 
Valahogy a phpből kellene meghívni a window.open Js fügvényt -úgy hogy a lekérdezés (ami pöpecül működik) $eredmeny tömbjének értékét átadom a JS-nek. Biztos nem olyan bonyolult,csak össze kéne kombinálni, de én már vagy három és fél órája ezzel szenvedek.

Aki tudja a választ kérem segítsen meg vele. Köszönöm
 
1

szerveroldal - kliens oldal

Anonymous · 2005. Nov. 4. (P), 12.26
HOgy érted ezt a "meghyívás"-t ?
Mert a php szerver oldalon fut le, a javascript meg kliens oldalon.

Annyit tudsz tenni, hogy a fájlodban benne van a JS function, és php-val kiiratsz rá egy meghívást:

<script language="javascript"><!--
function windowOpener() {
   msgWindow=window.open("","displayWindow","menubar=yes,width=250,height=200")
   msgWindow.document.write
    ("<HEAD><TITLE>Message window</TITLE></HEAD>")
   msgWindow.document.write
    ("<CENTER><BIG><B>Hello, world!</B></BIG></CENTER>")
}
--></script>

<php? 
print '<script language="javascript">windowOpener();</script>';
?>
2

tömbátadás

Anonymous · 2005. Nov. 4. (P), 12.46
szintén php-n belül:

<script language="javascript">
var jstombom = new Array();
<?php
for each($phptombom as $kulcs=>$elem){
  print "jstombom[$kulcs]='$elem';\n";
}
?>
</script>
lehetnek a kódokban hibák, nem ellenőriztem, csak a logikát próbáltam bemutatni.
4

<Nincs cím>

hunge · 2005. Nov. 5. (Szo), 16.00
Köszönöm szépen a választ! Pár napon múlva, amikor odaérek a fejlesztésben ki fogom próbálni.
3

A megoldás

hunge · 2005. Nov. 5. (Szo), 15.58
info: Volt egy kis kavarodás egy másik topicban amiért az én kezdő hozzászólásom át került ide de sajnos a válaszok amiket kaptam és végül elvezettek a megoldáshoz nem. Így a szerkesztővel abban állapodtunk meg hogy újra leírom a választ némi kommentel kiegészítve.

Íme ő az egy login oldal ami a mysql szervertől kéri le a felhasználónév/jelszó párost és ha nem jó akkor egy popup ablakban értesíti őt. A kód lehet hogy nem a legszebb mivel majdnem teljesen kezdő vagyok. De működik!

<?php
$uzenet = '';
$kapcs=Mysql_connect("localhost",$Nev,$Kod);
if (!$kapcs) { $uzenet = '<p>Hiba! Rossz a felhasználó név vagy a jelszó.</p>'; }		
?>

<?php if ($uzenet) { ?>
<script type="text/javascript">
function windowOpener() {msgWindow=window.open("","displayWindow","menubar=yes,width=250,height=200")	
msgWindow.document.write("<HEAD><TITLE>Message window</TITLE><style type='text/css'> p{font:1.5em Arial;
 color:#FF0000; background: #FFFFCC;padding-top:1.5em;padding-bottom:1.5em;}</style></HEAD>")
msgWindow.document.write("<?php echo $uzenet; ?>")
msgWindow.document.close()
}
function vissza(){
window.onLoad = parent.location="Belepes.php";
}
window.onload = windowOpener;
setTimeout("vissza()",200);
</script>
<body bgcolor="#FFFFCC">

<?php exit;}?>

<?php		
mysql_select_db("iroda",$kapcs)or die(mysql_error());
$_SESSION[user] = $Nev;
$_SESSION[time] = time() + 1200;
header ("Location: alap.php");


Magyarra lefordítva:
1 kapcsolódunk a szerverhez ha nem sikerül üzenet = 'hiba...'
2 ekkor az üzenet változónak van értéke tehát belépünk az if ágba a javascript-hez.
3 ott stíluslappal megformázzuk az üzenet szövegét majd kiíratjuk.

(ellenkező esetben a <?php exit;}?> sortól folytatódik a program futása)

4 a window.onload=windowOpener sor nyitja meg a popup ablakot. De ekkor a szülő ablakban is megnyilik egy új ablak (fehérré változik) ezért:
5 a vissza függvény a szülő ablakot továbbítja vissza a belepes.php-hez ami az én kezdő oldalam neve.
6 settime 200milisecundumos késleltetést visz a dologba mivel ha rögtön vissza küldené akkor nem nyilna meg az ablak
7body bgcolor a belépő oldalam háttér színével tettem azonosá mert igy az átmeneti ablak is olyan színű mint a háttér ergo nem villodzik.
8 standard kapcsolódás az adatbázishoz seessionbe átadva a user nevét illetve a visszaszámlálást 20 percel=1200sec kezdi meg a program, ha ennyi ideig nem volt aktív a user egy másik script kilépteti.
u.i kezdőknek: Ha nem intranetes programot fejlesztetek mint én akkor kerüljétek a popot mivel sok böngésző alapból tíltja vagyis gondokat okozhat a használata.
u.i: a hozzá értők kérem ne szegyenek darabokra nem egy szép kód de működik és én nemtudok jobbat...
5

<Nincs cím>

Anonymous · 2005. Dec. 7. (Sze), 10.22
Sziasztok.

Nem akartam új témát nyitni mert a problémám hasonló a topic címhez. Az ablaknyitással nincsen gondom, viszont hiába állítom be a window.open(...) parancson belül az új ablak paramétereit (toolbar,menubar,resizable), az uj, megnyilo ablakra nincs hatassal. A width és height parameterek jol mukodnek, de a tobbi nem.
Elkepzelheto hogy a window manager a hibas?
A kod:

echo "<A CLASS=font1 HREF=\"#\" onClick=\"newwin=window.open('href', 'newwin', 'width=x, height=y, toolbar=no, menubar=no, resizable=no');newwin.focus();\"></A>";

köszi a válaszokat

HS
6

Elképzelhető

Anonymous · 2005. Dec. 7. (Sze), 10.41
Elképzelhető. Képzeld, az is elképzelhető, hogy a felhasználó nem kíváncsi arra, hogy te eltűnteted a mindenféle neki fontos menükomponenseit és letiltotta.

A window manager a felhasználóé, nem a tied. Ergo azt csinálhatsz vele, amit megenged. De leginkább semmit. Miért olyan rohadt fontos, hogy a felhasználó ne tudja használni a navigációs elemeit a megszokott módon?

Egyébként meg érdemes lenne olyan felhasználókra is gondolni, akik letiltották a JavaScriptet mert nem kíváncsiak rá. A helyes kód:

<a class="font1" href="/href" onclick="newwin=window.open('href', 'newwin', 'width=x, height=y'); return false;"></a>
Ja, és ügyelj a mindenféle kinyitott macskakörmökre, zárd is be őket!
7

tudom hogy elkepzelheto

Anonymous · 2005. Dec. 15. (Cs), 09.05
Szia

Valszeg te vagy a nagyobb tudasu, de azert megkerdeznem hogy akkor mi a fenenek erhetoek el ilyen opciok ha az esetek nagy reszeben ugysem lehet hasznalni oket? A masik, ha valaki letiltja a javascriptet az az o dolga.
A celom csak annyi lett volna az uj ablakkal hogy egy diagrammot, grafikont szerettem volna megjeleniteni egy kulon ablakban mindenfele korites nelkul.Persze igazad van, ha o maximalizalni akarja az ablakot hadd tegye, ha minimalizalni vagy atmeretezni hadd tegye....csak tenyleg, akkor minek vannak az open fv-ben ezek az opciok? Hátha megis engedelyezi a wm?

Es ez a helyzet ha egy sima programban informacios ablakot jelenit meg az ember egy Ok es egy Megse gombbal. Miert lehessen maximalizalni ezt a dialogot? Gondolom visszakerdeznel: miert ne? Engem csak esztetikailag zavar, hiszen a GUI ugyanugy mukodni fog.
8

római lovak hátsója

Táskai Zsolt · 2005. Dec. 15. (Cs), 10.01
a javascript nyelv sajnos előbb terjedt el, mint hogy teret kaptak a felhasználókkal való foglalkozás alapelvei. sőt előbb, minthogy szabványossá tették volna. lásd még 'böngészőháborúk' ( http://weblabor.hu/cikkek/bongeszohaboruk ). egyszóval ami a javascriptben benne van, azt még nem kötelező használni. sőt egyes dolgokat ma már tényleg illetlenség használni. na ez a linkem nincs meg, sosincs meg semmi...
Tasi
9

ez erdekelne

Anonymous · 2005. Dec. 15. (Cs), 11.22
Szia

Felkeltette az erdeklodesemet az "illetlenseg" szo :) Gondolom linket szerettel volna beilleszteni.Nagyon erdekelne mik azok amiket nem etikus hasznalni és melyek azok a dolgok, amiket berakhatok az oldalamra. Meg tudod keresni azt a linket? Koszonom
10

ízletes

Táskai Zsolt · 2005. Dec. 15. (Cs), 11.56
szerencsére az 'ízletes' gyűjteményemben megvolt, amit kerestem. csak nézni kellett:
http://www.wait-till-i.com/index.php?p=104
ez persze nem az, amit te szeretnél, mert ez nem komplett lista, csak 6 db kiszemelt dolog.
a nem-tolakodó (unobtrusive) szkriptelésről sok helyen lehet olvasni, de hadd adjak linket 2 konkrét felhasználásra a kedvenc e-zinomból:
http://particletree.com/features/10-tips-to-a-better-form/
http://particletree.com/features/the-hows-and-whys-of-degradable-ajax/
Tasi
11

Webcredible

Jano · 2005. Dec. 15. (Cs), 16.10
Most ingyenesen elérhető egy könyv amiben csupa ilyen így csináld, így ne csináld jellegű dolgok vannak: Webcredible