Чому моя форма постійно повторюється? Схоже, PHP не працює

I have a file called form.php and when I upload it to my server, that supports PHP, the form keeps on repeating and never executes the PHP code. I uploaded it at http://davidjahn.info/DavidJahnNet/form.php

 <?php
 $age=$_POST["age"];
 echo $age;
 ?>

 <html>
    <head>
        <title>Survey</title>
        
    </head>
    <body>
        <table style="height: 232px; width: 500px">
            <form method="post" id="survey" action="form.php">
                <tr>
                    <td>
                        <div class="welcome">
Welcome!</div> </td> </tr> <tr> <td>


    <div id="question1" style="display: inline;">

    Are You 30+ Years Old?

    <div style="height: 10px"></div> <input type="button" name="age" value="Yes" onclick="document.getElementById('question1').style.display='none';document.getElementById('question2').style.display='inline';"> <input type="button" name="age" value="No" onclick="document.getElementById('question1').style.display='none';document.getElementById('question2').style.display='inline';"> </div> <div id="question2" style="display: none;">

    Are You Looking for a Date?

    <div style="height: 10px"></div> <input type="button" name="date" value="Yes" onclick="document.getElementById('question2').style.display='none';document.getElementById('question3').style.display='inline';"> <input type="button" name="date" value="No" onclick="document.getElementById('question2').style.display='none';document.getElementById('question3').style.display='inline';"> </div> <div id="question3" style="display: none;">

    Which Girl Is Your Type?

    <div style="height: 10px"></div> <input type="image" src="http://healthystartups.com/storage/600px-MA_Route_1.png?__SQUARESPACE_CACHEVERSION=1319542839834" alt="Submit" width="100px" value="type1" /> <input type="image" src="http://jenntgrace.com/wp-content/uploads/2012/12/2.png" alt="Submit" width="100px" value="type2" /> <input type="image" src="http://3.bp.blogspot.com/-Q_owQUxNjdQ/Te3ALCmT3oI/AAAAAAAAAnk/wv9r0b0MT-g/s1600/600px-MA_Route_3.svg_.jpg" alt="Submit" width="100px" value="type3" /> <input type="image" src="http://4.bp.blogspot.com/-wY_qFr2pcAs/UCxhAayJ6oI/AAAAAAAAC6w/PgtLs2O_4g8/s1600/4.png" alt="Submit" width="100px" value="type4" /> </div>
                    </td>
                </tr>
            </form>
        </table>
    </body>
 </html>
0
@TomvanderWoerdt: Існує, код неправильно відформатовано.
додано Автор Rocket Hazmat, джерело
Що саме ви очікуєте, щоб це сталося? Ваш php-код просто виплескує все, що подано в поле age , після чого "execution" знову надходить у вашу форму.
додано Автор Marc B, джерело
Подивіться на Apache
додано Автор Royal Bg, джерело
@DaveChen Будь-ласка, не пишіть коментар "бачити мою відповідь". Ми всі можемо бачити вашу відповідь, в тому числі і особу, яка поставила запитання.
додано Автор meagar, джерело
Як зауважте: не є ввічливою або корисною ідеєю, щоб рекламувати зображення з різних місць в Інтернеті. Подумайте про збереження цих зображень та їх самостійне розміщення.
додано Автор Joe Frambach, джерело
Зрозумів! Я думаю, він пішов, хоча. : П.
додано Автор David Chen, джерело
Немає PHP.
додано Автор Tom van der Woerdt, джерело
Я хочу мати можливість зберігати кожен вибір як змінну, як показано з віком. Потім я хочу, щоб могла переадресовуватися на інший сайт, заснований на змінних.
додано Автор David Jahn, джерело
Я просто повторно завантажив його на мій сервер, і тепер форма просто повторюється. davidjahn.info/DavidJahnNet/form.php
додано Автор David Jahn, джерело
Перші чотири рядки php:
додано Автор David Jahn, джерело

6 Відповіді

PHP - це мова на стороні сервера. Для написання PHP-сторінок потрібен сервер, на якому працює PHP. Ви не можете просто зберегти їх і відкрити їх у своєму браузері.

Подивіться щось на зразок XAMPP , який швидко запрацює в роботі з середовищем розробки.

7
додано
Я мав ту саму думку щодо першого вигляду питання, але насправді ця проблема більше пов'язана зі структурою елементів HTML/JavaScript у цьому випадку.
додано Автор Simon Forsberg, джерело
Я відкинув це припущення, коли подивився на джерело. Немає тегів PHP знайдено :)
додано Автор David Chen, джерело

Я не впевнений, що ви намагаєтеся сказати. Не могли б ви докладніше розібратися?

З іншого боку, беручи приблизні здогади, це може бути вашим браузером. Спробуйте додати

<!DOCTYPE HTML>

вище

<html>

