Zum Inhalt springen

Per Javascript neu Fenster offnen und Daten übergeben


madmax00

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...