Как отобразить случайную фразу из списка при нажатии кнопки на веб-странице?

Я создаю веб-страницу, где кто-то может ее посетить. Они задают вопрос в поле и нажимают кнопку, и ответ возвращается к ним. (Вид как волшебный шарик 8).

То, что я пытаюсь сделать, это настроить что-то вроде этого:

http://img585.imageshack.us/img585/997/layoutoi.png

Я по-прежнему новичок в области кодирования текста. У меня есть книга по HTML / CSS и одна на PHP, которая остается непроницаемой, поэтому мне, вероятно, понадобится пошаговый процесс. (У меня есть хост и все, так что это уже позаботится.) Спасибо заранее!

Чтобы сделать это без загрузки страницы (т.е. сразу после нажатия кнопки), вам нужно будет сделать это в Javascript ( здесь приведен пример jsfiddle )

<a id="myButton" href="#"> click here to get random stuff </a> <div id="myRandomDiv"> </div> <script type="text/javascript" charset="utf-8"> var randomStrings = [ "hello 1", "hello 2", "hello 3", "hello 4", "hello 5", ]; var randomDiv = document.getElementById("myRandomDiv"); document.getElementById("myButton").addEventListener("click", function() { randomIndex = Math.ceil((Math.random()*randomStrings.length-1)); newText = randomStrings[randomIndex]; randomDiv.innerHTML = newText; }); </script> 

Чтобы сделать это вместо этого в PHP (для чего потребуется новая загрузка страницы), вы можете сделать это:

 <?php $randomThings = array( 'random thing 1', 'random thing 2', 'random thing 3', 'random thing 4', 'random thing 5', 'random thing 6', 'random thing 7 ', ); ?> <!-- REST OF YOUR PAGE --> <?php echo $randomThings[mt_rand(0,count($randomThings)-1)]; ?> <!-- OTHER STUFF --> 

Сначала мы создаем массив («список») случайных вещей и сохраняем его в переменной $randomThings .

Доступ к элементам в массиве можно получить с помощью $variableName[$index] – в этом случае индексы будут просто равны 0,1,2,3,4,5,6.

Причина этого однострочного (начиная с «эха») заключается в том, что mt_rand будет возвращать случайное число от 0 до 6, поэтому он будет захватывать случайный элемент из массива $ randomThings. echo затем выплевывает его на страницу.

Ответ Dorkitude – прекрасный пример, но, как дополнительный совет, я хотел бы отметить, что обычно считается плохой практикой жестких данных кода внутри ваших скриптов (например, $ value = 'someValue), если нет абсолютно никакого другого пути вокруг него. Вместо этого вместо этого вы использовали бы какой-то источник данных для ваших ответов (обычный текстовый файл, база данных, веб-сервис и т. Д.).

Например, скажем, вы сохранили свой список в текстовом файле с именем «randomThings.txt» и поместили каждый ответ в свою собственную строку. Затем вы можете адаптировать код Dorkitude так:

 <?php // Flags set here to ensure integrity $randomThings = file('responses.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); ?> <!-- REST OF YOUR PAGE --> <?php echo $randomThings[mt_rand(0,count($randomThings)-1)]; ?> <!-- OTHER STUFF --> 

Я знаю, что вы отметили вопрос PHP, но, возможно, вам захочется использовать javascript. Преимущество в том, что вам не нужно перезагружать страницу – для чего-то такого простого, на самом деле нет никакого преимущества для использования php.

Решение javascript будет выглядеть примерно так:

 <html> <head> <script type='text/javascript'> var answerArray = new Array("yes", "no", "maybe"); function getAnswer() { document.getElementById('answerDiv').innerHTML = answerArray[Math.floor(Math.random() * answerArray.length)]; } </script> </head> <body> <input id='questionField' type='text' /><br/> <input type='submit' value='Ask Me!' onclick='getAnswer()' /> <div id='answerDiv'></div> </body> </html>