Как вы размещаете данные со ссылкой - PullRequest
20 голосов
/ 09 января 2009

У меня есть база данных, в которой содержатся жители каждого дома на определенной улице. У меня есть php веб-страница с видом на дом, которая может отображать отдельный дом и жильцов, когда номер дома указывается с помощью «post». У меня также есть веб-страница «Просмотр улиц», которая дает список домов. Я хочу знать, можете ли вы иметь ссылки на вид на улицу, которые будут связывать вид с домом, и одновременно указывать номер дома, не настраивая форму для каждого?

Привет

Ответы [ 6 ]

46 голосов
/ 09 января 2009

Если вы хотите передать данные, используя POST вместо GET, вы можете сделать это, используя комбинацию PHP и JavaScript, например:

function formSubmit(house_number)
{
  document.forms[0].house_number.value = house_number;
  document.forms[0].submit();
}

Затем в PHP вы перебираете номера домов и создаете ссылки на функцию JavaScript, например:

<form action="house.php" method="POST">
<input type="hidden" name="house_number" value="-1">

<?php
foreach ($houses as $id => name)
{
    echo "<a href=\"javascript:formSubmit($id);\">$name</a>\n";
}
?>
</form>

Таким образом, у вас есть только одна форма, скрытые переменные которой изменяются в зависимости от того, по какой ссылке вы нажимаете. Затем JavasScript отправляет форму.

12 голосов
/ 09 января 2009

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

<a href="house.php?id=<?php echo $house_id;?>">
  <?php echo $house_name;?>
</a>

Тогда в house.php вы получите идентификатор дома с помощью $_GET['id'], подтвердите его с помощью is_numeric() и затем отобразите его информацию.

8 голосов
/ 24 февраля 2011

Это старая ветка, но на всякий случай кто-нибудь сталкивается, я думаю, что самое прямое решение - это использовать CSS, чтобы традиционная форма выглядела как якорная ссылка.

@ ben правильно, вы можете использовать php и javascript для отправки поста со ссылкой, но давайте спросим, ​​что делает js - по сути, он создает форму с style = 'display: none' устанавливает строку ввода / текста значение = «что-то», а затем представляет его.

однако вы можете пропустить все это, сделав форму. установка style = 'display: none' в строках ввода / текста (не самой формы, как указано выше), а затем использование CSS, чтобы кнопка выглядела как обычная ссылка.

Вот пример, который я использую:

в классе PHP,

public function styleButton($style,$text){
    $html_str = "<form id='view_form' action='".$_SERVER['REQUEST_URI']."' method='post' >";
    $html_str .= "<input style='display:none;' name='list_style' type='text' value='".$style."' >";
    $html_str .= "<input id='view_button' type='submit' value='".$text."' >";
    $html_str .= "</form>";
    return $html_str;
}

Затем в CSS id = "view_form" установите "display: inline;" а в CSS id = "view_button" установлено что-то вроде: "background: none; border: none; color: #fff; курсор: указатель"

8 голосов
/ 09 января 2009

Вы не можете сделать POST HTTP-запросы <a href="some_script.php">some_script</a>

Просто откройте house.php, найдите там, где у вас есть $house = $_POST['houseVar'] и измените его на:

isset($_POST['houseVar']) ? $house = $_POST['houseVar'] : $house = $_GET['houseVar']

А в streeview.php сделать такие ссылки:

<a href="house.php?houseVar=$houseNum"></a>

Или что-то еще. Я просто не знаю ваших файлов и что в них.

3 голосов
/ 09 января 2009

Я бы просто использовал значение в строке запроса для передачи необходимой информации на следующую страницу.

0 голосов
/ 26 мая 2017

Мы должны сделать все проще для всех, потому что вы можете просто объединить JS в PHP Объединить PHP и JS довольно просто.

$house_number = HOUSE_NUMBER;
echo "<script type='text/javascript'>document.forms[0].house_number.value = $house_number; document.forms[0].submit();</script>";

Или более безопасный способ

$house_number = HOUSE_NUMBER;
echo "<script type='text/javascript'>document.forms[0].house_number.value = " . $house_number . "; document.forms[0].submit();</script>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...