Ok so i tired reading through your script and then applying it to the events part of the form as well and i got it to add them when selected but for some reason no matter what events number drop down I select it only effects the first swimmer ... what am i doing wrong? ... here is the code now:
signup_form.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Event Signup</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="signup.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="signup.js"></script>
</head>
<body>
<form name="events" action="signup_result.php" method="get">
<fieldset>
<legend>Event Signup</legend>
<p class="selecter_holder">
Number of Swimmers:
<select id="swimmer_number" onChange="changeSwimmerNumber(this.value)">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</p>
<br />
<div id="swimmers_holder">
</div>
</fieldset>
</form>
</body>
</html>
swimmer.php
Code:
<?php
if(isset($_GET['swimmer']))
{
$swimmer_number = $_GET['swimmer'];
}
else
{
$swimmer_number = "Error could not load swimmer";
}
?>
<fieldset>
<legend>Swimmer <?php echo($swimmer); ?></legend>
<p class="inputs_holder">
First name: <input type="text" name="firstName_<?php echo($swimmer); ?>" />
<br />
Last name: <input type="text" name="fastName_<?php echo($swimmer); ?>" />
</p>
<br />
<p class="selecter_holder">
Number of Events:
<select id="<?php echo($swimmer); ?>" name="event_number_<?php echo($swimmer); ?>" onChange="changeEventNumber(this.value, this.id)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4" selected="selected">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
</select>
</p>
<br />
<fieldset>
<legend>Events</legend>
<div id="events_holder_<?php echo($swimmer); ?>">
</div>
</fieldset>
</fieldset>
<?php
$swimmer = '';
?>
event.php
Code:
<?php
if(isset($_GET['event']))
{
$swimmer_number = $_GET['event'];
}
else
{
$swimmer_number = "Error could not load event";
}
?>
<fieldset>
<legend>Event <?php echo($event); ?></legend>
<p class="inputs_holder">
Event Number: <input type="text" name="eventNumber" />
<br />
Event Name: <input type="text" name="eventName" />
</p>
</fieldset>
signup.js
Code:
// JavaScript Document
function changeSwimmerNumber(number_swimmers)
{
document.getElementById("swimmers_holder").innerHTML = "Loading . . ."; // display loading message while fetching contents
getSwimmer.ar = []; // create/reset empty array to hold responses
getSwimmer.swimmers = 0; // create/reset counter
for(i = 1; i <= number_swimmers; ++i)
{
getSwimmer(i, number_swimmers); // pass the total number as the second parameter
}
}
function getSwimmer(swimmer, number_swimmers)
{
var xmlhttp = {}; // create a local instance of xmlhttp that will not be overwritten by others (if any) in this run
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var htmlReturn = xmlhttp.responseText;
++getSwimmer.swimmers; // increment the counter
getSwimmer.ar[swimmer] = htmlReturn; // put this response in its proper order in the array
if(getSwimmer.swimmers == number_swimmers) // if the counter equals the total
{
document.getElementById("swimmers_holder").innerHTML = getSwimmer.ar.join('');
}
}
}
xmlhttp.open("GET", "swimmer.php?swimmer=" + swimmer, true);
xmlhttp.send();
}
function changeEventNumber(number_events, swimmer_number)
{
eventsHolder = "events_holder_" + swimmer_number;
document.getElementById(eventsHolder).innerHTML = "Loading . . ."; // display loading message while fetching contents
getEvents.ar = []; // create/reset empty array to hold responses
getEvents.events = 0; // create/reset counter
for(i = 1; i <= number_events; ++i)
{
getEvents(i, number_events, eventsHolder); // pass the total number as the second parameter
}
}
function getEvents(swim_event, number_events, eventsHolder)
{
var xmlhttp = {}; // create a local instance of xmlhttp that will not be overwritten by others (if any) in this run
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var htmlReturn = xmlhttp.responseText;
++getEvents.events; // increment the counter
getEvents.ar[swim_event] = htmlReturn; // put this response in its proper order in the array
if(getEvents.events == number_events) // if the counter equals the total
{
document.getElementById(eventsHolder).innerHTML = getEvents.ar.join('');
}
}
}
xmlhttp.open("GET", "forms/event.php?event="+ swim_event, true);
xmlhttp.send();
}
changeSwimmerNumber.onload = function()
{ // run onload to display some swimmer(s)
changeSwimmerNumber(document.getElementById('swimmer_number').value);
}
if (window.addEventListener)
{
window.addEventListener('load', changeSwimmerNumber.onload, false);
}
else if (window.attachEvent)
{
window.attachEvent('onload', changeSwimmerNumber.onload);
}
Bookmarks