js/php-konflikt

rotzbacke

Grünschnabel
Hi,
ich hab nen kleines Problem.
Ich habe eine php-Seite die an einer andere php-Seite Variablen überträgt, nun soll aber zusätzlich noch die Menustellung aus einem Formular mitübertragen werden. Das Problem ist nun, dass die Variablen und die Menustellung soweit auch übergeben werden, jedoch soll das nächste Fenster mit js geöffnet werden, also eine bestimmte Größe und einen bestimmten Namen bekommen.
Diese Funktion funktioniert auch, jedoch wenn ich denn Link nun in die Funktion einbaue und die Funktion in der Formaction aufrufe überträgt er lediglich die PHP-Variablen, jedoch nicht die mit $_Get['Variation1') abgefragte Menustellung aus dem Formular.

Hier mal mein js-script und das html-fromularscript:

<script language="JavaScript">
<!--
function senden()
{
document.Formular.submit();
}
function open_popup()
{
var url;
url = '../dir1/dir2.php?<?php echo $_GET['variation1']; ?>&mode=add&nr=<?php echo $nr; ?>&lang=<?php echo $lang; ?>'
win = window.open(url,'fenstername','toolbar=no,dependent=yes,hotkeys=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=400,height=280,screenx=600,screeny=640,left=400,top=250');
win.focus();
}
//-->
</script>

<form name="Formular" action="javascript:open_popup();" method="GET">
menu....
<a href="javascript:senden();"> buttonbild</a>
</form>
 
Zuletzt bearbeitet:
evtl Variablen Global machen?

evtl. loesst sich das Problem in dem du die Variablen in PHP Global machst,
d.h.

global $variablenname;

mfg

Bloody
 
Hallo,
ich habe den Teil aus dem Link:
<?php echo $_GET['variation1']; ?>

in

<?php $variable=$_GET['variation1']; global $variable; echo $variable; ?>

geändert

...

das funktioniert nicht...
Ich habe das Gefühl, dass js irgendwie mit einem Teil von $_GET['variation'] nicht klarkommt.

...
 
Hallo....

du hast bei Variation1 in der URL den Namen der Variablen vergessen... dort steht wird nur der Wert ausgegeben... da kann PHP natürlich diese Variable nicht finden.

Ich würd aber meinen, dass es am Einfachsten wäre, diese Variablen als versteckte <input>s ins Formular zu schreiben... diese Felder werden dann ja mit übermittelt....
 
das ist nicht wichtig...
wenn ich

var= <?php $variable=$_GET['variation1']; global $variable; echo $variable; ?>

hinschreiben würde, würde im enteffekt
var="variation1=menupunkt1" rauskommen
demzufolge ist das egal...
wenn es also funktionieren sollte und er die $_GET['variation1'] lesen kann müsste es funktionieren.
dass das js das vielleicht so nicht anerkennt ist ne andere sache, hab es ausprobiert...funktioniert auch so nicht.

ich werde das mit dem input mal ausprobieren...
 
Hi,
die Idee mit dem input ist gut...nur funktioniert die im moment noch nicht ganz

hier mal der code
Code:
function CheckAuswahl() {
 for(i=0;i<document.Formularname.Menuname.length;++i)
  if(document.Formularname.Menuname.options[i].selected == true)
   {
   document.Formularname.Inputname.value = document.Formularname.Menuname.options[i].value;
	}
}

hab erst statt dem
Code:
{
   document.Formularname.Inputname.value = document.Formularname.Menuname.options[i].value;
	}

nen alert auf
Code:
document.Formularname.Menuname.options[i].value;
gelegt gehabt. hat auch super funktioniert.
Ich hab nicht soviel Ahnung von js.
Kann mir einer sagen, was ich bei der Zuweisung falsch gemacht habe?
...denn der input value bleibt leer.


thx...
 
document.Formularname.Menuname.length gibt dir nicht die Anzahl der <option>'s zurück. Diese erhältst du per
Code:
document.Formularname.Menuname.options.length
 
aha...
aber was soll ich den mit der Anzahl der Optionen?
Ich will den Wert der ausgewählten Option in nen hidden input packen.
... und wunder mich warum mein Zuweisung nicht funktioniert...kann mir das einer erklären?
Was ist an der Zuweisung falsch?

danke...
 
Hallo nochmal...
ich hab das ganze nochmal überdacht.
Ich hatte ja schon festgestellt, dass die Variablen alle prima übergeben werden, wenn ich den Link ohne das js in die formaction schreibe, ich denke, beim Öffnen der js-funktion gehen alle werte des formulars verloren, ausser die die serversided in die Seite geladen worden sind. Deswegen kommen zwar alle phpvariablen an, jedoch nicht die aus dem Menu des Formulars (und somit auch keine in einem inputvalue angegebenen Daten).
Jetzt meine Frage gibt es da eine Möglichkeit, dass er sich also beim öffnen des Links mit Seitengröße und Name nochmal die Formulardaten holt?
Wenn das nicht geht, gibt es die Möglichkeit, dass ein Fenster seine Größe und seinen Namen selbst auf z.Bsp. onLoad ändern kann?

danke für die Hilfe...
 
Was die <option>'s angeht... so wie ich das sehe, willst du doch in "CheckAuswahl()" die Optionen von "Menuname" durchgehen und dem Element "Inputname" den Wert der ausgewählten <option> in "Menuname" zuweisen. Oder was willst du sonst mit
Code:
document.Formularname.Menuname.length
in "CheckAuswahl()" ermitteln?

Wieauchimmer... ich würd auf das ganze Variablenumherschieben verzichten, das ganze lässt sich auch mit reinen HTML-Mitteln lösen.

Du musst ansich mit PHP nur versteckte Felder für mode/nr/lang in dasd Formular schreiben. Variation1 soll ja, soweit ich das verstehe, der Wert einer Auswahlliste sein... auch da wird ja schliesslich auch ohne JS das ausgewählte Feld übermittelt.

Javascript brauchst du da nur, um das Popup in dem gewünschten Aussehen zu öffnen... mehr nicht. Das Formular sendest du ganz normal in dieses Popup... fertig:)

Das könnte so aussehen:
Code:
<script language="JavaScript">
<!--
function open_popup()
{
win = window.open('','fenstername','width=400,height=280,left=400,top=250');
win.focus();
return true;
}
//-->
</script>

<!-- ... -->

<form action="../dir1/dir2.php" onsubmit="return open_popup()"target="fenstername">
 <input type="image"src="buttonbild.gif">
 <input type="hidden"name="mode"value="add">
 <input type="hidden"name="nr"value="<?php echo $nr; ?>">
 <input type="hidden"name="lang"value="<?php echo $lang; ?>">
 <select name="variation1">
  <option>menupunkt1</option>
  <option>menupunkt2</option>
  <option>menupunkt3</option>
 </select>
</form>

Du hast halt ganz normal die entsprechenden Elemente im Formular.
Als "target" gibst du im Formular das Zielfenster("fenstername") an.
Über den Eventhandler "onsubmit" rufst du dann die JS-Funktion auf, welche das Popup öffnet.
Dieses Popup hat den Namen "fenstername"... somit hat das Formular sein Zielfenster, wohin es gesendet werden kann. Eine URL brauchst du beim window.open() nicht angeben... da in diesem Fenster ja beim Senden die im Formular als "action" angegebene Seite aufgerufen wird.

Da du als Button eine Grafik haben willst, kannst du dort ein image-input verwenden, das hat gegenüber dem Link den Vorteil, dass das Formular auch ohne JS gesendet werden kann.

Ist beim Benutzer JS aus, wird ebenfalls ein neues Fenster geöffnet... da das Zielfenster des Formulars bis dahin nicht bekannt ist.
 

Neue Beiträge

Zurück