P
Phil Powell
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.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.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.checked) {
hasPickedInfo = true;
break;
}
}
if (!hasPickedInfo) {
alert("Velg reportinfo");
return false;
}
}
//-->
</script>
<body>
<h2><?= $font ?>Jeg vill få <?= $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å Min Report Nu!"
class=blue_button>
</form>
</body>
</html>
<?
$report->dbClose();
$report = null;
}
?>
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.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.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.checked) {
hasPickedInfo = true;
break;
}
}
if (!hasPickedInfo) {
alert("Velg reportinfo");
return false;
}
}
//-->
</script>
<body>
<h2><?= $font ?>Jeg vill få <?= $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å Min Report Nu!"
class=blue_button>
</form>
</body>
</html>
<?
$report->dbClose();
$report = null;
}
?>