Добрый день! Есть задание - игра в города. Нужно из бд взять перечень городов и в момент ответа компьютера или игрока сравнивать города из списка, взятого из базы. Все, вроде, понятно, но столкнулся с проблемой, что некорректно удаляются города из массива, в котором хранится список городов из базы. Я использую этот массив чтобы знать когда игра закончилась и не повторялись города в ответах. Собственно, сам код без файла с подключением в бд. Там проблем я не обнаружил, массив городов функция возвращает корректный. Но удаление уже выбранных городов - проблема, которую никак не могу решить, вернее, понять в чем суть самой проблемы. Извиняюсь что выкладываю код в таком виде, не нашел аналога jsfiddle для php
You can post now and register later. If you have an account, sign in now to post with your account. Note: Your post will require moderator approval before it will be visible.
alert('2' + submit.value) нужно было делать внутри request.onreadystatechange, потому что именно там приходит значение с сервера и задаётся value у submit. И через сколько времени это произойдёт, не всегда известно, может и через минуту, если интернет медленный, поэтому таймаутами универсально не побороть.
Я не уверен, что у формы есть событие input, но если даже было бы, то переменные result, num1 и num2 не определены. Они были бы созданы автоматически, если бы это были id, но у тебя-то name. И я не в курсе, сейчас можно писать js-код в атрибутах без javascript: спереди? И есть ли у тега <output> свойство value? Может быть, у него textContent? Подключи Vue, там будет работать так, как ты хочешь, только придётся несколько дополнительных действий сделать, привязывая переменные к инпутам и создавая computed-свойство.
Понял, спасибо большое. Я просто думал, что если выбран класс, то и применяяется только к конкретному классу, а оказывается не правильно думал. Еще раз спасибо
Добрый день! Есть такая страница http://tehne.com/grant/right-bank-of-kazanka-river-competition-2021-ru Хочу сделать чтобы в мессенджерах когда отправляют ссылку вместе с заголовком показывалась определенная картинка. Я добавил эту картинку в мета тэги og и link rel="image_src" и она все равно не появляется когда делюсь в мессенджерах Почему так?
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.
Question
Super_Saimon 1
Добрый день! Есть задание - игра в города. Нужно из бд взять перечень городов и в момент ответа компьютера или игрока сравнивать города из списка, взятого из базы. Все, вроде, понятно, но столкнулся с проблемой, что некорректно удаляются города из массива, в котором хранится список городов из базы. Я использую этот массив чтобы знать когда игра закончилась и не повторялись города в ответах. Собственно, сам код без файла с подключением в бд. Там проблем я не обнаружил, массив городов функция возвращает корректный. Но удаление уже выбранных городов - проблема, которую никак не могу решить, вернее, понять в чем суть самой проблемы. Извиняюсь что выкладываю код в таком виде, не нашел аналога jsfiddle для php
session_start();
if(!empty($_GET['restart'])) {
unset($_SESSION['cities']);
unset($_SESSION['answer']);
unset($_SESSION['incorrect_city']);
unset($_SESSION['game_over']);
header('Location: ./form.php');
exit;
}
define('HOST', 'localhost');
define('USER', 'root');
define('PASSWORD', '');
define('DATABASE', 'gamecity');
$connect = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
function getCityFromDB($dbconfig) {
$listOfCities = "SELECT * FROM city ORDER BY city_id ASC";
$query = mysqli_query($dbconfig, $listOfCities);
while($res[] = mysqli_fetch_assoc($query)) {
$cities = $res;
}
foreach($cities as $key => $val) {
foreach($val as $key2 => $val2) {
if($key2 == 'city_name') {
$city[] = $val2;
}
}
}
return $city;
}
if (empty($_SESSION['cities'])) {
$_SESSION['cities'] = getCityFromDB($connect);
}
if(!empty($_POST['send'])) {
if (findCity($_POST['city'], $_SESSION['cities'])) {
if (empty($_SESSION['answer'])) {
$_SESSION['answer'] = firstStep($_POST['city'], $_SESSION['cities']);
$temp = deleteCity($_SESSION['answer'], $_SESSION['cities']);
}else {
$answer = answer($_POST['city'], $_SESSION['answer'], $_SESSION['cities']);
if($answer) {
$_SESSION['answer'] = $answer;
$temp = deleteCity($_SESSION['answer'], $_SESSION['cities']);
}else {
$_SESSION['game_over'] = 2;
}
}
if(!$temp){
$_SESSION['game_over'] = 1;
}else {
$_SESSION['cities'] = $temp;
}
}else {
$_SESSION['incorrect_city'] = 'Некорректный город';
}
header('Location: /form.php');
exit;
}
function firstStep($userCity, $arrayOfCities) {
$temp = '';
if(!empty($userCity)) {
foreach ($arrayOfCities as $key => $val) {
if(mb_strtoupper(mb_substr($userCity, -1, 1, 'utf-8')) == mb_substr($val, 0, 1, 'utf-8')) {
$temp .= $userCity . ',' . $val;
return $temp;
}
}
}
return false;
}
function findCity ($city, $listCities) {
foreach($listCities as $key => $val) {
if($val == $city) {
return true;
}
}
return false;
}
function answer($city, $answer, $arrayOfCities) {
if(mb_substr($city, 0, 1, 'utf-8' ) == mb_strtoupper(mb_substr($answer, -1, 1, 'utf-8'))) {
$char = mb_strtoupper(mb_substr($city, -1, 1, 'utf-8'));
foreach($arrayOfCities as $key => $val) {
$temp = mb_strpos($val, $char, 0,'utf-8');
if ($temp !== false) {
$answer .= ',' . $city . ',' . $val;
break;
}
}
return $answer;
}
return false;
}
function deleteCity($town, $cities) {
if (count($cities) > 0) {
$town = explode(',', $town);
$cities = array_values($cities);
for($i = 0; $i < count($town); $i++) {
for($j = 0; $j < count($cities); $j++) {
if($town[$i] == $cities[$j]) {
unset($cities[$j]);
}
}
}
return $cities;
}
return false;
}
Link to post
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.