Übergabe von einem Dropdownfeld in ein Inputfeld

Es ist euch bewußt, dass ich aus dem Popup Daten in die Hauptseite bringen möchte?
@ Sempervivum, dein Vorschlag sieht für mich so aus, das ich die Daten aus der Hauptseite ins Popup übernehme. Aber genau das möchte ich nicht. Ich muss von dem Popup in die Hauptseite.
Ja, das ist mir bewusst und das tut mein Code:
Code:
                var popup = window.open("popup.html");
                popup.addEventListener("beforeunload", function () {
                    val1 = this.document.getElementById("input1").value;
                    val2 = this.document.getElementById("input2").value;
                });
Die Variable popup ist das Popupfenster. Wenn ich darauf einen Eventlistener registriere, ist "this" das Popupfenster.
Code:
val1 = this.document.getElementById("input1").value;
holt den Wert des Eingabefeldes #input1 aus dem Popup und speichert ihn in der Variablen "val1" in der Hauptseite.
Man kann zwar von der Hauptseite aus auf das Popup zugreifen, jedoch nicht umgekehrt. Die Übertragung von Werten aus dem Popup in die Hauptseite ist nur möglich, wenn man sie von der Hauptseite aus abholt.
 
PS: Man lernt nie aus, und die letzte Aussage muss ich korrigieren: Man kann sehr wohl vom Popup aus auf die öffnende Seite zugreifen und zwar über window.opener.
 
Also, ich habe deinen Code getestet. Leider kappt das nicht.

Es werden mir meine Daten auch in der Auswahl nicht mehr angezeigt.

Dieser Code beinhaltet eine Artikelzeile (halt wie in einer Rechnung, Menge, Artikel Artikelnummer, Preis) und den Button für die Artikelauswahl: (darin nun dein Button usw.)
HTML:
<tr>
<td class=""><input type="text" name="menge01" id="menge" value="<?php echo $val1; ?>" size="4" onblur="form_calculate01();"  /></td>
<td class=""><input type="text" name="artikelnummer01" id="artikelnummer" value="<?php echo $val2; ?>" size="10"/></td>
<td class=""><textarea cols="30" rows="3" id="artikel" name="artikel01" class="artikel01"><?php echo $val3; ?></textarea></td>
<td class=""><a href="artikelauswahl.php" target="popup-beispiel" onClick="javascript:open('','popup-beispiel','resizable=no,menubar=no,width=700,height=400')">Artikel</a>
<button id="popupbutton">Artikel</button>    
        <script>
            var val1, val2, val3, val4;
            document.getElementById("popupbutton").addEventListener("click", function () {
                var popup = window.open("artikelauswahl.php");
                popup.addEventListener("beforeunload", function () {
                    val1 = this.document.getElementById("menge").value;
                    val2 = this.document.getElementById("artikelnummer").value;
                    val3 = this.document.getElementById("artikel").value;
                    val4 = this.document.getElementById("einzelpreis").value;
                });
            });
        </script></td>
<td class="" align="right"><input type="text" id="einzelpreis" name="einzelpreis01" value="<?php echo $val4; ?>" size="10"/></td>
<td class="" align="right"><input type="text" id="gesamtpreis01" name="gesamtpreis01" value="" size="10"/></td>
<td class="design"><input type="text" id="zustand" name="artikelnotiz01" value=""/></td>
</tr>

Leider öffnet sich so auch kein Popup, sondern eine neue Seite. Dies wäre mir grundlegend aber auch egal.

Hier der Code in der Auswahlseite. Diese beinhaltet im Ganzen 3 Dropdownfelder um den Artikel auszuwählen. Der Artikel wird dann in folgender Tabelle angezeigt, diese soll dann in die Hauptseite übertragen werden (Menge, Artikelnummer, Artikel und Preis)

HTML:
<form name="auswahl" method="post" action="">
<table style="text-align: left; width: 100%;" border="1" cellpadding="0"cellspacing="0">
<tbody><tr>
<td>Nummer</td> 
<td>Kategorie</td>     
<td>Unterkategorie</td>     
<td>Menge</td>
<td>Artikelnr</td> 
<td>Artikel</td>     
<td>Preis</td>
<td>Kurzartikel</td>
</tr><tr>

<td><?php echo $nummer; ?></td> 
<td><?php echo $kategorie; ?></td>     
<td><?php echo $unterkategorie; ?></td> 

<td><input type="text" name="menge01" id="menge" value="<?php echo $menge; ?>" size="4"/></td>
<td><input type="text" name="artikelnummer01" id="artikelnummer" value="<?php echo $artikelnr; ?>" size="10"/></td>
<td><textarea cols="30" rows="3" id="artikel" name="artikel01" class="artikel01"><?php echo $artikel; ?></textarea></td>
<td><input type="text" id="einzelpreis" name="einzelpreis01" value="<?php echo $preis; ?>" size="10"/></td>

<td><?php echo $kurzartikel; ?></td>
</tbody></table>
<button onclick="window.close()">Fertig</button>

</form>

Seit dem Einbau wird mir hier mein Artikel aber nicht mehr angezeigt.

PS: Die Artikelanzeige klappt wieder soweit. Da ist wohl ein anderer Fehler drin. Aber die Übergabe klappt trotzdem nicht.
 
Zuletzt bearbeitet:
Poste mal die URL deiner Seite, damit man es sich mit den Developertools ansehen kann.
Ich kann nicht erkennnen, wo Du die Variablen var1 ... var4 benutzt. Du weist ihnen Werte zu, aber dann passiert nichts damit.
 
URL posten ist mal eben nicht so einfach. Ich schau mal wie ich das möglich machen kann.

Die Nutzung der Variablen ist in unmittelbarer Nähe des Popup-Code von dir, da sollen die mittels echo ausgegeben werden. Der Inhalt dieser Variablen liegt in dem Auswahlfenster.

Vielleicht muss ich ja die Variablennutzung hinter den Popup-Button stecken.

Sobald ich eine zugangsfreie Variante habe, kann ich den Link mal posten.
 
Ah so, ich hatte es schon vermutet, aber so kann das nicht funktionieren: PHP wird ja serverseitig vor dem Laden der Seite ausgeführt. Die Aktionen window.open, Ausfüllen des Formulars auf der neuen Seite, Schließen der neuen Seite und Holen der Werte in die Variablen finden jedoch statt, nachdem die Seite geladen wurde. Und Javascript-Variablen sind nicht ohne weiteres in PHP verfügbar. Du musst die Werte mit Javascript in die richtigen Felder übertragen:
Code:
                popup.addEventListener("beforeunload", function () {
                    var menge = this.document.getElementById("menge").value;
                    var artikelnummer = this.document.getElementById("artikelnummer").value;
                    var artikel = this.document.getElementById("artikel").value;
                    var einzelpreis = this.document.getElementById("einzelpreis").value;
                    document.getElementById("menge").value = menge;
                    // usw.
                });
 
Zuletzt bearbeitet:
Leider öffnet sich so auch kein Popup, sondern eine neue Seite. Dies wäre mir grundlegend aber auch egal.
Das wird durch den Browser festgelegt, was beim window.open() passiert:
https://wiki.selfhtml.org/wiki/JavaScript/Window/open
Zudem setzen immer mehr Browser auf Tabbed Browsing, d.h. das Darstellen von mehreren Webseiten in einem Browserfenster, die der Benutzer in einer Leiste als Registerkarten anwählen kann. Sie müssen damit rechnen, dass window.open() in solchen Browsern lediglich eine neue Registerkarte öffnet - oder die Zielseite kurzerhand im selben Karteireiter angezeigt wird. In solchen Fällen sind Ihre Angaben zum Aussehen des neuen Fensters natürlich wirkungslos.

Sie sollten sich also nicht darauf verlassen, dass wirklich ein neues Fenster mit dem gewünschten Aussehen geöffnet wird.
Empfehlung: Heute ist es üblicher eine Popup-Box , evtl. mit dem dialog-Element, als ein neues Fenster zu öffnen.
https://wiki.selfhtml.org/wiki/Popup
 
@Sempervivum,
ich muss da noch mal stören.
Ich habe dies hier in meiner Hauptseite, an der Stelle wo sich der erste Popup-Button befindet (ich bräuchte dann ja 10):
HTML:
        <script>
            document.getElementById("popupbutton").addEventListener("click", function () {
                var popup = window.open("artikelauswahl.php");
                                popup.addEventListener("beforeunload", function () {
                    var menge = this.document.getElementById('menge').value;
                    var artikelnummer = this.document.getElementById('artikelnummer').value;
                    var artikel = this.document.getElementById('artikel').value;
                    var einzelpreis = this.document.getElementById('einzelpreis').value;
                    var gesamtpreis = this.document.getElementById('gesamtpreis').value;
                    document.getElementById('menge01').value = menge;
                    document.getElementById('artikelnummer01').value = artikelnummer;
                    document.getElementById('artikel01').value = artikel;
                    document.getElementById('einzelpreis01').value = einzelpreis;
                    document.getElementById('gesamtpreis01').value = gesamtpreis;
                });
            });
        </script>

Mein Popup beinhaltet:
HTML:
<table style="text-align: left; width: 100%;" border="1" cellpadding="0"cellspacing="0">
<tbody><tr>
<td>Nummer</td>   
<td>Kategorie</td>       
<td>Unterkategorie</td>       
<td>Menge</td>
<td>Artikelnr</td>   
<td>Artikel</td>       
<td>Preis</td>
<td>Kurzartikel</td>
</tr><tr>
<form name="artikel4" method="post" action="">

<td><?php echo $nummer; ?></td>   
<td><?php echo $kategorie; ?></td>       
<td><?php echo $unterkategorie; ?></td>       
<td>        <input id="menge" value="<?php echo $menge; ?>" size="4"/></td>
<td>    <input id="artikelnummer" value="<?php echo $artikelnummer; ?>" size="10"/></td>   
<td>        <input id="artikel" value="<?php echo $artikel; ?>"/></td>       
<td>        <input id="einzelpreis" value="<?php echo $preis; ?>" size="10"/></td>
<td><?php echo $kurzartikel; ?></td>

</tr></tbody></table><button onclick="window.close()">Fertig</button>
</form>

Das Popup öffnet sich, ich kann meine Auswahl treffen, aber wenn ich auf Fertig klicke, dann schließt sich zwar das Popup, aber es werden keine Daten übertragen.

Und so nebenbei habe ich mal eine andere Frage. Ich habe 3 Auswahlfelder (Kategorie, Unterkategorie, Artikel) und das auswählen klappt soweit auch super. Allerdings werden bei der Artikelauswahl nur die Daten übertragen, wenn der Artikel aus Zahlen besteht. Sind Buchstaben dabei, dann werden mir keine Daten in meine Inputfelder übertragen. Ich weiß nur nicht warum.
Dies ist mein Auswahlfeld "Artikel":
HTML:
<select name="kurzartikel" onchange="this.form.submit();">
<option value="">artikel</option>
<?php
include ("config/config.php");
$Connect = mysqli_connect($server, $user, $pass);
@mysqli_select_db($Connect, "$dbase");
$result =  mysqli_query($Connect, "SELECT kurzartikel FROM $tabelle1a WHERE unterkategorie='$unterkategorie'");
while($row = mysqli_fetch_row($result))
    echo "<option value=\"$row[0]\">$row[0]</option>";
mysqli_free_result( $result );
print_r($_POST);
$kurzartikel=$_POST['kurzartikel'];   
?></select></form>
</td>

Danke schon mal
 
Wenn ich mir den Code ansehe, kann ich leider keinen Fehler erkennen. Das beste wäre, wenn man sich das live ansehen könnte. Ist die Seite online? Dann poste die URL.

Auch bei der zweiten Frage kann ich den Fehler nicht erkennen. Vielleicht könntest Du mit var_dump überprüfen, was das Ergebnis der Datenbankabfrage ist.
 
Zurück