Пытаюсь реализовать всем известную игру "города". Хочу чтобы, на мой город, комп выдавал город из БД, начинающийся на последнюю букву моего города. Возникла сложность, связанная с отображением хода игры. Код (PHP): do { echo "<div class='you'>Вы:".$rows_g['citiu']."</div>"; echo "<div class='comp'>Компьютер:".$rows_g['citic']."</div>"; } while($rows_g = $result_g -> fetch_assoc()); Этот цикл выводит в виде диалога "вы-комп" города. Так вот, при отправке формы ничего не происходит, нужно обновить страницу чтобы отобразился последний ход. Получается диалог на экране "отстает" на одну строку от того что записано в БД. Таблица из 3-х колонок: id, citiu(юзер) и citic(комп), одна строка это ход пользователя и компа. Подскажите как исправить это, или может ссылку где посмотреть.
для этих целей лучше не использовать do-while потому что может оказаться что в бд нету запишей, или записи не удалось получить, но цикл выполниться хотя бы 1 раз. вообще, не видно формы, где ты отправляешь данные на сервер.
Вот форма: Код (PHP): <form method="post" action = "index.php" > <label> Ваш ход:<br> <input type="text" name="user_citi" value="" class="form-item" autofocus> </label><br> <label> <br> <input type="submit" value="Отправить" class="btn"> </label><br> </form> Спасибо за совет, с другими циклами не пытался. Попробую через while.
Делаю из слова массив и беру последний элемент, а если он = "ь" или "ы" то предпоследний. Плюс еще регистры надо учитывать. Ведь последняя буква всегда маленькая, а первая в исходной таблице городов всегда большая.
Вот так получаю последнюю букву. Цикл while не помог, все так-же. Изменения видны только после перезагрузки страницы Код (PHP): $a = trim(stripslashes(htmlspecialchars($_POST['user_citi'])));//данные введенные пользователем $a = mb_convert_case ($a, 1 , 'UTF-8');//удобней чтобы все буквы наверняка были одного регистра include ("form.html");//форма $a_m = preg_split ('//u', $a, -1, PREG_SPLIT_NO_EMPTY);//Получаем массив $a_c = count($a_m); //кол-во элементов массива /* print_r ($a_m); echo $a_c."<br>".$a_m[$a_c-1]."<br>";*/ ////////////////Определяем последнюю букву в введенном слове if($a_m[$a_c-1] == "ь") { $a_l = $a_m[$a_c-2]; } else if($a_m[$a_c-1] == "ы") { $a_l = $a_m[$a_c-2]; } else $a_l = $a_m[$a_c-1]; echo $a_l;//последняя буква
наверно скажу чушь, но когда я делал загрузку аватарок тоже нужно было перезагрузить чтобы увидеть изменённую аватарку, я сделал Код (PHP): header("Location: ./"); тоесть перезагрузилась, но два раза подряд Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
Вот это для чего в данном случае? Мало того, что это вообще не нужно для входных данных писать (нужно trip и ескейпить для бд, если планируется вставлять в бд), так тут ещё и намешано... stripslashes - это с времён, когда актуальны были магические кавычки, сейчас уже их нету