У меня есть страница, которая получает информацию из базы данных и должна обновлять информацию при ее отправке. Я использую оператор 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>
<?phpecho "<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>
Имена кнопок не передаются, поэтому значение 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
Других решений пока нет …