Отправить onChange в PHP

#php

#php

Вопрос:

Как мне правильно обновить страницу в PHP с помощью элемента «select»?

В моем домашнем задании у меня есть 2 списка со списком 1) тип транспортного средства и 2) специфичные для этого типа цвета Каждый раз, когда я выбираю тип, мне нужно изменить привязанные цвета.

Кажется, что onchange="this.form.submit()" не работает!

это мой код:

 <?php
include_once ("config.php");

$link = mysql_connect($host,$user,$pass) or die("Could not connect : " . mysql_error());
mysql_select_db($db_name) or die("Could not select database");
?>
<html>
<head>
</head>
<body>
<?php
$menu_type=$_POST['menu_type'];
echo 'menu_type='.$menu_type.'<br/>';
echo 'empty='.(bool)empty($menu_type).'<br/>';
echo '-1='.(bool)($menu_type==-1);
?>
<table>
    <form name="myform" action="ajoute.php" method="POST" >
    <tr>
        <td>Matricule</td>
        <td><input type="text" value="" style="width:150px;" name="Matricule"></td>
    </tr>
    <tr>
        <td>Vehicule</td>
        <td>Couleur</td>
    </tr>
    <tr>
        <td><select name="menu_type" style="width:150px;" onchange="this.form.submit()">
        <option value="-1">Select voiture type</option>
            <?php
            $resType = mysql_query("SELECT * FROM type_vehicule") or die(mysql_error()); 
            for ($i=0; $i<mysql_num_rows($resType); $i  )
            {
                $row=mysql_fetch_array($resType);
                echo "<option value = ".$row['ID'].">".$row['nom']."</option>";

            }?>
        </select>       
        </td>
        <td>
        <?php
        echo "empty = ".(bool)empty($menu_type)."; $menu_type = ".$menu_type;
        ?>
        <select name="menu_couleur" size="1" style="width:150px;">

        <?php       

        if (empty($menu_type) || $menu_type == -1) 
        {
            echo "<option value='-1'>Select voiture type</option>";
        }
        else
        {
            $type=(int)$menu_type;
            $result=mysql_query("SELECT c.Id, c.Couleur FROM couleur c inner join
            type_couleur tc on c.id=tc.Couleur_ID where tc.type_id=".$type);
            while ($row = mysql_fetch_array($result)) { 
            echo "<option value=".$row['ID'].">".$row['couleur']."</option>";  
            } 
    } 
?>
        </select>
        </td>
    </tr>
    <tr>
        <td align="right" colspan=2><input type="submit" name="submit" value="Valide"></td>
    </tr>
    </form>
</table>

<?php

mysql_free_result($resType);
mysql_close($link);
?>
</body>
</html>
  

Комментарии:

1. Есть ли ошибка javascript? (Проверьте с помощью firebug)

2. Onchange кажется правильным и работает здесь, в противном случае попробуйте getElementById(‘formidtarget’).submit(); с идентификатором, добавленным в <form>, я также заметил, что у вас нет механизма для повторного выбора значения в «menu_type» при повторной загрузке страницы?

Ответ №1:

Проблема в том, что вы назвали свою кнопку отправки как submit (т. е. name =»отправить»). Итак, когда вы выполняете функцию this.form.submit(), она пытается выполнить функцию для html-элемента.

В консоли Chrome javascrip я получаю сообщение об ошибке:

document.formname.submit не является функцией Неперехваченная ошибка типа: свойство ‘submit’ элемента object #HtmlForm не является функцией

Сделал поиск в Google и нашел эту страницу, которая все объясняла: http://eee94180.blogspot.com/2008/09/javascript-formsubmit-is-not-function.html

Чтобы устранить вашу проблему, просто удалите name=»submit» в вашей кнопке отправки или назовите ее как-нибудь иначе, например name =»submitButton».

Комментарии:

1. могу ли я провести различие в POST между нажатием кнопки Validate (отправить) и выпадающими списками onChange?

Ответ №2:

Прежде всего, вы написали форму внутри тега table, что неверно. это должно быть так

 <form>
<table>
...
</table>
</form>
  

Получите выходные данные в формате HTML и посмотрите, не появятся ли какие-либо ошибки javascript в консоли для упрощения идентификации. Также проверьте название кнопки отправки.