aktualizacja bazy danych za pomocą php

0

witam wszystkich forumowiczów :) Bardzo proszę o pomoc i od razu zaznaczam, że jestem początkujący w temacie programowania w php (mój staż to tydzień oglądania i czytania dostępnych materiałów oraz pierwsze próby kodowania). Próbuję napisać skrypt, który na stronie będzie przeliczał jeden rodzaj punktów w grze na drugi (np. Mpunkty na Mdolary) Obydwie wartości siedzą sobie w bazie danych i każdy zalogowany uczestnik widzi tylko swoje konto punktowe. zależy mi żeby zalogowany user wymieniał sobie te wartości niczym walutę.

Niestety na starcie już jest problem, napisałem skrypt,który ma pomniejszyć mpunkty z konta gracza o ilość wpisaną w formularzu. Niestety metoda update nie działa...:( w bazie nie następuje aktualizacja. Co robię źle? Poniżej moj kod:

<form  method="post">
		<br/><input type="text" placeholder="wpisz M-punkty"  onfocus="this.placeholder=''" onblur="this.placeholder='login'" name="mp"/><br/>
		<input type="submit" value="Wymień M-punkty" />
	<?php

include "connect.php";
$ID = $_SESSION['ID'];
$mdolary = $_SESSION['mdolary'];
$mpunkty = $_SESSION['mpunkty'];

$mp = $_POST['mp'];

$udmpunkty = $mpunkty - $mp;

$baza = new  mysqli("localhost", "root", "", "metropoly");

if ($mpunkty < $mp)
	
	{
		echo "Masz za mało M-punktów";
	}
	
else
{
$sql = "UPDATE users SET mpunkty = '$udmpunkty' WHERE ID = '$ID'";


if ($sql)
{
       $result = $baza->query($sql);
       echo "wymieniłeś mpunkty";
}
else
    die( 'Błąd: '. $baza->error);
$baza->close();

}
?>
	
		</form>
1

Wyprintuj ten $result z linii 29.
var_dump($result);

Zmienną $sql jest zawsze z jakąś wartością, bo przypisujesz jej stringa. W else nie powinno więc nigdy wejść.
Zamiast operować na zapytaniu powinieneś operować na jego wyniku.

0

Rozumiem, że mam wkleić ten var_dump po linii 29? Tak zrobiłem i na stronie pojawił się komunikat bool(true)

Dodatkowo coś zupełnie źle robię bo po zalogowaniu user od razu widzi komunikat o błędzie :)

screenshot-20200720142244.png

2

Przeanalizuj sobie linia po linii jak działa ten program.
Wchodzisz na stronę i od razu pobierasz z $_POST wartość klucza 'mp'. Czy on tam jest? Masz błąd.
Potem sprawdzasz punkty czy nie większe...
Tworzysz zmienną $sql i ona zawsze ma jakąś wartość w postaci tekstu. Nigdy nie będzie miała 0 lub false lub null.
Następny if będzie więc zawsze spełniony i zawsze będziesz próbować robić update na tabeli.

0

Rozumiem Jurek i dzięki - będę kombinował sprawdzając czy istnieje zmienna z formularza ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1