web-dev-qa-db-fra.com

Formulaire HTML à envoyer à PHP scénario

Je crée un formulaire HTML. Je souhaite que les résultats apparaissent dans le script PHP.

<form action="chk_kw.php" method="post"> <br />
    <select> name="website_string" 
        <option value="" selected="selected"></option>
    <option VALUE="abc"> ABC</option>
    <option VALUE="def"> def</option>
        <option VALUE="hij"> hij/option>   
    </select>
    <input type="submit" name="website_string"  >
</form>

Le problème est que je ne peux pas obtenir la valeur transmise à PHP. si j'utilise la valeur:

<INPUT TYPE="submit" name="website_string" value="selected" >

Il passe toujours le texte entre les guillemets. Dans ce cas, "selected". Comment puis-je passer une des chaînes de l'option? 

17
Joe

Essaye ça:

<form method="post" action="check.php">
    <select name="website_string">
        <option value="" selected="selected"></option>
        <option VALUE="abc"> ABC</option>
        <option VALUE="def"> def</option>
        <option VALUE="hij"> hij</option>
    </select>
    <input TYPE="submit" name="submit" />
</form>

Votre contrôle de sélection et votre bouton d'envoi avaient tous deux le même attribut name; le dernier utilisé était donc le bouton d'envoi lorsque vous avez cliqué dessus. Toutes les autres erreurs de syntaxe mises à part.

check.php

<?php
    echo $_POST['website_string'];
?>

Avertissement obligatoire concernant l'utilisation des données brutes $_POST. Désinfectez tout ce que vous utiliserez réellement dans la logique d'application .

39
jondavidjohn
<form method="POST" action="chk_kw.php">
    <select name="website_string"> 
        <option selected="selected"></option>
        <option value="abc">abc</option>
        <option value="def">def</option>
        <option value="hij">hij</option>   
    </select>
    <input type="submit">
</form>


  • Au fur et à mesure que votre formulaire se complexifie, vous Pouvez effectuer une vérification rapide en haut de votre script php En utilisant print_r($_POST);, Il montrera ce qui est soumis avec le nom de l'élément correspondant.
  • Pour obtenir la valeur soumise de l'élément en question, procédez comme suit:

    $website_string = $_POST['website_string'];

5
Babiker

Il semble que dans PHP, vous obtenez la valeur du bouton d'envoi, pas l'entrée sélectionnée. Si vous utilisez GET, vous voudrez utiliser $_GET['website_string'] ou POST serait $_POST['website_string'].

Vous voudrez probablement le code HTML suivant:

<select name="website_string">
  <option value="" selected="selected"></option>
  <option value="abc">ABC</option>
  <option value="def">def</option>
  <option value="hij">hij</option>   
</select>
<input type="submit" />

Avec certains PHP qui ressemblent à ceci:

<?php

$website_string = $_POST['website_string']; // or $_GET['website_string'];

?>
3
Kyle

Pour votre formulaire actuel, si vous deviez simplement poster les résultats sur votre même page, cela devrait probablement fonctionner. Essayez quelque chose comme:

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?> method="POST>
0
TonyPall

En supposant que vous ayez corrigé les erreurs de syntaxe (vous avez fermé la zone de sélection avant l'attribut name), vous utilisez le même nom pour la zone de sélection que le bouton d'envoi. Attribuez un nom différent à la zone de sélection.

0
Derek H

Voici ce que je trouve fonctionne

  1. Définir un form name
  2. Utilisez un default select option, par exemple ...

    <option value="-1" selected>Please Select</option>

Ainsi, si le formulaire est soumis, l'utilisation de JavaScript pour interrompre le processus de soumission peut également être implémentée et vérifiée sur le serveur.

  1. Essayez d'utiliser les attributs HTML5 maintenant, ils sont pris en charge.

Cette entrée 

<input type="submit">

devrait être

<input name="Submit" type="submit" value="Submit">

chaque fois que j'utilise un formulaire qui échoue, c'est un échec dû à la différence d'appeler le nom du bouton submit et le nom comme Submit.

Vous devez également définir votre attribut enctype pour votre formulaire, car les formulaires échouent sur mon hôte Web s'il n'est pas défini.

0
Mark Giblin