Оператор переключения PHP не распознает кнопку отправки

У меня есть страница, которая получает информацию из базы данных и должна обновлять информацию при ее отправке. Я использую оператор switch, но он не распознает значение кнопки submit. Коды форм находятся в файле "personal_change_form.inc". Коды следующие. Заранее благодарю за любую помощь. personal_change.php

<?php
/* Name:    personal_change.php
 * Desc:    This page updates information if there is a change
 */
 include("misc.inc");

 session_start();
 if(@$_SESSION['auth']  != "yes")
    {
        header("Location:user_login.php");
        exit();
    }

     switch ( $_POST['button'])
{
    case "Update":

$connect    =   mysqli_connect($host,$user,$password,$database)
                or die("Couldn't connect to database.");
 $sql   =   "SELECT * FROM data WHERE loginName='{$_SESSION['logname']}'";
 $result =  mysqli_query($connect,$sql)
        or die ("Couldn't execute query.");
 $row=  mysqli_fetch_assoc($result);
 extract($row);
if($value != $_POST['value'])
    {
    $sql = "INSERT INTO data (loginName,createDate,password,                                                                    firstName,lastName,title,gender,course,sector,experience,qualific,location,mobile,email) VALUES                                     ('$_POST[loginName]',
                    '',
                    SHA1('$_POST[password]'),
                    '$_POST[firstName]',
                    '$_POST[lastName]',
                    '$_POST[Title]',
                    '$_POST[Gender]',
                    '$_POST[course]',
                    '$_POST[Sector]',
                    '$_POST[experience]',
                    '$_POST[qualific]',
                    '$_POST[Location]',
                    '$_POST[mobile]',
                    '$_POST[email]')";


                    mysqli_query($connect,$sql)
    or die("Couldn't execute query");
    header("location:personal.php");


    }

    break;
    default:
    include("personal_change_form.inc");
}


 ?>

personal_change_form.inc

<?php
/*  Program:    personal_change_form.inc
 *  Desc:       This program displays information from the database 
 *              and allow user to change it.
 */
 include("misc.inc");
$personal_change_array  =   array ("loginName"  =>  "User Name:",
                    "password"  =>  "Password:",
                    "firstName" =>  "First Name:",
                    "lastName"  =>  "Last Name:",
                    "title"     =>  "Title:",
                    "gender"    =>  "Gender:",
                    "course"    =>  "Courses offered:",
                    "sector"    =>  "Industry sector:",
                    "experience"=>  "Trainer experience(years):",
                    "qualific"  =>  "Academic qualifications:",
                    "location"  =>  "Location\City:",
                    "mobile"    =>  "Mobile:",
                    "email"     =>  "E-mail:");
?>
<html>
<head><title>Update Information</title></head>
<style type="text/css">
<!--
    label {font-weight:bold; float:left; width:27%;
    margin-right: .5em; text-align:right;}
            fieldset {border:2px solid #000000 }
    legend {font-weight:bold; font-size: 1.2em;
            margin-bottom: 20px; text-align:center; padding-left:20px; padding-right:20px;border: 1px solid #888;
  border-right: 1px solid #666;
  border-bottom: 1px solid #666;
  padding: 5px;
   background-color: rgba(255,102,0,1.00)}
    h3  {text-align: center; margin: 2em;}
                #wrapper {margin:0; padding: 0;}
                #login  {position: absolute; left:0; width:40%;
                        padding: 1em 0; }
                #reg {position:absolute; left:40%; width:60%;
                        padding: 1em 0;}
                #field {padding-bottom: .5em}
                .menu   {margin-left:150px; padding-bottom: .5em; width:204px}
                .errors {font-weight: bold; font-size:12px font-style:italic;
                        font-size:90%; color: red; margin-top:0; text-align:center}
    -->
    </style>
<body>
        <form action="<?php $_SERVER['PHP_SELF']?>"
        method="POST">
        <fieldset><legend>UPDATE INFORMATION</legend>

<?php


echo    "<table  style='width:20%; left:25%; position:absolute; font-weight:bold' cellspacing='28.5'>\n";
     foreach($personal_change_array as $field=>$value)
 {
      echo "<tr><td>$value</td></tr>";
 }
 echo   "</table>";
 echo   "<table  style='width:10%; left:25%; position:relative; font-weight:bold' cellspacing='15'>\n";
 $connect   =   mysqli_connect($host,$user,$password,$database)
                or die("Couldn't connect to database.");
 $sql   =   "SELECT * FROM data WHERE loginName='{$_SESSION['logname']}'";
 $result =  mysqli_query($connect,$sql)
        or die ("Couldn't execute query.");
 $row=  mysqli_fetch_assoc($result);
foreach($row as $field => $value)
{
    if($field!="createDate")
    {
        if($field=="password")
        {
            $type='password';
        }
            else
            {
                $type='text';
            }

echo "<tr><td><input ' type='$type' value=$value></input></td></tr>";

    }
}
echo "</table>";
?>

    <input type="submit" name="button"
         style='margin-left:40%; margin-bottom:.5em; margin-top:30px' value="Update" />

</fieldset></form>
</body>
</html>

1 ответ

Имена кнопок не передаются, поэтому значение php $_POST['submit'] не установлено. Как и в isset($_POST['submit']), значение равно false.

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

например, вы можете использовать

<form id="my_awesome_form" action="<?php $_SERVER['PHP_SELF']?>"
        method="POST">
</form>
    <input id="submit_button" type="submit" name="button"
         style='margin-left:40%; margin-bottom:.5em; margin-top:30px' value="Update" />
    <script>
        var buttonVal = $('#submit_button').val();

        var form = $('#my_awesome_form').serialize();
    form.push({button: buttonVal});
      form.find('select:first').change( function() {
        $.ajax( {
          type: "POST",
          url: form.attr( 'action' ),
          data: form.serialize(),
          success: function( response ) {
            console.log( response );
          }
        } );
      } );
</script>

Теперь используйте вызов ajax для отправки формы и отправки buttonVal с данными на вызов ajax

Другие вопросы по тегам