Form

Discussion in 'PHP' started by ssimon171078, May 4, 2015.

  1. #1
    i wrote form in php i need when i choose county ,script prints its capital of county can you help me?
    my code is :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <title>PHP form select box example</title>
    <!-- define some style elements-->
    <style>
    label,a
    {
        font-family : Arial, Helvetica, sans-serif;
        font-size : 12px;
    }
    
    </style>   
    </head>
    
    <body>
    <?php
        $Capital=array("Washington","London","Paris","Mexico","Moscow","Tokyo");
        echo "now printing capitals\n";
       
        if(isset($_POST['formSubmit']))
        {
            $aCountries = $_POST['formCountries'];
           
            if(!isset($aCountries))
            {
                echo("<p>You didn't select any countries!</p>\n");
            }
            else
            {
                $nCountries = count($aCountries);
               
                echo("<p>You selected $nCountries countries: ");
                for($i=0; $i < $nCountries; $i++)
                {
                    echo($aCountries[$i] . " ");
                }
                echo("</p>");
            }
        }
    ?>
    
    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
        <label for='formCountries[]'>Select the countries that you have visited:</label><br>
        <select multiple="multiple" name="formCountries[]">
            <option value="US">United States</option>
            <option value="UK">United Kingdom</option>
            <option value="France">France</option>
            <option value="Mexico">Mexico</option>
            <option value="Russia">Russia</option>
            <option value="Japan">Japan</option>
        </select><br>
        <input type="submit" name="formSubmit" value="Submit" >
    </form>
    
    </body>
    </html>
    PHP:

     
    ssimon171078, May 4, 2015 IP
  2. Anveto

    Anveto Well-Known Member

    Messages:
    697
    Likes Received:
    40
    Best Answers:
    19
    Trophy Points:
    195
    #2
    What error are you getting? You could use
    print_r($_POST['formCountries'])
    PHP:
    to see what your array looks like when you submit. Most likely you could also replace action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" with action=""

    Have you tried name="formCountries" ?
     
    Anveto, May 4, 2015 IP
  3. freelanceDeveloper

    freelanceDeveloper Member

    Messages:
    59
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    43
    #3
    Not sure what the error is you have but I believe below might cause issues
    
    $aCountries = $_POST['formCountries'];
    
    if(!isset($aCountries))
    {
    Code (markup):
    the $aCountries = $_POST['formCountries']; will throw a warning when no countries are selected and possibly the 'isset' part will always return true, as it seems to me $aCountries is always set to something (blank or null, not sure) ...

    it only returns an array of values when at least 1 value is selected...
    try
    if(!isset($_POST['formCountries']))
    Code (markup):
    or
    if(is_empty($aCountries))
    Code (markup):

    edit : I think I understand what you mean...
    Build up your array as
    
    $Capital=array("united states"=>"Washington","united kingdom"=> "London","France"=>"Paris",..and so on...);
    Code (markup):
    allowing you to compare & link the city to the coutries based on the values you retrieve from the $_POST.. (keys are case sensitive) using in_array
    http://php.net/manual/en/function.in-array.php
     
    Last edited: May 4, 2015
    freelanceDeveloper, May 4, 2015 IP
  4. freelanceDeveloper

    freelanceDeveloper Member

    Messages:
    59
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    43
    #4
    Correction
    Use the values from your form's picklist , US, UK and not the descriptive words United states...
    
    $Capital=array("US"=>"Washington","UK"=> "London","France"=>"Paris",..and so on...);
    Code (markup):
    depending on the requirements you could use a database... this will prevent you to rewrite your script every time you want to add a country... I would at least be consitent in your form and always use the countrycode as value... so FR instead of France... https://countrycode.org/

    Open php mode again in the form and loop your array again to print the picklist, no need to redo this manually and make mistakes by doing so
     
    Last edited: May 4, 2015
    freelanceDeveloper, May 4, 2015 IP
    Anveto likes this.