• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[problem]Dodawanie +1 do danych

Object Storage Arubacloud
0 głosów
350 wizyt
pytanie zadane 14 lutego 2016 w SQL, bazy danych przez Bartosz Kaczmarek Początkujący (340 p.)
edycja 14 lutego 2016 przez Bartosz Kaczmarek

Witam. Mam problem, otóż chciałbym aby dodawało +1 do danej z MySql. Jak to zrobić? I jeśli można, to co zrobić, aby automatycznie się to odświeżało? Korzystam z Rejestracji i logowania z grą "Osadnicy" pana Zelenta.

 
<?php

    session_start();
    
    if (!isset($_SESSION['zalogowany']))
    {
        header('Location: index.php');
        exit();
    }
    function DodajDrewno()
    {
        $zapytanie = mysql_query("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id = id;");
        $zapytanie = $_SESSION['drewno'];
    }
    
?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title>Osadnicy - gra przeglądarkowa</title>
</head>

<body>
    
<?php

    echo "<p>Witaj ".$_SESSION['user'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>';
    echo "<p><b>Drewno</b>: ".$_SESSION['drewno'];
    echo " | <b>Kamień</b>: ".$_SESSION['kamien'];
    echo " | <b>Zboże</b>: ".$_SESSION['zboze']."</p>";
    
    echo "<p><b>E-mail</b>: ".$_SESSION['email'];
    echo "<br /><b>Dni premium</b>: ".$_SESSION['dnipremium']."</p>";
    
?>
    <button onclick="DodajDrewno()">Click me</button>

</body>
</html>
 

5 odpowiedzi

+1 głos
odpowiedź 14 lutego 2016 przez Anysiu68 Użytkownik (820 p.)

Witaj,

trochę namieszałeś. W tym miejscu:

<button onclick="DodajDrewno()">Click me</button> 

wywołujesz funkcje javascript o nazwie DodajDrewno(), a ona nie istnieje. Istnieje funkcja DodajDrewno() PHP, a z tego co mi wiadomo bezpośrednio za pomocą JS nie odwołasz się do PHP. Musisz do tego użyć AJAXa, albo po prostu utworzyć nowy plik PHP w którym dodajesz drewno, po kliknięciu w przycisk otwierasz ten plik, dodajesz surowce i na końcu przekierowujesz użytkownika do pliku głównego za pomocą:

Header("Location: NazwaPliku.php");

Pozdrawiam

0 głosów
odpowiedź 15 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
Niezbyt wiem, jak to zrobić. A mógłbyś pokazać cały skrypt w jednym pliku (index.php)?
komentarz 15 lutego 2016 przez uRTLy Bywalec (2,420 p.)
tez jestem poczatkujacy ale wydaje mi sie ze  jakbys w onclick=" <php     ?> " zapisal kod  php na dodanie drewna to  by zadzialalo czy moze sie myle ?
0 głosów
odpowiedź 15 lutego 2016 przez Anysiu68 Użytkownik (820 p.)
index.php

<!DOCTYPE HTML> 
<html lang="pl"> 
<head> 
    <meta charset="utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
    <title>Osadnicy - gra przeglądarkowa</title> 
</head> 

<body> 
     
<?php 

    echo "<p>Witaj ".$_SESSION['user'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>'; 
    echo "<p><b>Drewno</b>: ".$_SESSION['drewno']; 
    echo " | <b>Kamień</b>: ".$_SESSION['kamien']; 
    echo " | <b>Zboże</b>: ".$_SESSION['zboze']."</p>"; 
     
    echo "<p><b>E-mail</b>: ".$_SESSIOON['dnipremium']."</p>"; 
     
?> 
    <a href="dodaj.php?id=<?php echo $_SESSIOON['id'];?>">Click me</a> 

</body> 
</html> 

dodaj.php:
<?php 

    session_start(); 
     
    if (!isset($_SESSION['zalogowany'])) 
    { 
        header('Location: index.php'); 
        exit(); 
    } 
       $id = $_GET['id'];
        $zapytanie = mysql_query("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id =$id"); 
        $zapytanie = $_SESSION['drewno']; //ta linijka raczej nie zwraca wartości kolumny tylko kod błęu
 header('Location: index.php'); 
     
?> 

 

komentarz 15 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
Nie dodaje punktów, miałeś tam tylko małe błędy, gdzie wpisałeś SESSIOON (2xO). Poprawiłem je, lub ustawiłem na takie same ale nadal nie działa. Masz jakiś jeszcze pomysł?
komentarz 15 lutego 2016 przez Anysiu68 Użytkownik (820 p.)
Powiedz dokładnie jakie masz błędy.
komentarz 15 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)

Wogóle nie dodaje. A tak, to próbowałem nad tym i zrobiłem coś takiego:

	<a href="
	<?php
		session_start();

		require_once "connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);
		
		try 
		{
			$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
			if ($polaczenie->connect_errno!=0)
			{
				throw new Exception(mysqli_connect_errno());
			}
			else
			{
				if (!isset($_SESSION['zalogowany']))
				{
					$id = $_GET['id'];
					mysql_query("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id =$id");
					header('Location: index.php');
					exit();
					$polaczenie->close();
				}
			}
		}
		catch(Exception $e)
		{
			echo '<br />Nie dziala bo: '.$e;
		}
	?>
	">Click me</a>

i to nadal nie działa, bo jest błąd 403 i jakby zakaz wstępu do MySql

komentarz 16 lutego 2016 przez Anysiu68 Użytkownik (820 p.)

Zamień:

 

mysql_query("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id =$id");


na:

sql = "UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id =$id";

i dopisz:

$polaczenie->query($sql);

 

komentarz 16 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
Cały czas Access Forbidden. Wydaje mi się, że to problem z połączeniem, ale skopiowałem kod z rejestracji i trochę go "uformowałem" do mojego kodu, niewiem, dlaczego nie działa.
komentarz 16 lutego 2016 przez Anysiu68 Użytkownik (820 p.)
Spróbuj czysty kod z poradnika.
komentarz 16 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)

