Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Per Javascript neu Fenster offnen und Daten übergeben

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

ich brauche dringend Hilfe und hoffe, dass mir jemand helfen kann.

Auf meine Site werden mehrere Blocksätze (jeweils mit Bild, Text und Telefon) angezeigt. Jetzt habe ich vor noch einem Button einzubauen, über welchen ein Lied abgespielt sein soll.


...
$PrivatenAnzeigen_query=mysql_query($select);

for($s=1; $s<=mysql_num_rows($PrivatenAnzeigen_query); $s++){
$PrivatenAnzeigen[$s]=mysql_fetch_array($PrivatenAnzeigen_query);
$status=$PrivatenAnzeigen[$s][15];
if($status=="active"){
echo "<td width=25% id='haupt5'>";
if(!empty($PrivatenAnzeigen[$s]['Bild'])){
echo "<p class='bildausrichtung' > <a href=\"".
($PrivatenAnzeigen[$s]['Bild'])."\" target=\"_blank\"><img src=\"".
($PrivatenAnzeigen[$s]['Bild'])."\" alt=\"\" galleryimg='no' width=70px ></a></p>\n";

}
if(!empty($PrivatenAnzeigen[$s]['Text'])){
echo "<p><b> Gratulieren: </b>".nl2br($PrivatenAnzeigen[$s]['Text'])."</p>\n";
}
if(!empty($PrivatenAnzeigen[$s]['Musik'])){

echo "<input type=\"hidden\" name=\"Melodie\" value=".$PrivatenAnzeigen[$s]['Musik'].">";
echo "<input type=\"button\" value=\"Musik\" onClick=\"javascript:test()\">";


}
if(($s%4)==0){
echo "</td></tr>";
}
echo "</td>";

}
}
[/PHP]

Wenn ich nur ein Datensatz im meinem DB habe funktioniert alles prima, wird neues Fenster geöffnet und Lied abgespielt, genau wie ich mir vorgestellt hatte, aber wenn ich ein zweite Datensatz in DB eintrage, neues Fenster wird geöffnet, aber kein Lied wird abgespielt und bei Liedausgabe steht undefined.

[PHP]
<script language="javascript">
function test()

{
var texteingabe;
if(document.eingabe.Melodie.value==""){
alert( "Fehler" );
}

else {
texteingabe=document.eingabe.Melodie.value;
alert( "Herzlich Willkommen " );
}
var Ausgabe = '<html>';
Ausgabe += '<head> <title>Das Lied</title> </head>';
Ausgabe += '<body>';
Ausgabe += '<embed name="midi" src='+ texteingabe +' loop="1" autostart=true hidden=true>';
Ausgabe += '<h2 align="center"> "Ich bin ein Fenster."</h2>';
Ausgabe += '<font color="red"> :marine </font>';
Ausgabe += '</body></html>';

var Fenster = window.open('','Fenstername','scrollbars,width=400,height=300');
Fenster.document.open("text/html");
Fenster.document.write( Ausgabe );
Fenster.document.write( texteingabe );
Fenster.document.close();

}

</script>

Was soll ich beachten?

MfG max

Du hast


echo "<input type=\"hidden\" name=\"Melodie\" value=".$PrivatenAnzeigen[$s]['Musik'].">";          

Bei einem Datensatz geht das, denn dann gibt es nur einmal den <hidden> mit dem namen "Melodie"

Bei zwei und Datensätzen gibt es den <hidden> mit dem Namen "Melodie" zwei und mehrfach. Da weiss Dein Skript natürlich nicht mehr welcher gemeint ist.

Daswegen kommt dann die "undefined" Meldung

Achso hehe. Ne Lösung:

Du solltest jedem <hidden> Melodie noch die ID des Datensatzen anhängen.


echo "<input type=\"hidden\" name=\"Melodie".$DATENSATZID."\" value=".$PrivatenAnzeigen[$s]['Musik'].">";          

Und beim Aufruf

echo "<input type=\"button\" value=\"Musik\" onClick=\"javascript:test(".$DATENSATZID.")\">"; 

die ID mit an Deine Funktion test(id) übergeben. Dann sollte das gut klappen

hallo,

Ich habe jetzt die Änderungen gemacht, aber funktioniert immer noch nicht.


.....
function test('Melodie'$s)

{

......

if(!empty($PrivatenAnzeigen[$s]['Musik'])){
echo "<input type=\"hidden\" name=\"Melodie".$s."\"
value=".$PrivatenAnzeigen[$s]['Musik'].">";
echo "<input type=\"button\" value=\"Musik\" onClick=\"javascript:test(Melodie".$s.")\">";
}
[/PHP]

Ich weis auch warum, es ist doch nicht gleich:

[PHP]"Melodie".$s."='Melodie'$s

Wie kann PHP und Javascript bezogen auf mein Beispiel mit einander verbinden?

MfG max


function test('Melodie'$s)


{ 

muss nur

function test(id)


{ 

sein, wobei id die id bzw. der name deines elements ist!

hallo forTeesSake

sein, wobei id die id bzw. der name deines elements ist!

Ja, das ist mir auch klar, aber, wenn ich in meinem DB zum Beispiel 100 Einträge haben wurde, ich habe jetzt so versucht:


for (var zahl=0; zahl<= 100; zahl++){
var Melodiezahl='Melodie' + zahl;
document.write(Melodiezahl+",");//nur zum testen
function test(Melodiezahl){
var texteingabe;
if(document.eingabe.elements['Melodie' + zahl].value==""){
alert( "Fehler" );
}

else {
texteingabe=document.eingabe.elements['Melodie' + zahl].value;
alert( "Herzlich Willkommen " );
}

....

if(!empty($PrivatenAnzeigen[$s]['Musik'])){
echo "<input type=\"hidden\" name=\"Melodie".$s."\"
value=".$PrivatenAnzeigen[$s]['Musik'].">";
echo "<input type=\"button\" value=\"Musik\" onClick=\"javascript:test(Melodie".$s.")\">";

[/PHP]

Kommt Fehler, dass

[PHP]document.eingabe.elements[...].value

ist Null oder kein Objekt

Eigentlich so ist fast richtig, weil, wenn ich

texteingabe=document.eingabe.elements['Melodie1'].value;

schreibe, dann funktioniert es, aber nur mit einem bestimmtem Datensatz.

Bei dem Test wird Melodie0,Melodie1…. ausgegeben, aber bei elements wird falsch gelesen.

MfG max

Hi,

also was gar nicht richtig ist, ist, dass du in deiner for-Schleife 100 mal eine Funktion test() schreibst.

Die function test() muss nur einmal geschrieben werden. Nimm diese aus der for-Schleife raus.

Der Fehler an sich ist aber: Du übergibst im PHP

javascript:test(Melodie".$s.");

also z.b. javascript:test(Melodie1)

Im Javascript greifst Du aber auf

function test(Melodiezahl){

...

...

if(document.eingabe.elements['Melodie' + zahl].value==""){

Das stimmt natürlich nicht, da "zahl" dein Schleifenzählewert ist.

Es muss

if(document.eingabe.elements[Melodiezahl].value==""){

heissen.

Viel Erfolg

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.