2016-06-09 9 views
1

Ich möchte PHP-Funktion im Dropdown-Menü von Onchange-Ereignis aufrufen. Ich möchte mit einer der Optionen auswählen, die entsprechenden Werte werden aus der Datenbank gelesen und sind in einem anderen Dropdown-Menü aufgelistet.So rufen Sie die PHP-Funktion im Dropdown-Menü auf?

Dies ist mycode:

<?php 

function read() { 

mysql_connect("localhost", "username", "password"); 

mysql_select_db("database_name"); 

$sql = mysql_query("SELECT name FROM table"); 

if (mysql_num_rows($sql)) { 
    $select = '<select name="select">'; 
    while ($rs = mysql_fetch_array($sql)) { 
     $select.='<option value="' . '">' . $rs['name'] . '</option>'; 
    } 
} 
$select.='</select>'; 
echo $select; 
} 
?> 

    <!--html code --> 

    <select onchange="document.write('<?php read(); ?>');"> 
    <option value="0">a</option> 
    <option value="1">b</option> 
    <option value="2">c</option> 
    </select> 

Dieser Code Ausgabe: enter image description here

Meine gewünschte Ausgabe: enter image description here

Wie kann ich meine gewünschte Ausgabe zu bekommen? Dank

+2

Sie verwenden AJAX, um ein Skript aufzurufen und die Daten zurück zu erhalten. –

+1

Sie müssen mit dem Dropdown mit Javascript interagieren. PHP macht all seine Arbeit, bevor die Seite angezeigt wird und funktioniert nicht auf einer gerenderten Seite ohne die Hilfe einer Front-End-Skriptsprache, wie z. B. Javascript. –

+0

PHP läuft auf dem Server und kann nicht von JS-Code "aufgerufen" werden. Sie können eine Ajax-Anfrage machen, um ein PHP-Skript aufzurufen, aber das ruft keine PHP-Funktion auf. –

Antwort

1

einfach zu erklären:

PHP-Code ausgeführt wird vor der Seite in Ihrem Browser des Benutzers (Server-Seite) wiedergegeben wird.

Auf der anderen Seite wird Javascript auf der Client-Seite ausgeführt. Es bedeutet, dass PHP bereits die Ausführung beendet hat.

Wenn Sie eine PHP-Funktion wollen nennen, Sie eine weitere Anfrage zum Server zu machen.

Um dies "on the fly" zu tun, müssen Sie AJAX verwenden, wie von @ Jon in den Kommentaren gemeint.

Hier ist ein Beispiel jQuery mit (nur eine JavaScript-Bibliothek, unsere Aufgabe zu vereinfachen):

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
<script type="text/javasript"> 

    //Listen to select 'onchange' event 
    $('select#your_select_id').change(function(){ 

     //Read selected value 
     var inputValue = $(this).val(); 

     //Make an ajax call 
     $.post('ajaxscript.php', { value: inputValue }, function(data){ 

      //The return of 'read' function will be accessible trough 'data' 

      //You may create DOM elements here 
      alert('Finnished'); 

     }); 

    }); 

</script> 

und hier ist unsere ajaxscript.php Inhalt:

<?php 
//Declare (or include) our function here 
//function read(){ ... } 

$value = $_POST['value']; //Selected option 
//... 

echo read(); 
1

Hallo Sie können Verwenden Sie auch javascriptformsubmit in diesem und rufen Sie eine phpfunction

<?php 
function read() { 
mysql_connect("localhost", "username", "password"); 
mysql_select_db("database_name"); 
$sql = mysql_query("SELECT name FROM table"); 
if (mysql_num_rows($sql)) { 
$select = '<select name="select">'; 
while ($rs = mysql_fetch_array($sql)) { 
$select.='<option value="' . '">' . $rs['name'] . '</option>'; 
} 
} 
$select.='</select>'; 
echo $select; 
} 
if (isset($_POST['value'])) { 
    read($_POST['value']); 
} 
    ?> 
    <form method="POST"> 
<select name="value" onchange="this.form.submit()"> 
<option value="0">a</option> 
<option value="1">b</option> 
<option value="2">c</option> 
</select> 
</form> 
+0

Ich teste das und arbeitete aber ist es logisch wahr (Formular senden)? –

Verwandte Themen