Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > Client-side Javascript validation of "select multiple" for PHP

Reply
Thread Tools

Client-side Javascript validation of "select multiple" for PHP

 
 
Phil Powell
Guest
Posts: n/a
 
      10-19-2003
Has anyone here ever done a case where you have a select multiple form
element and you have to do both server-side and client-side validation?

I am honestly not sure how to do it in Javascript (I keep getting errors
thrown that I can't verify because the form processes onto itself too
quickly for me to check the Javascript errors) because the select multiple
form element name has to be in the form of "var[]" because PHP will then
recognize $var as an array and not as a scalar (if it sees "$var" it will
only capture the LAST element you entered in the select multiple, if it sees
"$var[]" it gets them all).

However, "var[]" is not friendly to Javascript either, at least as far as I
can tell. So, what I need to find out is how anyone out there has ever
dealt with select-multiple form elements for BOTH Javascript AND PHP.

Thanx
Phil

PS: Code below:

<?


require_once('/home/nordicnet.no/include/nordicnet_global_vars_functions.php
');
require_once("$ACTUAL_STARTPATH/reports/include/reports_global_vars.php");
require_once("$ACTUAL_STARTPATH/reports/include/reports_classes.php");

if ($hasChosenReport) {
/*
$stuff = '<html><head><title>stuff</title></head><body><b>Hello</b>
World</body></html>';
$fileName = 'stuff.doc';

header("Content-type: application/msword");
header("Content-Length: " . strlen(ltrim($stuff)));
header("Content-Disposition: inline; filename=" . $fileName);

echo ltrim($stuff);
*/
print_r($_POST);
print_r("<P>");
print_r($reportType);
}

if (!$hasChosenReport) {
$report = new Report;
$report->dbOpen();

?>
<html>
<head>
<title><?= $brand ?>s Report</title>
<link rel=stylesheet href=/stylesheets/nordicnet_style.css type=text/css>
</head>
<script>
<!--
function isValidReportOption() {
hasPickedUsers = false;
userArray = eval('document.reportForm.users' . String.fromCharCode(91) .
String.fromCharCode(93));
for (i = 0; i < userArray.length; i++) {
if (userArray[i].selected) {
hasPickedUsers = true;
break;
}
}
if (!hasPickedUsers) {
alert("Velg brukern for report");
return false;
}
hasPickedType = false;
for (i = 0; i < document.reportForm.reportType.length; i++) {
if (document.reportForm.reportType[i].checked) {
hasPickedType = true;
break;
}
}
if (!hasPickedType) {
alert("Velg reportstil");
return false;
}
hasPickedInfo = false;
for (i = 0; i < document.reportForm.reportInfo.length; i++) {
if (document.reportForm.reportInfo[i].checked) {
hasPickedInfo = true;
break;
}
}
if (!hasPickedInfo) {
alert("Velg reportinfo");
return false;
}
}
//-->
</script>
<body>
<h2><?= $font ?>Jeg vill f&#229; <?= $brand ?>s reporten!</font></h2>
<a href=<?= $PHP_SELF ?>>Reset for ny reporten</a>
<form name=reportForm method=post action="<?= $PHP_SELF ?>"
onSubmit="return isValidReportOption()">
<?= $font ?>Velg brukern for reporten:</font><br>

<?
$reportQuery = $report->getUsers();
echo $report->userDropdown($reportQuery);
?>

<p>
<?= $font ?>Velg reportstil:</font><br>

<? echo $report->getTypes($report->getReportStilTypes(), 'reportType'); ?>

<p>
<?= $font ?>Velg reportinfo:</font><br>

<? echo $report->getTypes($report->getReportInfoTypes(), 'reportInfo'); ?>

<p>
<input type=hidden name=hasChosenReport value=1>
<input type=submit name=submit value="F&#229; Min Report Nu!"
class=blue_button>
</form>
</body>
</html>

<?
$report->dbClose();
$report = null;
}
?>


 
Reply With Quote
 
 
 
 
Manuel Lemos
Guest
Posts: n/a
 
      10-19-2003
Hello,

On 10/19/2003 05:34 PM, Phil Powell wrote:
> Has anyone here ever done a case where you have a select multiple form
> element and you have to do both server-side and client-side validation?
>
> I am honestly not sure how to do it in Javascript (I keep getting errors
> thrown that I can't verify because the form processes onto itself too
> quickly for me to check the Javascript errors) because the select multiple
> form element name has to be in the form of "var[]" because PHP will then
> recognize $var as an array and not as a scalar (if it sees "$var" it will
> only capture the LAST element you entered in the select multiple, if it sees
> "$var[]" it gets them all).
>
> However, "var[]" is not friendly to Javascript either, at least as far as I
> can tell. So, what I need to find out is how anyone out there has ever
> dealt with select-multiple form elements for BOTH Javascript AND PHP.


This class does exactly what you need:

http://www.phpclasses.org/formsgeneration

--

Regards,
Manuel Lemos

Free ready to use OOP components written in PHP
http://www.phpclasses.org/

 
Reply With Quote
 
 
 
 
Janwillem Borleffs
Guest
Posts: n/a
 
      10-19-2003

"Phil Powell" <(E-Mail Removed)> schreef in bericht
news:HIBkb.89636$0Z5.7232@lakeread03...
>
> I am honestly not sure how to do it in Javascript (I keep getting errors
> thrown that I can't verify because the form processes onto itself too
> quickly for me to check the Javascript errors) because the select multiple
> form element name has to be in the form of "var[]" because PHP will then
> recognize $var as an array and not as a scalar (if it sees "$var" it will
> only capture the LAST element you entered in the select multiple, if it

sees
> "$var[]" it gets them all).
>


The usage of $var[] is not mandatory when you are able to parse the
$HTTP_RAW_POST_DATA string, which will be the case when you have enabled the
option 'always_populate_raw_post_data' in your php.ini file.

When the form method is set to GET you should parse
$_SERVER['QUERY_STRING'].

> However, "var[]" is not friendly to Javascript either, at least as far as

I
> can tell. So, what I need to find out is how anyone out there has ever
> dealt with select-multiple form elements for BOTH Javascript AND PHP.
>


You can get around it by accessing the JavaScript Form object's elements
array:

<script language="JavaScript">
function showSelected(form) {
var s = form.elements['var[]'];
for (var i = 0; i < s.length; i++) {
if (s[i].selected) alert (s[i].value);
}
}
</script>
.....
<form method="post">
<select name="var[]" multiple="true" size="4">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<br />
<input type="button" value="Check" onclick="showSelected(form)" />
</form>

BTW, this is a FAQ in the comp.lang javascript newsgroup. See
http://www.jibbering.com/faq/ for more info.


JW



 
Reply With Quote
 
Thomas 'PointedEars' Lahn
Guest
Posts: n/a
 
      10-19-2003
Phil Powell wrote:

> However, "var[]" is not friendly to Javascript either, at least as far as I
> can tell.


You cannot use document.formname.elements.var[] because
`['...`]' is the index operator in JavaScript. Use
document.forms['formname'].elements['var[]'] instead.

