我写了这段代码,我想增加打印值,但下一个值要增加一个。例如,当程序选择“AnılEfeÇoban”值时,应将其值增加“AnılEfeÇoban”的值。但这增加了下一个兰特的价值。我找不到错误,问题出在哪里?我在等你的答案。
$deger = 0;
echo "<div align= 'center'>";
echo "<h2> Birini Seçmek Zorundasın </h2>";
echo "</div>";
$kisiler= Array("Anıl Efe Çoban", "Mert Yüksel", "Emre Çelik", "Eren
Şimşek", "Yiğit Gölebatmaz");
$kisiler_rand= $kisiler[array_rand($kisiler)]; # random chosing
$kisiler_randd= $kisiler_rand;
echo "<div id= 'karsilastirma1'>";
echo "</div>";
echo "<br>";
echo "<div align= 'center'>";
echo $kisiler_randd;
echo "<form method= 'POST'>";
echo "<br>";
echo "<input type= 'submit' name= 'cekici' value= 'Çekici'>". " ";
echo "<input type= 'submit' name= 'zeki' value= 'Zeki'>". " ";
echo "<input type= 'submit' name= 'dedikoducu' value= 'Dedikoducu'>". " ";
echo "<input type= 'submit' name= 'neseli' value= 'Neşeli'>". " ";
if($kisiler_randd== "Anıl Efe Çoban"){ # What is the randd
if(isset($_POST['cekici'])){
$sql= "SELECT * FROM benalmash WHERE isim= 'Anil_cekicilik';";
$result= mysqli_query($baglan, $sql);
$resultCheck= mysqli_num_rows($result);
if($resultCheck > 0){
$row= mysqli_fetch_assoc($result);
$deger= $row["deger"];
$deger++;
$sqll= "UPDATE benalmash SET deger= $deger WHERE isim=
'Anil_cekicilik';";
$istek= mysqli_query($baglan, $sqll);
}
}
}
if($kisiler_randd== "Emre Çelik"){
if(isset($_POST['cekici'])){
$sql= "SELECT * FROM benalmash WHERE isim= 'Emre_cekicilik';";
$result= mysqli_query($baglan, $sql);
$resultCheck= mysqli_num_rows($result);
if($resultCheck > 0){
$row= mysqli_fetch_assoc($result);
$deger= $row["deger"];
$deger++;
$sqll= "UPDATE benalmash SET deger= $deger WHERE isim=
'Emre_cekicilik';";
$istek= mysqli_query($baglan, $sqll);
}
}
}
if($kisiler_randd== "Eren Şimşek"){
if(isset($_POST['cekici'])){
$sql= "SELECT * FROM benalmash WHERE isim= 'Eren_cekicilik';";
$result= mysqli_query($baglan, $sql);
$resultCheck= mysqli_num_rows($result);
if($resultCheck > 0){
$row= mysqli_fetch_assoc($result);
$deger= $row["deger"];
$deger++;
$sqll= "UPDATE benalmash SET deger= $deger WHERE isim=
'Eren_cekicilik';";
$istek= mysqli_query($baglan, $sqll);
}
}
}
if($kisiler_randd== "Yiğit Gölebatmaz"){
if(isset($_POST['cekici'])){
$sql= "SELECT * FROM benalmash WHERE isim= 'Yigit_cekicilik';";
$result= mysqli_query($baglan, $sql);
$resultCheck= mysqli_num_rows($result);
if($resultCheck > 0){
$row= mysqli_fetch_assoc($result);
$deger= $row["deger"];
$deger++;
$sqll= "UPDATE benalmash SET deger= $deger WHERE isim=
'Yigit_cekicilik';";
$istek= mysqli_query($baglan, $sqll);
}
}
}
答案 0 :(得分:1)
如果不先获取就增加值,可能会更容易,更快。
UPDATE `benalmash` SET `deger` = `deger` + 1 WHERE `isim` = 'Emre_cekicilik';
但是您的问题是,提交表单时,它将生成一个新的随机值。因此,将最初的一个放在隐藏的表单字段中,以便以后在查询中可以引用它。
出于完整性考虑,下面是一个可能有效的示例(未经测试):
<?php
$names = ["Anıl Efe Çoban", "Mert Yüksel", "Emre Çelik", "Eren Şimşek", "Yiğit Gölebatmaz"];
$random_id = array_rand($names);
$random_name = $names[$random_id];
if (isset($_POST['increment']) && isset($_POST['random_name'])) {
// you should probably have another column with the complete name...
$first_name = strtok($_POST['random_name'], ' '); // get first name
// query should happen with PDO to prevent sql injections. do not put this into production!
mysqli_query("UPDATE `benalmash` SET `deger` = `deger` + 1 WHERE `isim` = '" . $first_name . "_cekicilik';");
}
?>
<form id="myform" action="" method="post">
<!-- add random name as hidden field -->
<input type="hidden" name="random_name" value="<?php echo $random_name; ?>">
<input type="submit" name="increment" value="increment <?php echo $random_name; ?> by one">
</form>
<script type="text/javascript">
$('#myform').on('submit', function(e) {
e.preventDefault();
$form = $(this);
$.post($form.attr('action'), $form.serialize(), function() {
var name = $form.find('input[name='random_name']').val();
alert('increased ' + name + ' by one');
});
});
</script>