我有这个问题:当我提交表单时,页面只刷新而不是更新数据库..:ss
<?
error_reporting(0);
require('cdn/inc/header.php');
if(isset($_SESSION['user_data'])):
$user_level = $_SESSION['user_data']['level'];
switch($user_level):
case 1:
case 2:
case 3:
case 5:
case 8:
case 9:
$query = "SELECT * FROM testes WHERE ID = :ID";
$result = $db->prepare($query);
$result->execute(array(':ID' => $_REQUEST['ID']) );
if ($row = $result->fetch(PDO::FETCH_ASSOC)) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input id="Title" type="text" name="Title" value="<?php echo $row['Title']; ?>" required />
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="Submit" name="Submit" value="Salvar alterações" />
</form>
<?
}
elseif (isset($_POST['Submit'])) {
$ID = $_POST['ID'];
$Title = $_POST['Title'];
$queryupdate = "UPDATE testes SET Tile = :Title WHERE ID= :ID";
$q = $db->prepare($queryupdate);
$q->execute(array(":Title" => $Title, ":ID" => $ID));
header ('Location: edit.php');}
else {
$stmt = $db->query("SELECT * FROM testes ORDER BY STR_TO_DATE(Date, '%d-%m-%y') ASC, Title ASC);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);?>
<div id="user-bar" style="background: #C16011;">
<i>
<a href="add.php">Adicionar</a>
</i>
</div>
<br />
<br />
<?
foreach($data as $index => $row) {
$className = $index % 2 == 0 ? "class" : "class-1" ?>
<form action="" name="Inser" method="post">
<div class="selector">
<input name="selector[]" class="selector" type="checkbox" value="<?php echo $row['ID']; ?>" />
</div>
<a href="edit.php?ID=<? echo $row['ID']; ?>"><? echo $row['Title']; ?></a>
</div>
</h6>
</div>
<?
}
if(empty($data)){?>
<div class="no-data">
DATA/HORA: <b><?echo date("d-m-Y");?></b>/<b><? echo date("H:i");?></b>
<br />
SEM NADA
</div>
<?}
else
{?>
<div class="btn-padding">
<div class="btn-group dropup pull-right">
<button type="button" class="btn btn-primary">Seleciona uma acção</button>
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li><a href="" class="selectall-button" onClick="return false;">Selecionar tudo / Nao selecionar</a></li>
<li class="divider"></li>
<li><a href="#" type="submit" class="delete-button"onclick="javascript:document.Insert.submit();">Eliminar</a></li>
</ul>
</div>
</div>
</form>
<?
}
$edittable=$_POST['selector'];
$N = count($edittable);
for($i=0; $i < $N; $i++)
{
$result = $db->prepare("DELETE FROM testes WHERE ID= :ID");
$result->bindParam(':ID', $edittable[$i]);
$result->execute();
header ('Location: edit.php');
}
}
?>
<br />
<br />
<center>
<small>TESTE.</small>
</center>
</body>
</html>
<?
break;
endswitch;
else:
header( 'Location: ../ ');
endif;
?>
任何人都知道如何解决这个问题? 我没有ideia如何解决这个问题,我尝试了一切,但问题还在继续..
答案 0 :(得分:2)
提交表单时,会再次执行相同的php文件。因此,您必须首先检查$SESSION
和$POST
并执行操作,然后再执行其他操作,包括吐出表单标题。
答案 1 :(得分:1)
首先,看起来你错过了PHP字符串末尾的双引号,在开头的行上:
$stmt = $db->query("SELECT *
另一方面,当您调试问题时,为什么以sam scratch的名义关闭错误报告...
error_reporting(0);
^
你说你已经尝试过“一切”。我建议你至少尝试打开错误报告,并用字符串文字修复明显的问题。
参考:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/
`error_reporting(E_ALL);
参考http://php.net/manual/en/function.error-reporting.php
我强烈怀疑PDO的错误也被抑制了。
您的表 testes
实际上是否有一个名为 Tile
的列,或者列名是否真的 Title
强>
如果SQL语句中存在错误,那么PDO将捕获该错误;如果您从PDO启用错误报告,PDO将报告错误。