2016-03-22 4 views
-1

Wenn ich eine Option auswählen und auf die Schaltfläche klicken, möchte ich das Bild öffnen. Warum funktioniert das nicht?PHP onclick auf eine ausgewählte Option

<form action="#" method="post"> 
<select name="carlist"> 
    <option value="renault">Renault</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" /> 
</form> 

Es öffnet sich nur Bilder/JPG, wie der PHP-Code nicht funktioniert hat.

+0

type = "submit" anstelle der Schaltfläche? – user3253002

Antwort

1

Try this:

<form action="#" method="post"> 
<select id="carlist"> 
    <option value="renault">Renault</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/' + document.getElementById('carlist').value + '.jpg'" /> 
</form> 

Keine PHP überhaupt notwendig ist.

1

Sie scheinen verwirrt über die Reihenfolge der Ausführung von PHP und Javascript. Ihr <? PHP-Code? > wird ausgeführt, bevor Sie die Seite laden, daher sind keine $ _POST-Variablen definiert. Aus diesem Grund wird es zu einer leeren Zeichenfolge ausgewertet. Nur wenn Sie das Formular absenden, enthält $ _POST Ihre Formulardaten beim fortlaufenden Laden der Seite. Sie erhalten jedoch nie das Formular, weil 1) Sie keine Taste mit Typ = "senden" und 2) haben - selbst wenn Sie es getan hätten - würde es wahrscheinlich durch die Ausführung Ihres onclick-Javascript verhindert werden.

Um Ihr Problem zu lösen, sollten Sie entweder Javascript oder PHP verwenden, aber nicht beides.

Javascript-Lösung:

<select id="carlist"> 
    <option value="renault">Renault</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 
<input type="button" onclick="location.href='images/'+document.getElementById('carlist').value+'.jpg';"/> 

PHP-Lösung:

<?php if(isset($_POST["carlist"])) {header("Location: images/".$_POST["carlist"].".jpg");}?> 
<form action="#" method="post"> 
<select name="carlist"> 
    <option value="renault">Renault</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

<input type="submit" value="Show the car!"/> 
</form> 
0

Sie müssen Typ Schaltfläche ändern einzureichen. Weil Knopf nicht PHP-Code laufen lässt. Aber wenn Sie die Schaltfläche zum Senden nicht ändern möchten, müssen Sie Javascript hinzufügen, um den Prozess auszuführen. Dies ist der Code nach der Bearbeitung.

<form action="#" method="post"> 
<select name="carlist"> 
<option value="renault">Renault</option> 
<option value="saab">Saab</option> 
<option value="mercedes">Mercedes</option> 
<option value="audi">Audi</option> 
</select> 

<input name="submit" type="submit" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" /> 
</form> 
+0

Sie haben Recht, aber wenn ich den Typ auf submit ändere, muss ich etwas Javascript schreiben. –

+0

Wenn Sie etwas Javascript schreiben müssen, können Sie schreiben. –

+0

0

PHP ist eine serverseitige Sprache. Es bedeutet, dass Sie es nicht im clientseitigen Browser verwenden können. Eine browserseitige (clientseitige) Sprache ist JavaScript und Sie müssen sie für solche Dinge verwenden. PHP wird nur auf der Wiedergabeseite ausgeführt, wenn Ihre Seite gerendert wird $ _POST ['carlist'] ist leer (ist nicht gesetzt). Da Sie das Carlisten-Attribut nicht von der vorherigen Seite gesendet haben, senden Sie ein Formular mit der Carlisten-Eingabe. Wie jayms sagte, können Sie eine ID für Ihr Select-Tag festlegen und es mit JavaScript-Code wie document.getElementbyId erhalten.