Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

PHP Въпрос

Featured Replies

Направих каквото каза ти и пак същото :

<?php
include "config.php";
session_start();
ob_start();
$username=$_SESSION['username']; 
?>
<?php
header ('Content-type: text/html; charset=utf-8');
include "config.php";
if ($username) {
	$getusermats = mysql_query("SELECT * FROM users WHERE username='$username'");
	$getusermatsRow = mysql_fetch_array($getusermats);
	$user_gold = $getusermatsRow['gold_have'];
	$user_iron = $getusermatsRow['iron_have'];
	$user_wood = $getusermatsRow['wood_have'];
	$user_food = $getusermatsRow['food_have'];
	$goldmine_level = $getusermatsRow['goldmine_level'];
	$user_id = $getusermatsRow['id'];
	$nextlevel = $goldmine_level+1;;
	$select_level = mysql_query("SELECT * FROM buildings WHERE b_name='goldmine' AND level='$nextlevel'");
	$minerow = mysql_fetch_array($select_level);
	$gold = $minerow['gold_give'];
	$iron = $minerow['iron_give'];
	$wood = $minerow['wood_give'];
	$food = $minerow['food_give'];
	$mine_level = $minerow['level'];
    if($user_gold < $gold && $user_iron < $iron && $user_wood < $wood && $user_food < $food) {
			echo "Нямаш достатачно ресурси за таза зграда";
		}
	else {
	$new = $user_gold - $gold;
	$new2 = $user_iron - $iron;
	$new3 = $user_wood - $wood;
	$new4 = $user_food - $food;
	$query = "UPDATE users SET gold_have='$new', iron_have='$new2', wood_have='$new3', food_have='$new4', goldmine_level='$nextlevel' WHERE username='$username' AND id='$user_id'";
	echo "Успешно построена златна мина";
}
}
?>

проблема е в $query заявката неще нещо да ъпдейтва.

<?

$query = "UPDATE users SET gold_have='$new', iron_have='$new2', wood_have='$new3', food_have='$new4', goldmine_level='$nextlevel' WHERE username='$username' AND id='$user_id'";

mysql_query($query);

	echo "Успешно построена златна мина";
}
}
?>
  • Отговори 111
  • Прегледи 13,8k
  • Създадено
  • Последен отговор

Потребители с най-много отговори

Най-популярни публикации

  • <?php <form name="redirect"> <input type='text' size="3" name="redirect2"> </form> <script type="text/javascript"> var targetURL="file.php" var countdownfrom=5 var currentse

  • И все пак... въпреки, че в случая няма нужда, понякога е необходимо да се вкара примерно форма в <? ?> таговете. Запознай се с командите echo / print. <? echo' <form name="redirect

  • darkterminal
    darkterminal

    Има естествено и тя е в полза на втория запис. В дадения случай, разликата няма да е забележима с просто око, но ако изчисляваш дълги и сложни стрингове, с много конкатенации (като във примера, който

  • Автор

Може ли да ми дадете пример да видя как ще стане това с jquery за времето което се зима от базата данни. А и последния ми въпрос е как да направя така че дадена заявка да се изпълнява всеки час , дори и да не съм в сайта или в тази страница?

А и последния ми въпрос е как да направя така че дадена заявка да се изпълнява всеки час , дори и да не съм в сайта или в тази страница?

Cronjob ако си на Linux server, Scheduled tasks - ако си на Windows. Имай в предвид, че на безплатни хостове нямаш достъп до тези услуги :biggrin:

/едит/

разбра ли защо не ти се ъпдейтва базата данни ? по-горе съм ти написал как трябва да стане...

Редактирано от mapko (преглед на промените)

  • Автор

Cronjob ако си на Linux server, Scheduled tasks - ако си на Windows. Имай в предвид, че на безплатни хостове нямаш достъп до тези услуги :biggrin:

/едит/

разбра ли защо не ти се ъпдейтва базата данни ? по-горе съм ти написал как трябва да стане...

Нещо с пхп код може ли да стана (неща много да използвам тези програми)

Само с PHP няма как да стане. Някой трябва да генерира заявка за изпълнение на PHP кода. Заявката може да е от както от cron, така и от жив клиент :angry: PHP кода не може сам да инициира собственото си изпълнение, нещо трябва да свърши тази задача. П.П. Ако нещо от нещата не е правилно, моля да бъда извинен! :cool:

  • Автор

Използвам Windows 7 Ultimate , даите линк за Scheduled tasks да го видя дали ще помогне :P.

mysql_fetch_array = $array[1,2,3] mysql_fetch_assoc = $assoc['name']; Мисля, че някои хора не правят разлика.

  • Автор

Здравейте пак . Не знам дали някои от вас е играл хановете , но имам един въпрос . Като се регистрираш в базада данни ти се запазват кординати например 50:37 и на картата се показват сички играчи на определените им кординати които почват от 01 до 200(01:80).Публикувано изображение

Та въпроса ми е как мога и аз да направя такава карта за моято онлайн игра :)?

