test
test

Reputation: 18200

select box arrays in PHP

OK, I'm trying to get the loop of each array after selecting them... the add 'language' remove 'language' works no problem. The problem is the submit. I am stuck on how to actually get each select box to loop through the PHP array.

Here is what I have:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />


    <title>Untitled 5</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>

 <script type="text/javascript">
        $(document).ready(function() {
            $('#btnAdd').click(function() {
                var num     = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
                var newNum  = new Number(num + 1);      // the numeric ID of the new input field being added

                // create the new element via clone(), and manipulate it's ID using newNum value
                var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);

                // manipulate the name/id values of the input inside the new element
                newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);

                // insert the new element after the last "duplicatable" input field
                $('#input' + num).after(newElem);

                // enable the "remove" button
                $('#btnDel').removeAttr("disabled", "disabled");

                // business rule: you can only add 5 names
                if (newNum == 15)
                    $('#btnAdd').attr('disabled','disabled');
            });

            $('#btnDel').click(function() {
                var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have

                $('#input' + num).remove();     // remove the last element

                // enable the "add" button
                $('#btnAdd').removeAttr("disabled", "disabled");

                // if only one element remains, disable the "remove" button
                if (num-1 == 1)
                    $('#btnDel').attr('disabled','disabled');
            });

            //$('#btnDel').attr('disabled','disabled');
        });
    </script>
</head>
<body>
<?php
if ($_POST['submit']) {

    $i = 0;
    foreach ($_POST['langs'] as $value) {

     echo "Langs $i: " . $_POST['langs'][$i];
     $i++;    

}
}
?>

<form id="myForm" action="lang.php" method="post">

<h1>Languages</h1>
<p>What languages do you know?</p> 
    <div>
        <input type="button" id="btnAdd" value="add another name" />
        <input type="button" id="btnDel" value="remove name" />
    </div>
