2017-05-22 7 views
0

Ich möchte eine Funktion in PHP onchange in select von HTML, wie kann dies getan werden?Aufruf PHP-Funktion Onchange auf Javascript

HTML-Code

<div class="col-sm-4 form-group"> 
    <label for="c_city">City</label> 
    <select class="form-control" id="c_city" onchange="<?php getArea(); ?>"> 
     <option value="">Select City Name</option> 
     <!--populate value using php--> 
     <?php 
      $stmt ="SELECT * FROM Cities"; 
      foreach ($con->query($stmt) as $row) { 
     ?> 
     <option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option> 
     <?php 
      } 
     ?> 
    </select> 
</div> 

PHP-Funktionen Page

function getArea() 
{ 
    if(isset($_GET['c_city'])) 
    { 
     $c_city = $_GET['c_city']; 
     echo $c_city; 
    } 
} 
+3

Verwenden Sie jquery 'ajax()' hier –

+0

Sie können dies nicht tun, PHP ist Server-Seite, JS-Client-Seite ausgeführt, so dass Ihre JS eine Anfrage an Ihren Server, den Server-Aufruf senden müssen die Funktion und die Antwort auf Ihre JS, AJAX ist Ihr Freund hier, http://api.jquery.com/jquery.ajax/ Wenn Sie jquery verwenden – Bast

+0

Zuerst müssen Sie möglicherweise über den Unterschied von Server-Seite und Client lernen -side: https://teamtreehouse.com/library/build-a-simple-php-application/getting-started-with-php/serverside-versus-clientside-2 –

Antwort

0

Sie können versuchen, AJAX zu verwenden, um das PHP-Skript aufzurufen und die Ergebnisse zurück zu Javascript zu erhalten.

Zum Beispiel in Ihre HTML-Seite:

<div class="col-sm-4 form-group"> 
    <label for="c_city">City</label> 
    <select class="form-control" id="c_city" onchange="getArea()"> 
     <option value="">Select City Name</option> 
     <!--populate value using php--> 
     <?php 
      $stmt ="SELECT * FROM Cities"; 
      foreach ($con->query($stmt) as $row) { 
     ?> 
     <option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option> 
     <?php 
      } 
     ?> 
    </select> 
</div> 

<script> 
function getArea(){ 
    var c_city = $('#c_city').val(); 
    $.ajax({ 
      type: 'POST', 
      url: "get_area.php", 
      data: {c_city:c_city}, 
      success: function(result){ 
       //do something here with return value like alert 
       alert(result) 
      } 
    }) 
} 
</script> 

Dann in Ihrem PHP-Skript Sie den Wert manipulieren können Sie von Javascript erhalten

if(isset($_POST['c_city'])) 
    { 
     $c_city = $_POST['c_city']; 
     echo $c_city; 
    } 

Lassen Sie mich wissen, ob es hilft oder wenn Sie eine finden Problem

+0

Vielen Dank! Es hat funktioniert :) – NewDeveloper

+0

Ich habe zwei Kombinationsfelder (Stadt & Gebiet) in einem Registrierungsformular, sie lesen aus der Datenbank, sie sind voneinander abhängig, wenn eine bestimmte Stadt ausgewählt wird, dann ist das andere Kombinationsfeld mit all seinen Bereichen gefüllt , ist mein Code in Ordnung oder gibt es einen besseren Weg? – NewDeveloper

+0

@NewDeveloper, das kann funktionieren. Sie benötigen Ajax, um das zweite Kombinationsfeld zu füllen, wenn die Daten von PHP oder MySQL-Datenbank stammen –

0

Dies kann nicht durch diese Art und Weise durchgeführt werden, müssen Sie AJAX darauf. Deine Idee kann nicht funktionieren, weil die Onchange eine reservierte Funktion für Javascript ist, nicht für PHP. Wenn Sie Ihren Code ausführen, wird das getArea() - Echo bei der Auswahl nur in javascript umgewandelt, was dazu führt, dass nichts wie erwartet angezeigt wird. Was ich hier getan habe, war eine js-Funktion mit einem Ajax-Aufruf zu Ihrem PHP-Code, der Ihnen hilft, Ihren Bereich nach Belieben zu finden. Offensichtlich, wie mein Kommentar unten, ist es kein guter Weg, Bindungen in HTML-Code zu setzen, denn wenn der Code anfängt zu wachsen, wird die Wartung sehr kostspielig - um das zu lösen, habe ich on jquery function verwendet, die einen Listener an ein Objekt bindet, aber Sie können Verwenden Sie auch change.

Aber es ist wichtig zu analysieren, ob Sie wirklich Javascript dort benötigt. Wenn Sie nur den Wert eines Werts eingeben, wie Sie es vorschreiben, ist ein Formular einfacher.

+1

Tun oder nicht. Es gibt kein "Versuch". Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –

+0

Ok, Jay, ich werde das überprüfen, danke – calexandre

Verwandte Themen