Обхождаш записите в базата и извеждаш върху картата съответните имена на потребители според координатите където се намират те. Създай си матрица (таблица) и задай номер/буква за всеки ред и колона. Така ще получиш координати за всяка клетка от таблицата. Във всяка клетка си извеждай картинка (според това дали там има потребител или не). Помисли малко повече за алгоритъма, защото не е особено сложен :)

Редактирано от darkyto (преглед на промените)

  • Автор

Някакв пример нещо да ми дадеш да видя .

Пример не мога да ти дам, защото не съм писал подобно нещо и нямам готов код под ръка. Най-добре напиши ти каквото можеш, пък ще видим ние с какво можем да помогнем ;), а не обратното :)

  • Автор

Създай си матрица (таблица) и задай номер/буква за всеки ред и колона.

Ето това не мога да ти разбера(знам че е с двумерен масив ама не разбирам) значи двумерен масив да си напиша , който е като "таблица"?

  • Автор

Добра това ме интересува само трябва ли да се създам нова таблица в базата данни която да съдържа х-кординати,у-кординати и юзерид или трябва сичко да правя с двумерните масиви

<?php
if ($username) {
	$selectuser = mysql_query("SELECT * FROM users WHERE username='$username'");
	$row = mysql_fetch_array($selectuser);
	$userid = $row['id'];
	$selectcoordinates = mysql_query("SELECT * FROM coordinates");
	$coordinates = mysql_fetch_array($selectcoordinates);
	$x = $coordinates['x'];
	$y = $coordinates['y'];
	$seecoordinates = array( array( x => '$x', y => '$y', userid => '$userid'));
?>

Идеята за таблицата ти я дадох за визуализацията върху карта. Иначе в базата можеш да създадеш таблица за координати на отделните потребители и в таблицата ти решаваш вече дали ще пазиш информацията в една колона или в две. Ако тези координати са само на "крепости" можеш да ги съхраняваш и в таблицата на потребителите като стринг в една колона. Проблема тука е, че трябва всеки път като записваш стринга в полето да го "кодираш" и после при извикване на координатите да "декодираш" стринга. Варианти колкото искаш според това кое ти е най-удобно и лесно да реализираш.

  • Автор

Ще съхранявам кординатите в таблицана на потребителите в 2 колони , но как да направя като се регистрираш да те регистрира с произволни х,у кординати примерно(01:50 Или 18:01)

Използвай функция за генериране на случайно число от 0 до...колкото ти трябва. След това за всяка координата извиквай функцията, за да ти генерира число. Преди да записваш обаче в базата зацикли с проверка дали тази двойка вече не съществува в базата. П.П.: В PHP има функция rand(). Мисля, че ще ти свърши идеална работа поне за генерирането на случайните числа ;)

Редактирано от darkyto (преглед на промените)

  • Автор

Ето кода за регистрацията ама неще нещо да регистрира

<form action="" method="POST">
<table id="ctable" cellpadding="0" cellspacing="0" width="100%" height="150px">