<div id="input1" style="margin-bottom:5px;" class="clonedInput">
<select name='langs[]' id="languages" size="1">
<option value='---'>Select Language</option>
<option value='AB'>Abkhazian</option>
<option value='AA'>Afar</option>
<option value='AF'>Afrikaans</option>
<option value='SQ'>Albanian</option>
<option value='AM'>Amharic</option>
<option value='AR'>Arabic</option>
<option value='HY'>Armenian</option>
<option value='AS'>Assamese</option>
<option value='AY'>Aymara</option>
<option value='AZ'>Azerbaijani</option>
<option value='BA'>Bashkir</option>
<option value='EU'>Basque</option>
<option value='BN'>Bengali</option>
<option value='DZ'>Bhutani</option>
<option value='BH'>Bihari</option>
<option value='BI'>Bislama</option>
<option value='BR'>Breton</option>
<option value='BG'>Bulgarian</option>
<option value='MY'>Burmese</option>
<option value='BE'>Byelorussian</option>
<option value='KM'>Cambodian</option>
<option value='CA'>Catalan</option>
<option value='ZH'>Chinese</option>
<option value='CO'>Corsican</option>
<option value='HR'>Croatian</option>
<option value='CS'>Czech</option>
<option value='DA'>Danish</option>
<option value='NL'>Dutch</option>
<option value='EN' selected="selected">English</option>
<option value='EO'>Esperanto</option>
<option value='ET'>Estonian</option>
<option value='FO'>Faeroese</option>
<option value='FJ'>Fiji</option>
<option value='FI'>Finnish</option>
<option value='FR'>French</option>
<option value='FY'>Frisian</option>
<option value='GL'>Galician</option>
<option value='KA'>Georgian</option>
<option value='DE'>German</option>
<option value='EL'>Greek</option>
<option value='KL'>Greenlandic</option>
<option value='GN'>Guarani</option>
<option value='GU'>Gujarati</option>
<option value='HA'>Hausa</option>
<option value='IW'>Hebrew</option>
<option value='HI'>Hindi</option>
<option value='HU'>Hungarian</option>
<option value='IS'>Icelandic</option>
<option value='IN'>Indonesian</option>
<option value='IA'>Interlingua</option>
<option value='IE'>Interlingue</option>
<option value='IK'>Inupiak</option>
<option value='GA'>Irish</option>
<option value='IT'>Italian</option>
<option value='JA'>Japanese</option>
<option value='JW'>Javanese</option>
<option value='KN'>Kannada</option>
<option value='KS'>Kashmiri</option>
<option value='KK'>Kazakh</option>
<option value='RW'>Kinyarwanda</option>
<option value='KY'>Kirghiz</option>
<option value='RN'>Kirundi</option>
<option value='KO'>Korean</option>
<option value='KU'>Kurdish</option>
<option value='LO'>Laothian</option>
<option value='LA'>Latin</option>
<option value='LV'>Latvian</option>
<option value='LN'>Lingala</option>
<option value='LT'>Lithuanian</option>
<option value='MK'>Macedonian</option>
<option value='MG'>Malagasy</option>
<option value='MS'>Malay</option>
<option value='ML'>Malayalam</option>
<option value='MT'>Maltese</option>
<option value='MI'>Maori</option>
<option value='MR'>Marathi</option>
<option value='MO'>Moldavian</option>
<option value='MN'>Mongolian</option>
<option value='NA'>Nauru</option>
<option value='NE'>Nepali</option>
<option value='NO'>Norwegian</option>
<option value='OC'>Occitan</option>
<option value='OR'>Oriya</option>
<option value='OM'>Oromo</option>
<option value='PS'>Pashto</option>
<option value='FA'>Persian</option>
<option value='PL'>Polish</option>
<option value='PT'>Portuguese</option>
<option value='PA'>Punjabi</option>
<option value='QU'>Quechua</option>
<option value='RM'>Rhaeto-Romance</option>
<option value='RO'>Romanian</option>
<option value='RU'>Russian</option>
<option value='SM'>Samoan</option>
<option value='SG'>Sangro</option>
<option value='SA'>Sanskrit</option>
<option value='GD'>Scottish Gaelic</option>
<option value='SR'>Serbian</option>
<option value='SH'>Serbo-Croatian</option>
<option value='ST'>Sesotho</option>
<option value='TN'>Setswana</option>
<option value='SN'>Shona</option>
<option value='SD'>Sindhi</option>
<option value='SI'>Singhalese</option>
<option value='SS'>Siswati</option>
<option value='SK'>Slovak</option>
<option value='SL'>Slovenian</option>
<option value='SO'>Somali</option>
<option value='ES'>Spanish</option>
<option value='SU'>Sudanese</option>
<option value='SW'>Swahili</option>
<option value='SV'>Swedish</option>
<option value='TL'>Tagalog</option>
<option value='TG'>Tajik</option>
<option value='TA'>Tamil</option>
<option value='TT'>Tatar</option>
<option value='TE'>Telugu</option>
<option value='TH'>Thai</option>
<option value='BO'>Tibetan</option>
<option value='TI'>Tigrinya</option>
<option value='TO'>Tonga</option>
<option value='TS'>Tsonga</option>
<option value='TR'>Turkish</option>
<option value='TK'>Turkmen</option>
<option value='TW'>Twi</option>
<option value='UK'>Ukrainian</option>
<option value='UR'>Urdu</option>
<option value='UZ'>Uzbek</option>
<option value='VI'>Vietnamese</option>
<option value='VO'>Volapuk</option>
<option value='CY'>Welsh</option>
<option value='WO'>Wolof</option>
<option value='XH'>Xhosa</option>
<option value='JI'>Yiddish</option>
<option value='YO'>Yoruba</option>
<option value='ZU'>Zulu</option>
</select> <select name='lang_level[]' id='lang_level' size="1">
<option value='---'>Select Language Level</option>
<option value='0'>Beginner</option>
<option value='1'>Intermediate</option>
<option value='2'>Advanced</option>
<option value='3'>Fluent</option>
<option value='4'>Native Speaker</option>
</select></div>
<br /><br />

<input type="submit" name="submit" value="Next step" />
</form>

</body>
</html>

Upvotes: 4

Views: 391

Answers (3)

David Boskovic
David Boskovic

Reputation: 21

Fix line 23.

You're resetting the name attribute for some reason.

OLD

// manipulate the name/id values of the input inside the new element
newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);

FIXED

// manipulate the name/id values of the input inside the new element
newElem.children(':first').attr('id', 'name' + newNum);

Upvotes: 1

hungneox
hungneox

Reputation: 9829

try this

<?php

if (isset($_POST['submit']))
{
    $i = 0;
    foreach ($_POST['langs'] as $value)
    {
        echo "Langs $i: " . $value;
        $i++;
    }
}
?>

Upvotes: 0

Rupesh Pawar
Rupesh Pawar

Reputation: 1917

You have to use foreach like this

foreach ($_POST['langs'] as $value) {

     echo "Langs $i: " . $value;
     $i++;

}

See here what foreach can do.

Upvotes: 4

Related Questions