Veröffentlicht 15. November 200618 j 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
16. November 200618 j 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
16. November 200618 j 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
18. November 200618 j 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
19. November 200618 j function test('Melodie'$s) { muss nur function test(id) { sein, wobei id die id bzw. der name deines elements ist!
19. November 200618 j 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
20. November 200618 j 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.