<tbody><tr class="tr"><td>Потребител:</td><td><input name="username" type="text" size="25"></td></tr>
<tr class="tr"><td>Парола:</td><td><input name="password" type="password" size="25" maxlength="36"></td></tr>
<tr class="tr"><td>E-mail:</td><td><input name="email" type="text" size="25"></td></tr>
</tbody></table>
<table>
<tbody><tr><td></td><td><input type="submit" name="register" value="РЕГИСТРАЦИЯ"></td></tr>
</tbody></table>
</form>
<?php
include("config.php");
if($_POST['register'])
{
$username=htmlspecialchars($_POST['username']);
$email=htmlspecialchars($_POST['email']);
$password=md5(htmlspecialchars($_POST['password']));
$startmats = 500;
$query1="SELECT * FROM users WHERE username LIKE '$username' ";
$result1=mysql_query($query1);

if ($_POST['username'] == NULL && $_POST['username'] <= 3)
{
echo "<b>Потребителското Ви име трябва да бъде поне 3 букви.</b>";
}
else if ($_POST['email'] == NULL && $_POST['email'] <= 4)
{
echo "<b>Невалидна електронна поща.</b>";
}
else if ($_POST['password'] == NULL && $_POST['password'] <= 6)
{
echo "<b>Полето за парола трябва да е попълнено и да е минимум 6 символа.</b>";
}
else
{
if (mysql_num_rows($result1)>0)
{
echo "Потребител с това име вече същестува!";
}
else
{

srand ((double) microtime( )*1000000);
$random_number = rand(1,100);
$random_number2 = rand(100,200);
$sql = "INSERT INTO `users` VALUES('', '$username', '$email', '$password', '$random_number', '$random_number2', '$startmats', '$startmats','$startmats', '$startmats');";
if(mysql_query($sql) != "")
{
$query = mysql_query("SELECT * FROM `users` WHERE username='$username'");
$row=mysql_fetch_array($query);
echo "Регистрацията беше създадена успешно!";
echo "</b></div><br><br><meta http-equiv='REFRESH' content='1;URL=index.php'> ";
echo "<br>";
}else
{
echo "Регистрацията не беше създадена!Има грешка с mysql-a!";
echo mysql_error();
}
}
}
}
?>

ако може да ми кажете къде има грешка :D

Редактирано от valkosoft (преглед на промените)

$query1="SELECT * FROM users WHERE username LIKE '$username' ";

Тази заявка няма да ти търси точни съвпадения, а ще търси $username в таблицата без значение дали съвпада на 100% с колона usernamen или частично. В такъв случай ако някой иска да направи потребител "ака", а има вече потребител "akaa", тази заявка ще върне резултат и няма да е успешна регистрацията.

Друго за момента не мога да видя...

Редактирано от darkyto (преглед на промените)

  • Автор

Като пробвам да се регистрирам излиза това

Регистрацията не беше създадена!Има грешка с mysql-a!Column count doesn't match value count at row 1

Означава, че имаш повече или по-малко полета в таблицата.

srand ((double) microtime( )*1000000);

Не виждам защо ти е нужно това след като не се ползва.

Другото нещо: Не знам къде ще се ползва това, но лично без усилия мога да изпълня SQL Инежекция. Защити си го.

$sql = "INSERT INTO `users` VALUES('', '$username', '$email', '$password', '$random_number', '$random_number2', '$startmats', '$startmats','$startmats', '$startmats');";

Това първото '' за какво ти е ?

Сигурно иска да впише празен стринг, за да му отговорят броя на колоните с броя на стойностите от заявката?

$query1="SELECT * FROM users WHERE username LIKE '$username' ";

Тази заявка няма да ти търси точни съвпадения, а ще търси $username в таблицата без значение дали съвпада на 100% с колона usernamen или частично. В такъв случай ако някой иска да направи потребител "ака", а има вече потребител "akaa", тази заявка ще върне резултат и няма да е успешна регистрацията.

Друго за момента не мога да видя...

Специално тази заявка, няма да връща резултат при частично съвпадение, освен ако в самото $username не се съдържат символите _ и %

Посочи полетата, в които ще вкарваш данни:

$sql = "INSERT INTO `users`(username, email, password, random_number, random_number2, startmats, startmats,startmats, startmats) VALUES('$username', '$email', '$password', '$random_number', '$random_number2', '$startmats', '$startmats','$startmats', '$startmats');";

  • Автор

Добре направих да се записват кординатите и последния ми въпрос е как да направя като вленеш в страницата карта и там в картата да показва с некви картинки къде има потребител(фона да е трева примерно аз фона ще го направя сам на картата)?

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.