> <?


I suggest you disable short tags and use `<?php' instead.

> <html>
> <head>
> <title><?= $brand ?>s Report</title>
> <link rel=stylesheet href=/stylesheets/nordicnet_style.css type=text/css>
> </head>
> <script>


That's invalid HTML. The DOCTYPE declaration is missing before the `html'
element, the charset declaration with the `meta' element is missing in the
`head' element and the `type' attribute is missing for the `script' element.
Also attribute values that contain the `/' character must be enclosed
in single or double quotes. (You should always enclose attribute values in
quotes as there are more characters that require quotes and
lookup/correction takes time.)

---> http://validator.w3.org/

> [...]
> <script>
> <!--
> function isValidReportOption() {
> hasPickedUsers = false;


The `var' keyword is missing, you are defining global variables which you
want to avoid.

> userArray = eval('document.reportForm.users' . String.fromCharCode(91) .
> String.fromCharCode(93));


eval(...) is evil[tm] and you are mixing PHP and JavaScript. In
JavaScript, the string concatenation operator is `+', not `.':

var userArray = document.forms['reportForm'].elements['users[]'];


F'up2 comp.lang.javascript

PointedEars

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
PHP Training Institute In Delhi, Live Projects on PHP. Short TermPHP Courses, PHP Scripts, PHP Training with Live Projects. Rajive Narain Java 0 09-18-2009 10:47 AM
A form validation library with javascript validation Grigory Temchenko Python 0 12-28-2008 08:38 PM
Validate your html forms with javascript and php with a simple php class __ Javascript 1 10-02-2007 11:06 AM
Writing a PHP and Javascript generated page to a PHP variable... jonnyblazed@gmail.com Javascript 3 09-04-2006 12:45 PM
How is a PHP (.php) or JavaScript web site spidered by search engines? eastcoastguyz Javascript 1 07-11-2006 03:52 AM



Advertisments