web-dev-qa-db-fra.com

Comment publiez-vous des données avec un lien?

J'ai une base de données qui contient les résidents de chaque maison dans une rue donnée. J'ai une page Web php "vue de la maison" qui peut afficher une maison individuelle et les résidents lorsque le numéro de la maison est donné en utilisant "post". J'ai aussi une page Web "Street View" qui donne une liste de maisons. Ce que je veux savoir, c'est si vous pouvez avoir des liens sur la vue de la rue qui relieront à la vue de la maison et afficheront le numéro de la maison en même temps sans configurer de formulaire pour chacun.

Cordialement

20
Howard May

Je suppose que chaque maison est stockée dans sa propre table et possède un champ 'id', par exemple un identifiant de maison. Ainsi, lorsque vous parcourez les maisons et les affichez, vous pouvez faire quelque chose comme ceci:

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

Ensuite, dans house.php, vous obtiendrez l’identifiant de maison à l’aide de $_GET['id'], le validerez à l’aide de is_numeric(), puis afficherez ses informations.

12
Click Upvote

Si vous voulez transmettre les données en utilisant POST au lieu de GET, vous pouvez le faire en utilisant une combinaison de PHP et de JavaScript, comme ceci:

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

Ensuite, dans PHP, vous parcourez les numéros de maison et créez des liens vers la fonction JavaScript, comme ceci:

<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>

Ainsi, vous ne disposez que d’un formulaire dont la ou les variables masquées sont modifiées en fonction du lien sur lequel vous cliquez. Ensuite, JavasScript soumet le formulaire.

45
Ben

Ceci est un vieux fil conducteur, mais au cas où quelqu'un tomberait sur, je pense que la solution la plus directe est d'utiliser CSS pour donner à un formulaire traditionnel l'apparence d'un lien d'ancrage. 

@ben est correct, vous pouvez utiliser php et javascript pour envoyer un message avec un lien, mais demandons ce que fait le js - il crée essentiellement un formulaire avec style = 'display: none' définit une ligne de saisie/texte avec value = ' quelque chose »et ensuite le soumet. 

cependant, vous pouvez ignorer tout cela en créant un formulaire. paramétrez style = 'display: none' sur les lignes d’entrée/de texte (pas le formulaire lui-même comme ci-dessus), puis utilisez CSS pour que le bouton ressemble à un lien normal. 

en voici un exemple:

dans la classe 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;
}

Puis, dans le CSS id = "view_form" set "display: inline;" Et dans le CSS id = "view_button", définissez quelque chose comme: "background: none; border: none; color: #fff; cursor: pointeur " 

8
brook

Vous ne pouvez pas effectuer POST HTTP Requests by <a href="some_script.php">some_script</a>

Ouvrez simplement votre house.php, trouvez-y où vous avez $house = $_POST['houseVar'] et remplacez-le par:

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

Et dans le streeview.php, créez des liens comme celui-ci:

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

Ou autre chose. Je ne connais tout simplement pas vos fichiers et ce qu’ils contiennent.

8
Sergey Kuznetsov

Je voudrais simplement utiliser une valeur dans la chaîne de requête pour transmettre les informations requises à la page suivante.

3
Jon Tackabury

Nous devrions tout simplifier pour tout le monde car vous pouvez simplement combiner JS à PHP Combiner PHP et JS est assez simple.

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

Ou un moyen un peu plus sûr

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