Суть программы заключается в том, что есть поле ввода и кнопка. В поле вводиться город и на кнопку он выводиться. У следующего вводимого значения должна совпадать первая буква с предыдущей последней (т. е. игра в города). Проблема заключается в том, что нужно выводить все введенные значения и при отправке они должны сохраняться на своем месте.
PHP:
<!DOCTYPE html> <html lang=»en»> <head> <meta charset=»UTF-8″> <meta name=»viewport» content=»width=device-width, initial-scale=1.0″> <title>lab5</title> </head> <body> <form method=»POST» > <input name=»gorod» type=»textbox»> <input name=»submit» type=»submit»> <input value=»chistka» type=»submit» type=»button» name=»chistka»> </form> <?php //print_r($_SESSION[‘city’]) ; //$_SESSION[‘city’][1] = $_POST[«gorod»]; if($last == $first[0]) { echo $_POST[«gorod»].» Верно»; $_SESSION[‘city’] = $_POST[«gorod»]; } else { echo «error»; } }else{ $_SESSION[‘city’] = $_POST[«gorod»]; echo $_SESSION[‘city’]. » «. «первый раз»; } } } ?> </body> </html>— Добавлено —
Пытался при каждом клике пушить в массив, но он все равно обновляетКод (Text):
<?php session_start(); ?> <!DOCTYPE html> <html lang=»en»> <head> <meta charset=»UTF-8″> <meta name=»viewport» content=»width=device-width, initial-scale=1.0″> <title>lab5</title> </head> <body> <form method=»POST» > <input name=»gorod» type=»textbox»> <input name=»submit» type=»submit»> <input value=»chistka» type=»submit» type=»button» name=»chistka»> </form> <?php if( isset($_POST[«submit»]) ) { //print_r($_SESSION[‘city’]) ; $arr = []; array_push($arr, $_POST[«gorod»] ); print_r($arr); //$_SESSION[‘city’][1] = $_POST[«gorod»]; if(isset($_SESSION[‘city’])) { $last = substr($_SESSION[‘city’],-1); $first = str_split($_POST[«gorod»]); if($last == $first[0]) { echo $_POST[«gorod»].» Верно»; $_SESSION[‘city’] = $_POST[«gorod»]; } else { echo «error»; } }else{ $_SESSION[‘city’] = $_POST[«gorod»]; echo $_SESSION[‘city’]. » «. «первый раз»; } } if(isset($_POST[«chistka»])) { session_destroy(); } ?> </body> </html>
чудес на свете не бывает, если вы не храните данные где-то то им неоткуда взяться….
пушить надо не в массив — который при каждой перезагрузке обнуляется, а в сессии создать массив и пушить тудаPHP:
$_SESSION[‘city’][] = $_POST[«gorod»];ну и выводить историю соответственно потом из этого массива
Добрый день!
Обратите внимание на то, какие атрибуты допускаются в тэге input
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
В Ваше случае, атрибут type=»textbox» указан неверно, д.в «text»
В input атрибут type д.б. задан один раз,а у Вас type=»submit» type=»button»
Браузер акцептирует последний. Если нужен «button», то «submit» лучше убрать.
По поводу реализации. Это типичная задачка для JS. Загружать сервер в без надобности.
Если бы у Вас был селектор городов и их названия выбирались из БД, то тогда без этого не обойтись
Удачи!
Города я записываю в файл gorod.txt
Не получилось записать массив городов в куки,даже чат GPT Сбербанка не знает
Автор просил сохранять города — я сохранил
При воде второго города всегда выдает ERROR
Исправляйте
Я не профессионал,я самоучка
Посмотреть на работу этого кода:https://кибершахматы.рф/petuh/gorod.phpPHP:
<!DOCTYPE html> <html lang=»en»> <head> <meta charset=»UTF-8″> <meta name=»viewport» content=»width=device-width, initial-scale=1.0″> <title>lab5</title> </head> <body> <center> <form method=»POST» > <input name=»gorod» type=»textbox»> <input name=»submit» type=»submit»> <input value=»chistka» type=»submit» type=»button» name=»chistka»> </form> <?php $base=‘gorod.txt’; } if($last == $first[0]) { echo $_POST[«gorod»].» Верно»; $_SESSION[‘city’] = $_POST[«gorod»]; } else { echo «error»; } }else{ $_SESSION[‘city’] = $_POST[«gorod»]; echo $_SESSION[‘city’]. » «. «первый раз»; } } } $base=‘gorod.txt’; } for($g=0;$g<$b4;$g++) { $g1=$g+‘1’; echo ‘<br>’.$g1.‘.’.$gorod[$g]; } echo ‘<br><br>Считалось городов ‘.$b4; ?> </center> </body> </html>
Напиши maxlength=20, чтобы вместо города предложение не ввели
<input name=»gorod» maxlength=20 type=»textbox»>И добавь $gorod=htmlspecialchars($gorod);
Чтобы тебе сайт не стерли через код PHP
Нет такого типа type=»textbox»
Петропавловск-Камчатский maxlength 24
Как это «сайт не стерли через код PHP»?
Добрый день!
Игра в города без PHP и $_SESSION. Только HTML5 и Native Java ScriptHTML:
<!DOCTYPE html> <html lang=«ru»> <head> <meta charset=«UTF-8»> <meta name=«viewport» content=«width=device-width, initial-scale=1.0»> <style> body, input{ font-family: arial; font-size: 16px } input[name=»city»]{width: 250px} input + input{ margin-left: 10px } #сities{ vertical-align: top; margin-left: 30px; text-align: left; padding: 10px; height: 300px; width: 200px; overflow-y: auto; border: 1px solid #ccc; background-color:#F2F2F2; border-radius: 5px; display: inline-block } #сities div{ margin-top: 3px } body > div{margin-top: 40px} </style> </head> <body> <div align=«center»> <form method=«POST» > <input name=«city» type=«text» pattern=«^[А-Яа-яЁё\s\-]+$» required> <input name=«submit» type=«submit» value=«Отправить» > </form> </div> </body> <script> CitiesNames = []; elCities = document.getElementById(«сities»); f = document.forms[0]; f.addEventListener(«submit», (event) => { event.preventDefault(); elCity = document.forms[0].city; city = elCity.value; cityUC = city.toUpperCase(); if(CitiesNames.includes(cityUC)) { alert(`Ошибка! Вы поторно ввели город ${city}!` ); return; } else { CitiesNames.push(cityUC); firstLetter = cityUC.slice(-1); pattern = new RegExp(‘^[ЪЙЫЬ]’); elCity.value = pattern.test(firstLetter)?cityUC.substr(-2,1):firstLetter; el = document.createElement(«div»); el.innerHTML = city; elCities.appendChild(el); elCities.scrollTo(0, info.scrollHeight); } }); f.addEventListener(«reset», () => { elCities.innerHTML = «»; CitiesNames = []; }); </script> </html>Удачи!