Access forbidden!

You don't have permission to access the requested object. It is either read-protected or not readable by the server.

If you think this is a server error, please contact the webmaster.

Error 403

 

Też próbowałem ale cały czas to samo. Umiem to sobie przetłumaczyć ale niewiem jak to naprawić (ten error). On cały czas mi się pojawia.

0 głosów
odpowiedź 17 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
@refresh Proszę, pomógłby ktoś? Nadal nie wiem, jak rozwiązać problem "Acces Forbidden"
0 głosów
odpowiedź 21 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
Odswierzam i proszę o pomoc.
komentarz 21 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)

Proste rozwiązanie twojego problemu 

w pliku drewno.php 

<?
session_start();
function lala(){
	require_once "polaczenie.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
    die();
}
$dodaj_punkt = $polaczenie->query(sprintf("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id='%d'",

$_SESSION['id']));
echo"Dodano +1";
}

$_GET['function']();
?>

oczywiście doda ci +1 do drewna jeśli jesteś zalogowany.

a link będzie tak wyglądał 

<a href="drewno.php?function=lala">Drewno +1</a>

 

komentarz 24 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
<?php
	session_start();
	function lala()
	{
		$id = $_GET['id'];
		require_once "polaczenie.php";
		$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
		if ($polaczenie->connect_errno != 0)
		{
			die();
		}
		$dodaj_punkt = $polaczenie->query(sprintf("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id='%id'",
		$_SESSION['id']
	}
	writeMsg();
?>

 

Nadal jest mały problem:

Parse error: syntax error, unexpected '}' in C:\xampp\htdocs\drewno.php on line 14

komentarz 25 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)
<?php
    session_start();
    function lala()
    {
        $id = $_GET['id'];
        require_once "polaczenie.php";
        $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
        if ($polaczenie->connect_errno != 0)
        {
            die();
        }
        $dodaj_punkt = $polaczenie->query(sprintf("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id='%id'",
        $_SESSION['id']));
    }
    writeMsg();
?>

A miałeś zamknięte nawiasy po $_session['id'];

komentarz 25 lutego 2016 przez Bartosz Kaczmarek Początkujący (340 p.)
<?php
	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}

    session_start();
    function lala()
    {
        require_once "connect.php";
        $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
        if ($polaczenie->connect_errno != 0)
        {
            die();
        }
        $dodaj_punkt = $polaczenie->query("UPDATE uzytkownicy SET drewno = drewno + 1 WHERE id='%id'");
		header('Location: index.php');
		exit();
    }
    lala();
?>

 

Nie ma żadnych błędów ale nie dodaje punktów

komentarz 26 lutego 2016 przez jaca121212 Nałogowiec (40,760 p.)

Po where zamiast id daj user.

UPDATE uzytkownicy SET drewno = drewno + 1 WHERE user=

 

Podobne pytania

0 głosów
1 odpowiedź 609 wizyt
pytanie zadane 27 stycznia 2018 w JavaScript przez BlvckFox Gaduła (4,240 p.)
+1 głos
1 odpowiedź 279 wizyt
0 głosów
0 odpowiedzi 138 wizyt
pytanie zadane 13 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

92,621 zapytań

141,477 odpowiedzi

319,817 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...