EDIT: якщо ви говорите про друк PHP, а не робите те, що має робити. Просто щоб повідомити вас про те, PHP - це скриптова мова на стороні сервера. Її потрібно обробляти за допомогою двигуна PHP. Ви користуєтесь загальнодоступним веб-хостом або ви встановили свій власний сервер?

3
додано

Ви повинні використовувати кнопки для подання. Я відредагував ваш код, щоб зробити наступне:

  • кнопок із зображеннями чотирьох типів
  • приховані значення для відображення віку, дати

Код:

<?php
    if (isset($_POST['age'])) {
        $age=$_POST["age"];
        echo $age;
    }
?>
<html>
   <head>
      <title>Survey</title>
      
   </head>
   <body>
      <table style="height: 232px; width: 500px">
         <form method="post" id="survey" action="form.php">
            <input type="hidden" name="age" id="age">
            <input type="hidden" name="date" id="date">
            <tr>
               <td>
                  <div class="welcome">
Welcome!</div> </td> </tr> <tr> <td>


    <div id="question1" style="display: inline;">

    Are You 30+ Years Old?

    <div style="height: 10px"></div> <input type="button" value="Yes" onclick="document.getElementById('question1').style.display='none';document.getElementById('question2').style.display='inline';document.getElementById('age').value='Yes'"> <input type="button" value="No" onclick="document.getElementById('question1').style.display='none';document.getElementById('question2').style.display='inline';document.getElementById('age').value='No'"> </div> <div id="question2" style="display: none;">

    Are You Looking for a Date?

    <div style="height: 10px"></div> <input type="button" value="Yes" onclick="document.getElementById('question2').style.display='none';document.getElementById('question3').style.display='inline';document.getElementById('date').value='Yes'"> <input type="button" name="date" value="No" onclick="document.getElementById('question2').style.display='none';document.getElementById('question3').style.display='inline';document.getElementById('date').value='No'"> </div> <div id="question3" style="display: none;">

    Which Girl Is Your Type?

    <div style="height: 10px"></div> <input type="submit" value="1" class="type1" name="type" /> <input type="submit" value="2" class="type2" name="type" /> <input type="submit" value="3" class="type3" name="type" /> <input type="submit" value="4" class="type4" name="type" /> </div>
               </td>
            </tr>
         </form>
      </table>
   </body>
</html>
1
додано
Змінюйте імена кнопок віку та дати, і вам добре йти.
додано Автор Simon Forsberg, джерело
@DavidJahn Оскільки кнопки не публікують значення. Ваші елементи age є кнопками. Подивись мою відповідь.
додано Автор Simon Forsberg, джерело
Видалено імена з кнопок.
додано Автор David Chen, джерело
@ Симона Андре Форсберг: Точно. Я покрив це в моїй оновленою відповідь :)
додано Автор David Chen, джерело
Я використовую приховані вхідні значення. Будь ласка, перевірте, чи вийшло до вашого відома, він повинен повертати age , date і type .
додано Автор David Chen, джерело
age і date повертатимуть або Yes , або No , а type повертають номер від 1 до 4.
додано Автор David Chen, джерело
чому ти не хочеш імен на кнопках. Як я буду розрізняти ці два в $ _POST.
додано Автор David Jahn, джерело
отримав його на роботу, дякую
додано Автор David Jahn, джерело
Тоді чому це не відправляє віку?
додано Автор David Jahn, джерело

Are you testing this on localhost ? I think you don't have WAMP installed and you are trying to view .php file without PHP server & you must know that PHP is server side language. Install EasyPHP and then you will be able to run .php

http://www.easyphp.org/

1
додано
Я мав ту саму думку щодо першого вигляду питання, але насправді ця проблема більше пов'язана зі структурою елементів HTML/JavaScript у цьому випадку.
додано Автор Simon Forsberg, джерело

Ваш Javascript та HTML не мають сенсу, якщо ви шукаєте поле віку.

У елементах age є дві кнопки.

Ви можете вирішити це, використовуючи <input type = "hidden" name = "age" value = ""> , а потім змінити значення цього параметра за допомогою Javascript, коли користувач натискає кнопки (якщо ви це зробите це, змініть атрибут імені ваших кнопок).

АБО ви могли б вирішити це, замінивши кнопки за допомогою перемикачів.

Simply replace <input type="button" name="age" ...
with <input type="radio" name="age" ...>

0
додано

Переконайтеся, що ваш код використовується на сервері localhost , оскільки PHP працює лише на стороні сервера, а не на стороні клієнта.
Якщо ви працюєте правильно, використовуйте це для кращої практики:

if(isset($_POST['age'])){
$age=$_POST["age"];
 echo $age;
}
0
додано
Ще однією кращою практикою було б уникнути вмісту, наданого користувачем, перед його виведенням. І, по-перше, не помиляйте $ _POST
додано Автор Damien Pirsy, джерело
Дякую за те, що правильно написано Damien!
додано Автор Moeed Farooqui, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php