Суть программы заключается в том, что есть поле ввода и кнопка. В поле вводиться город и на кнопку он выводиться. У следующего вводимого значения должна совпадать первая буква с предыдущей последней (т. е. игра в города). Проблема заключается в том, что нужно выводить все введенные значения и при отправке они должны сохраняться на своем месте. PHP: <?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']) ; //$_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> --- Добавлено --- Пытался при каждом клике пушить в массив, но он все равно обновляет Код (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.php PHP: <?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> <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 if( isset($_POST["submit"]) ) { $base='gorod.txt'; if ( !file_exists($base) ) { $openchatdb=fopen($base,"w"); if(fwrite($openchatdb,"")) { ; } fclose($openchatdb); } $openchatdb=fopen($base,"a"); if(fwrite($openchatdb,$gorod."\n")) { ; } fclose($openchatdb); 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(); } $base='gorod.txt'; if($file = fopen($base, "r")) { $b4=0;} while(!feof($file)) { if($gorod[]= fgets ($file)){ $b4=$b4+1; } } fclose ($file); for($g=0;$g<$b4;$g++) { $gorod[$g] = preg_replace("|[\r\n]+|", "", $gorod[$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 Script HTML: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>lab5</title> <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="Отправить" > <input type="reset" value="Сброс"> <div id="сities"></div> </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> Удачи!