Я пытаюсь, чтобы форма обновила строку в моей базе данных. Я нажимаю на один из вариантов в первый раз, оба варианта заполняются "1". Каждый клик после этого ничего не делает. Я проверил сайт, чтобы убедиться, что мой синтаксис верен, и сказал, что ошибок не было. Я долго не работал с PHP, поэтому я не знаю, где бы я ошибся.
Извините, если исправление очень просто, но, как я уже сказал, я не делал этого долго.
Варианты - мои и имена моих друзей, и поэтому я их подвергал цензуре.
<?php
include_once('db_feat.php');
$vote1 = $_POST['friend'];
$vote2 = $_POST['me'];
$vote = '';
$select = "SELECT * FROM 'vote' WHERE 1";
mysqli_query($db_feat, $select);
$currentfriend = $row['friend'];
$currentme = $row['me'];
$finalfriend = '';
$finalme = '';
if($vote == $votefriend) {
$finalfriend = $currentfriend + 1;
} else {
$finalfriend = $currentfriend + 0;
}
if($vote == $voteme) {
$finalme = $currentme + 1;
} else {
$finalme = $currentme + 0;
}
$insert = "UPDATE 'vote' SET 'friend'=$finalfriend,'me'=$finalme WHERE 1";
mysqli_query($db_feat, $insert);
if (!mysqli_query($db_feat,$insert)){
echo("Error description: " . mysqli_error($db_feat));
}
?>
<!DOCTYPE html>
<html>
<head>
<title>index.php</title>
<meta charset="UTF-8">
<link rel="shortcut icon" href="Media/Images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="CSS/divs.css">
<link rel="stylesheet" type="text/css" href="CSS/styles.css">
</head>
<body>
<?php include_once('template_pageTop.php'); ?>
<div id="pageMiddle">
<div id="content">
<div id="poll">
<form action="index.php" method="post">
<input type="image" src="Media/Images/votefriend.png" name="friend" id="friend">
<input type="image" src="Media/Images/voteme.png" name="me" id="me">
</form>
</div>
<?php echo $finalfriend; ?></br />
<?php echo $finalme; ?>
</div>
</div>
<?php include_once('template_pageBottom.php'); ?>
</body>
Вот код, который я получил из своей базы данных.
CREATE TABLE IF NOT EXISTS 'vote' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'friend' int(11) NOT NULL,
'me' int(11) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
это должно быть что-то вроде этого.
table
Начальное значение
my_name | my_friend_name
1 | 1
После обновления
my_name | my_friend_name
2 | 2
2 или что-то еще в соответствии с вашими требованиями
Прежде всего, похоже, что синтаксис ваших запросов неверен. Ваша фраза WHERE
должна выглядеть примерно так.
$select = "SELECT * FROM 'vote' WHERE friend = 1";
$insert = "UPDATE 'vote' SET 'friend'= {$final1},'me'= {$final2} WHERE friend = 1";
Что-то еще нужно учитывать. В этой части вашего кода вы делаете $var + 0
который ничего не выполняет, вам лучше использовать исходное значение. Также попробуйте использовать идентичный оператор сравнения (=== вместо ==), чтобы вы знали, что значения точно совпадают.
if($vote === $votefriend) {
$finalfriend = $currentfriend + 1;
} else {
$finalfriend = $currentfriend;
}
if($vote === $voteme) {
$finalme = $currentme + 1;
} else {
$finalme = $currentme;
}
Кроме того, вы никогда не хотите слепо присваивать значения переменным и пытаться их использовать. Всегда проверяйте/санируйте. У вас должна быть какая-то структура вроде этого.
if ($_POST['form']) {
if ($_POST['friend']) {
$vote1 = $_POST['friend'];
} else {
echo "Friend is empty";
exit;
}
if ($_POST['me']) {
$vote2 = $_POST['me'];
} else {
echo "Me is empty";
exit;
}
//rest of your code//
} else {
echo "form was not received";
exit;
}
Если ваши значения $_POST
пусты, очевидно, они не делают его из формы на ваш PHP-скрипт, возможно, потому, что он не был отправлен.
Я бы настоятельно рекомендовал вам сформировать хорошие привычки и методы с самого начала, из-за чего вам не нужно было возвращаться позже и исправлять плохой код (там был).
$_POST['1'];
и$_POST['2'];
печатает?