Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

switch($_GET['kierunek'])


bnmbb

Rekomendowane odpowiedzi

Opublikowano

Witam ! Tworzę właśnie grę. Mam problem z dodaniem wioski :(. Kod :


<?php
session_start();
require_once("Layout.php");

$baza = mysql_select_db("world_of_villages");

$wioski = mysql_query("SELECT * FROM s1 WHERE Owner=".$uzytkownik['Id']." LIMIT 1");
if(!$wioski) {
echo 'Witaj '.$uzytkownik['Name'].' !<br />
Nieposiadasz wioski na tym świecie. Wybierz kierunek gdzie ma być ona postawiona :<br />
<form action="" method="GET">
<input type="radio" name="kierunek" value="przypadkowo">Przypadkowo<br />
<input type="submit" value="Rozpocznij grę !">
</form>
';
switch($_GET['kierunek']){
case 'przypadkowo':

$x = rand(1, 999);
$y = rand(1, 999);

$wioska = mysql_query("SELECT * FROM s1 WHERE x=$x AND y=$y");

if($wioska){

$iduser = $uzytkownik['Id'];

$dodaj = mysql_query("INSERT INTO s1 (Owner, Points, x, y, ludnosc_uzyta, ludnosc_ogol, Zamek, spichlerz) VALUES ($iduser, 46, $x, $y, 70, 200, 1, 1)");
$uczestnictwo = mysql_query("UPDATE Users set Uczestnictwo_1 ='tak' WHERE Id=".$uzytkownik['Id']);

$dane1 = mysql_query("SELECT Id FROM s1 WHERE x=$x AND y=$y");
$dane = mysql_fetch_array($dane1);
 header("Location : http://localhost/WoV/game.php?village=".$dane['Id']."&screen=przeglad");
} if(!$dodaj){
$x = rand(1, 999);
$y = rand(1, 999);
$wioska = mysql_query("SELECT * FROM s1 WHERE x=".$x." AND y=".$y);

if($wioska){
$dodaj = mysql_query("INSERT INTO s1 (Owner, Points, x, y, ludnosc_uzyta, ludnosc_ogol, Zamek, spichlerz) VALUES (%d, 46, %d, %d, 70, 200, 1, 1)", $uzytkownik['Id'], $x, $y);

$uczestnictwo = mysql_query("UPDATE Users set Uczestnictwo_1 ='tak' WHERE Id=".$uzytkownik['Id']);
$dane = mysql_query("SELECT Id FROM s1 WHERE x=$x AND y=$y");
header('Location: game.php?village='.$dane['Id'].'&screen=przeglad');
}
 }

 break;

}

} else {
echo "Zostaniesz przeniesiony ;p";
}

?>

 

Kod jest troche trudny jak widać :/ A więc o co mi dokładnie chodzi :

 

Jeśli gracz nieposiada wioski na świecie ma wyświetlić się możliwość stworzenia jej.

Narazie jeden kierunek - przypadkowo ;p.

 

Po wybraniu go ma dodać do tabeli 's1' kordy jakie wylosowało (x i y) i pare rzeczy.

Jeśli kordy są zajęte ma wylosować je jeszcze raz i dodać do tabeli

 

(niewieżę ,że na prawie 1 mln. możliwości 2x wylosuje mi zajęte kordy ;))

 

Jeśli już dodało wioskę w tabeli Users ma zmienić uczestnictwo na : tak

Potem przekierować go do :

game.php?village=ID wioski&screen=przeglad

 

Znajdzie sie ktoś kto to ogarnie ? ;)

Opublikowano

Doh.

Stwórz sobie plik np conf.php w którym będziesz łączyć się z bazą np.

 

<?
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'mojagra';
mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db);
?> 

Następnie będziesz go łączyć z innymi plikami np przez

?include('conf.php');

 

Wyświetlanie if'a zrobiłbym tak

 

$wioski = mysql_query("SELECT * FROM s1 WHERE Owner=".$uzytkownik['Id']." LIMIT 1");
if(!$wioski > 0) {
echo 'Witaj '.$uzytkownik['Name'].' !<br />
Nieposiadasz wioski na tym świecie. Wybierz kierunek gdzie ma być ona postawiona :<br />
<form action="" method="POST">
<input type="submit" value="Rozpocznij grę !">
</form>
';

 

Następnie tworzysz odbieranie forumularza z POST'a

if(!empty($_POST)){
	$x = rand(1, 999);
	$y = rand(1, 999);

$wioska = mysql_num_rows(mysql_query("SELECT * FROM s1 WHERE x=$x AND y=$y limit 1"));
if($wioska > 0){
echo 'trafiłeś w miejsce z wioską';
else{

$dodaj = mysql_query("INSERT INTO s1 (Owner, Points, x, y, ludnosc_uzyta, ludnosc_ogol, Zamek, spichlerz) VALUES ($iduser, 46, $x, $y, 70, 200, 1, 1)");
$uczestnictwo = mysql_query("UPDATE Users set Uczestnictwo_1 ='tak' WHERE Id=".$uzytkownik['Id']);
}
}

}

 

 

To pseudo kod, nie wiem czy będzie działać, bo nie wiem jak wygląda u Ciebie baza.

Powodzenia.

Opublikowano

Sekunde już analizuję kod. A połączenie mam i to lepsze ;p. Dałem tylko to co liczy się ogólnie.

 

Kod : No w sumie ok. A wiesz może jak wykonać zapętlenie ,że jeśli jednak trafi to wyszuka mi kordy jeszcze raz i tak do skutku ? Kod jak patrze jest OK. Będzie działać

Specjalista
Opublikowano

to

$wioska = mysql_query("SELECT * FROM s1 WHERE x=$x AND y=$y

zmień na

$wioska = mysql_query("SELECT * FROM s1 WHERE x='$x' AND y='$y'

zmieniona wersja unika ataków sql injector i jeżeli odnośimy się do bazy z zapytaniem to zmienne dawaj w 'apostrofach'.

 

 

poza tym zawszę gdy odnoszę się do bazy poprzez zapytanie sql używam `,', lub " .

 

jak masz

 

mysql_query("UPDATE Users set Uczestnictwo_1 ='tak' WHERE Id=".$uzytkownik['Id']);

 

to zapytanie czyta Ci tylko do tego drugieo cudzysłowia, więc zmień ;p, bo tego $uzytkownik['id'] już nie czyta.

to samo w

$wioska = mysql_query("SELECT * FROM s1 WHERE x=".$x." AND y=".$y);

and

$wioska = mysql_query("SELECT * FROM s1 WHERE x=".$x." AND y=".$y);

 

To z podstaw php :)

Opublikowano

@up

Obie formy są poprawne, lecz jedynie chodzi o zabezpieczenia i szybkość przesyłania danych między serwerem a bazą. Osobiście używam jak up.

a7a3b8122182356e.png.8036b3d7be84292c9ea465f2360fa784.png

Opublikowano

A ja sądzę ,że niepoprawną formą jest pisanie liczby w apostrofach. Używa sie ich zwykle do przesylania znaków a nie liczb.

A SQL czyta dobrze znaki jeśli wstawiamy $userid zamiast $user['Id'].

 

A już w sumie sobie poradziłem ale dzięki za podsunięcie liczenia za pomocą num_rows.

 

Można zamknąć. Poradziłem sobie troche dziwacznie ale myśle że ujdzie :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...