Почему данные в моей базе данных не обновляются?

0

Я пытаюсь, чтобы форма обновила строку в моей базе данных. Я нажимаю на один из вариантов в первый раз, оба варианта заполняются "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 ;
  • 0
    Ваш запрос абсолютно нерегулярен. где 1 = $ final1? Что это, черт подери, такое? Сначала опубликуйте структуру вашей таблицы, затем мы сможем предложить.
  • 0
    Вы проверили, что $_POST['1']; и $_POST['2']; печатает?
Показать ещё 2 комментария
Теги:

2 ответа

0

это должно быть что-то вроде этого.

table

Начальное значение

my_name | my_friend_name
1       | 1

После обновления

my_name | my_friend_name
2       | 2

2 или что-то еще в соответствии с вашими требованиями

0

Прежде всего, похоже, что синтаксис ваших запросов неверен. Ваша фраза 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-скрипт, возможно, потому, что он не был отправлен.

Я бы настоятельно рекомендовал вам сформировать хорошие привычки и методы с самого начала, из-за чего вам не нужно было возвращаться позже и исправлять плохой код (там был).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню