Две кнопки изображения или два представления - PullRequest
2 голосов
/ 19 января 2011

Я - разработчик .NET, почти разочаровывающийся в личном проекте с использованием PHP.

Мне нужна следующая страница PHP:

Форма с двумя случайными изображениями (идентифицируется кодом), где пользователь выбирает между ними, то форма обновляется, заботясь о выборе.Просто.

Я уже выполнил случайную часть изображения (сохраненные URL-адреса в таблице. Я планирую изменить это в будущем, но пока это не проблема), поэтому я должен сделать«выбирая» часть.Я бы хотел сделать оба изображения кликабельными или поместить две кнопки под ними с одинаковым текстом.

В PHP я не могу понять, как это работает, в основном потому, что я слишкомиспользуется для ASP.NET.

Я пытался использовать две обычные кнопки отправки, но я не хочу, чтобы у них обоих был разный текст, но то же самое свойство, используемое для различения обеих кнопок, также используется для записитекст кнопки: значение.Не говоря уже о том, что весь этот PHP_SELF вместе с проверкой значения в начале загрузки страницы кажется слишком хакерским.

Затем я подумал о создании двух форм, каждая с действием, которое отправляет код через строку запроса,но я не хочу этогоЯ не хочу, чтобы (обычный) пользователь мог выполнять действие, просто набрав URL.

Помните: , поскольку при обновлении страницы я теряю значения переменных,Я должен отправить код выбранного изображения вместе (не через строку запроса).

Этот тип конфликта заставляет меня задуматься о том, чтобы отказаться от этого проекта.Когда я самостоятельно изучил ASP.NET, это было так просто, интуитивно понятно, и я понял это быстро.

Ответы [ 4 ]

4 голосов
/ 19 января 2011

Как насчет присвоения кнопкам отправки двух разных имен:

<input type="submit" name="submit1" value="submit" />
<input type="submit" name="submit2" value="submit" />

Тогда вы можете проверить с помощью php:

if (isset($_REQUEST['submit1']) && $_REQUEST['submit1'] == "submit") {
    //its image 1
} else if (isset($_REQUEST['submit2']) && $_REQUEST['submit2'] == "submit") {
    //its image 2
}

Кстати, вам не нужно использовать массив $ _REQUEST, вы можете использовать $ _GET или $ _POST в зависимости от действия формы. Я не был уверен, какой из них вы использовали, поэтому я поместил здесь $ _REQUEST, который охватывает оба.

1 голос
/ 20 января 2011

Итак, сначала вам нужно создать форму для отправки через POST вместо GET:

<form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
    <button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
</form>

Теперь на стороне PHP:

if(isset($_POST['submitButton'])) {
    $image = $_POST['submitButton']; 
}

Если пользователь нажимаеткнопка, что кусок кода будет запущен.

Вот полный пример того, как все это будет соответствовать друг другу:

<?php
if(isset($_POST['submitButton'])) {
    echo $_POST['submitButton'];
}
?>
<html>
    <body>
        <form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
            <button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
            <button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
        </form>
    </body>
</html>
0 голосов
/ 19 января 2011

Для проблемы с кнопкой отправки вы можете использовать атрибут имени кнопки отправки, чтобы определить, какая кнопка была нажата.

Эта нажатая кнопка вызовет появление ключа в массиве $ _POST.Таким образом, вы можете различать значения, но при этом иметь одинаковый текст / значение.

0 голосов
/ 19 января 2011

Просто есть одна форма.Это действительно все, что вам нужно.

Присвойте кнопкам отправки одинаковое имя и разные значения.

<input type="submit" name="submit" value="Option1" />
<input type="submit" name="submit" value="Option2" />

Когда форма опубликована, вы можете проверить $_POST['your_submit_value_name'] для каждого из значений.

Кроме того, если вы оставите <form action="" method="post" enctype="multipart/form-data"> пустым, он отправит сообщение самому себе.Поэтому, когда вы загружаете свою страницу, просто проверьте:

if (!empty($_POST)) { 
    if ($_POST['submit'] == 'value1') {
        // Do A
    } else if ($_POST['submit'] == 'value2') {
        // Do B
    }
}

Не забудьте проверить данные пользователя!

...