За последние 24 часа нас посетили 93775 программистов и 5769 роботов. Сейчас ищут 2089 программистов ...

Игра "города"

Тема в разделе "PHP для новичков", создана пользователем chelleg, 23 дек 2015.

  1. chelleg

    chelleg Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    4
    Симпатии:
    0
    Пытаюсь реализовать всем известную игру "города". Хочу чтобы, на мой город, комп выдавал город из БД, начинающийся на последнюю букву моего города. Возникла сложность, связанная с отображением хода игры.
    Код (PHP):
    1.     do
    2.     {        
    3.         echo "<div class='you'>Вы:".$rows_g['citiu']."</div>";   
    4.         echo "<div class='comp'>Компьютер:".$rows_g['citic']."</div>";
    5.         
    6.     }
    7.     while($rows_g = $result_g -> fetch_assoc());
    8.  
    Этот цикл выводит в виде диалога "вы-комп" города. Так вот, при отправке формы ничего не происходит, нужно обновить страницу чтобы отобразился последний ход. Получается диалог на экране "отстает" на одну строку от того что записано в БД. Таблица из 3-х колонок: id, citiu(юзер) и citic(комп), одна строка это ход пользователя и компа.
    Подскажите как исправить это, или может ссылку где посмотреть.
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    для этих целей лучше не использовать do-while потому что может оказаться что в бд нету запишей, или записи не удалось получить, но цикл выполниться хотя бы 1 раз.

    вообще, не видно формы, где ты отправляешь данные на сервер.
     
  3. chelleg

    chelleg Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    4
    Симпатии:
    0
    Вот форма:
    Код (PHP):
    1. <form method="post" action = "index.php"  >
    2.                      <label>
    3.                         Ваш ход:<br>
    4.                         <input type="text" name="user_citi" value="" class="form-item" autofocus>
    5.                     </label><br>
    6.                    
    7.                       <label>
    8.                         <br>
    9.                         <input type="submit" value="Отправить" class="btn">
    10.                     </label><br>
    11. </form>
    Спасибо за совет, с другими циклами не пытался. Попробую через while.
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    Если переделать под while должно все заработать.
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    как получаешь последнею букву города?
     
  6. chelleg

    chelleg Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    4
    Симпатии:
    0
    Делаю из слова массив и беру последний элемент, а если он = "ь" или "ы" то предпоследний. Плюс еще регистры надо учитывать. Ведь последняя буква всегда маленькая, а первая в исходной таблице городов всегда большая.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    через explode?
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    да покажи уже код, чего ломаться-то? :D
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Как страшно жить.
    Код (PHP):
    1. substr($string,-1); 
    А по возможности, лучше mb_substr юзать, пожалуй.
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну я к этому и клонил, но он хитрец оказался, через explode получал последнею букву.
     
  11. chelleg

    chelleg Новичок

    С нами с:
    23 дек 2015
    Сообщения:
    4
    Симпатии:
    0
    Вот так получаю последнюю букву. Цикл while не помог, все так-же. Изменения видны только после перезагрузки страницы
    Код (PHP):
    1.  $a = trim(stripslashes(htmlspecialchars($_POST['user_citi'])));//данные введенные пользователем
    2.   
    3.     $a = mb_convert_case ($a, 1 , 'UTF-8');//удобней чтобы все буквы наверняка были одного регистра
    4.     include ("form.html");//форма
    5.   
    6.         $a_m = preg_split ('//u', $a, -1, PREG_SPLIT_NO_EMPTY);//Получаем массив
    7.         
    8.         $a_c = count($a_m); //кол-во элементов массива
    9.         /*
    10.         print_r ($a_m);
    11.         echo $a_c."<br>".$a_m[$a_c-1]."<br>";*/
    12.         
    13.         ////////////////Определяем последнюю букву в введенном слове
    14.  
    15.         if($a_m[$a_c-1] == "ь")
    16.         {
    17.             $a_l = $a_m[$a_c-2];
    18.         }
    19.         else if($a_m[$a_c-1] == "ы")
    20.         {
    21.             $a_l = $a_m[$a_c-2];
    22.         }
    23.         else $a_l = $a_m[$a_c-1];
    24.         echo $a_l;//последняя буква  
    25.  
     
  12. DemoN1810

    DemoN1810 Новичок

    С нами с:
    16 дек 2015
    Сообщения:
    97
    Симпатии:
    0
    наверно скажу чушь, но когда я делал загрузку аватарок тоже нужно было перезагрузить чтобы увидеть изменённую аватарку, я сделал
    Код (PHP):
    1. header("Location: ./"); 
    тоесть перезагрузилась, но два раза подряд

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделать? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т.д.
     
  13. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Вот это для чего в данном случае? Мало того, что это вообще не нужно для входных данных писать (нужно trip и ескейпить для бд, если планируется вставлять в бд), так тут ещё и намешано... stripslashes - это с времён, когда актуальны были магические кавычки, сейчас уже их нету
     
  14. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    489
    Симпатии:
    21
    AnteFil стайл