ページに2つのボタンがあります。ボタンの 1 つは、3 つのテキスト ボックスを介して入力された日付を保存します。もう 1 つは、何らかのデータ操作を行う関数を呼び出します。
これは、上記の最初のボタンから得たものです。
<input type="submit" name="gravarnext" value="Gravar" />
<?php
if (isset($_POST['gravarnext'])) {
if ($_POST['atextfield1'] <= 0 OR $_POST['atextfield2'] <= 0 OR $_POST['atextfield3'] <= 0 OR $_POST['atextfield1'] > 31 OR $_POST['atextfield2'] > 12 OR $_POST['atextfield3'] < 2013){ ?>
<script>window.alert("Um ou mais valores são inválidos (Dia 1-31 / Mês 1-12 / Ano 2013+).");</script>
<?php } else {
$qp = "UPDATE login.next SET dia = '".$_POST['atextfield1']."'";
$rqp = mysql_query($qp);
$qp = "UPDATE login.next SET mes = '".$_POST['atextfield2']."'";
$rqp = mysql_query($qp);
$qp = "UPDATE login.next SET ano = '".$_POST['atextfield3']."'";
$rqp = mysql_query($qp);
echo $_SERVER['PHP_SELF']; ?>
<script>window.alert("Data do próximo sorteio atualizada com sucesso!");</script>
<?php }
}
そして、これは2番目のボタンからのそれぞれのコードです
<button onclick="myFunction()">Finalizar</button>
<script>
function myFunction()
{
var r=confirm("Depois de carregar 'ok', todas as ações tomadas são irreversíveis. Desejas continuar?");
if (r==true)
{
<?php
//Refresha o palpite do utilizador para 0 e guarda o palpite antigo como ultpalpite
$qp5 = "UPDATE login.users SET ultpalpite = palpiteatual";
$rqp5 = mysql_query($qp5);
//Gera o número sorteado
$numsort = rand(1,50);
$qp2 = "UPDATE login.sorteio SET ultsorteio = '".$numsort."'";
$rqp2 = mysql_query($qp2);
$qp3 = "UPDATE login.next SET numsorteado = '".$numsort."'";
$rqp3 = mysql_query($qp3);
//Adiciona +1 ao vezesganhou do(s) vencedor(es)
$qp4 = "UPDATE login.users SET vezesganhou = vezesganhou + 1 WHERE ultpalpite = '".$numsort."'";
$rqp4 = mysql_query($qp4);
//Atualiza data do ultimo sorteio
$d = date('j');
$m = date('n');
$y = date('Y');
$aqp1 = "UPDATE login.sorteio SET diaultsort = '".$d."', mesultsort = '".$m."', anoultsort = '".$y."'";
$arqp1 = mysql_query($aqp1);
?>
}
else
{
return 1;
}
}
</script>
したがって、私の問題は、最初のボタン (「Gravar」と呼ばれる) をクリックするたびに、2 番目のボタン (「Finalizar」と呼ばれる) に関連付けられた関数も実行されることを除いて、すべてが完全に実行されることです。何が原因でしょうか? また、SQL の脆弱性や不適切なコーディングについて心配する必要はありません。これは、テスト目的のためだけです。