我的问题似乎很简单,但我对PHP知之甚少。
我有两张桌子:
表1:**证书** /表2:**键**
他们没有相同的订单或数量的列。 Table2具有预先确定的值,而table1是干净的,接收用户插入的数据。
用户使用表单将数据插入table1。在这种形式中,有一个select填充了table2中的数据。
选择选项是键,如:
1112,1113,1114等
我需要的是当用户在table1中插入其中一个键时,table2中键的状态从0更新为1.(因此键不会显示在选择中)。
以下是将数据插入table1的代码
<?php
if ($registro != "") {
include("conexao-certificado.php");
$conexao = @mysql_connect($host, $user, $pass)
or die("Cadastro");
$query = "INSERT INTO certificados VALUES ('$id','$registro','$aluno','$professor','$escola','$publicado_por','$registrado_por','$ano','$curso','$cpf','$grade', now() );";
mysql_query($query, $conexao);
$url = basename($_SERVER['PHP_SELF']);
echo "<script>window.location='$url'</script>";
} else {
}
?>
以下是填充选择的代码:
<?php
include("conexao-certificado.php");
$conexao = @mysql_connect($host, $user, $pass);
if (!$conexao)
die("Nao foi possivel conectar no servidor MySQL. Erro: " . mysql_error());
mysql_select_db($db) or die("Nao foi possivel usar o banco de dados. Erro: " .
mysql_error());
$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]);
$qr = "SELECT idchave FROM chaves WHERE (publicado_por LIKE '%" . $_SESSION['nome'] . "%" . $_SESSION['sobrenome'] . "%' AND status LIKE '0' ) ORDER BY idchave ASC;";
$sql = mysql_query($qr);
?>
<select name="registro" id="registro">
<?php
echo '<option value="">Selecione a chave</option>';
while ($r = mysql_fetch_array($sql)) {
echo '<option value="' . $r['idchave'] . '">' . $r['idchave'] . '</option>';
}
?>
</select>
我尝试在INSERT之后放置它,但只有在我指定“idchave = 1112”之类的键时它才有效。
$atualiza = "UPDATE chaves SET status=1 WHERE idchave=$registro;";
mysql_select_db($db);
mysql_query($query,$conexao);
mysql_query($atualiza,$conexao);
我找到了解决方案。所以这就是我做的。 首先在table1中创建一个列,状态始终为1,而在table2上,状态始终为0。
之后我在代码中添加了一个INNER JOIN。
以下是代码:
$atualiza = "UPDATE chaves c1
INNER JOIN certificados c2 ON c1.registro = c2.registro
SET c1.status = c2.status;";
mysql_query($atualiza,$conexao);
感谢您的帮助。
答案 0 :(得分:0)
为了实现目标,
在table1上插入查询后为table2创建更新查询 将状态更新为1, 更新你的table2后,
在下拉列表选择查询中添加条件,以仅显示table2上状态为0的字段
以便它不再显示在选择上