Re: Validation problem with array.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since your data on the client is linked, you should keep it linked on submission by nesting an array with in the array.
Your client HTML should like something like this:
<input type="text" name="skills[0][skill]" value="" size="20">


<select name="skills[0][skys]" size="1">
<option ...>
</select>

<select name="skills[0][Lused]" size="1">
<option ...>
</select>

...
<input type="text" name="skills[1][skill]" value="" size="20">

<select name="skills[1][skys]" size="1">
<option ...>
</select>

<select name="skills[1][Lused]" size="1">
<option ...>
</select>

All the way up to skills[10][...], or however many you want. If everything is filled out, you will then get a 10x3 array, just like a spreadsheet.
Since empty fields won't get submitted, you will be missing parts of your array. But that's easy to check for.


So for submission your are creating grid contain in one array variable skills:
row skill skys Lused
1 C++ 3 10/1/2000
2 0 10/21/2004
3 ...


Now it's easy to process the grid and check for missing data.

$skills = $_POST['skills'];
//Process each row of the array $skills
//Each row may have up to three elements: skill, skys, Lused
foreach($skills as $skill) {
//Check if a skill was entered by check for array element named 'skill'
if(isset($skill['skill'])) {
$query = 'INSERT INTO dbName (SkilCerts, NumYear, Lused)
VALUES ("'.$skill['skill'].'", '.$skill['skys'].', '.$skill['Lused'].')';
}
}


On Oct 21, 2004, at 6:55 AM, Stuart Felenstein wrote:

Graham, I'm going to make those changes.  Not sure if
that was creating some crazy behaviour. See inline:

--- Graham Cossey <graham@xxxxxxxxxxxxxxx> wrote:

................
{
    if ($skill != '') // Has this skill been
entered?

I don't know if I care if it's been entered. My main concern would be to make sure that if a $skill was entered, then a matching $skys and $slus should be: skills[0]-baker skys[0]-7 slus[0]-2002

but wouldn't want
skill[0]-baker skys[1]-7 slus[2]-2002

In other words I need to figure out how to check that
each "line" is complete.  But~ right now, it is
matching all the values/inputs correctly.  If someone
just chose a slus, seems the database won't take it.

    {
      // You may also want to check for sky & slu
entries

Not sure why I would want too:

//$result = mysql_query($query);
$res6 = run_query($query);
echo $query;
  ^^^^^^^^^^^
  What does this output?

It outputs the insert and values string. And it seems to print the iteration:

INSERT INTO LurkProfiles_Skicerts (SkicertID,
ProfileID, SkilCerts, NumYear, Lused) VALUES (null,
39, 'aaaaa', 2,1)INSERT INTO LurkProfiles_Skicerts
(SkicertID, ProfileID, SkilCerts, NumYear, Lused)
VALUES (null, 39, 'bbbbb', 3,2)INSERT INTO
LurkProfiles_Skicerts (SkicertID, ProfileID,
SkilCerts, NumYear, Lused) VALUES (null, 39, 'ccccc',
4,3)INSERT INTO LurkProfiles_Skicerts (SkicertID,
ProfileID, SkilCerts, NumYear, Lused) VALUES (null,
39, 'ddddd', 5,4)INSERT INTO LurkProfiles_Skicerts
(SkicertID, ProfileID, SkilCerts, NumYear, Lused)
VALUES (null, 39, 'eeeee', 6,5)your insertions were
successful

}// end if ($skill != '')

This probably makes sense to add , perhaps that is why if I don't use all the elements for input I get a syntax error.

Stuart

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


--
Brent Baisley
Systems Architect
Landover Associates, Inc.
Search & Advisory Services for Advanced Technology Environments
p: 212.759.6400/800.759.0577

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux