Jump to content

Recommended Posts

Newb here trying to build a form that works with ints to count how many red shirts die in a classic episode of star trek (exercise to get better with forms and ints). I have an error which reads as '7 Error message: Undefined index: rsTot'. I have tried a few things and read that setting it(casting it?) as a float was the safest way to work with the int, however each thing i've attempted results in some sort of error so after a day of reading and trying i'm very confused and hoping for an answer I can understand here.


I have read through stackOverflow for an answer but not seen one which i can understand and apply that speaks to the problem i'm having of initially entering and process a number as an int which i can later do some math on.


 


 


error can be seen here: http://zephir.seattlecentral.edu/~jstein11/itc250/z14/w03c0102_OOPform/w03c0102_OOPform.php



<?php //w03c0102_OOPform

require '../inc_0700/config_inc.php'; #provides configuration, pathing, error handling, db credentials

//END CONFIG AREA ----------------------------------------------------------

$rsTot = (float)$_POST['rsTot'];// float more forgiving int
$rsSurvived = (float)$_POST['rsSurvived'];


$rsSum = $rsTot - $rsSurvived;
$rsRatio = 0;


# Read the value of 'action' whether it is passed via $_POST or $_GET with $_REQUEST
if(isset($_REQUEST['act'])){$myAction = (trim($_REQUEST['act']));}else{$myAction = "";}

switch ($myAction)
{//check 'act' for type of process
case "display": # 2)Display user's name!
showName();
break;
default: # 1)Ask user to enter their name
showForm();
}

function showForm()
{# shows form so user can enter their name. Initial scenario
get_header(); #defaults to header_inc.php
?>
<script type="text/javascript" src="<?=VIRTUAL_PATH;?>include/util.js"></script>
<script type="text/javascript">
function checkForm(thisForm)
{//check form data for valid info
if(empty(thisForm.YourName,"Field Empty, please fill out")){return false;}
return true;//if all is passed, submit!
}
</script>
<p align="center"><?=smartTitle();?></p>
<h3 align="center">Star Trek Classic</h3>
<h2 align="center">Death-Shirt Calculator</h2>

<form action="<?=THIS_PAGE;?>" method="post" onsubmit="return checkForm(this);">
<p align="center">Classic Star Trek Episode Name<br />
<input type="text" name="epName" /><br /><br />

Esitmated number of officers with red shirts<br />
<input type="text" name="rsTot" /><br /><br />

Esitmated number of officers with red shirts<br />
to actually survive the episode<br />
<input type="int" name="rsSurvived" /><br /><br />

<input type="submit" value="Go!">
</p>
<input type="hidden" name="act" value="display" />
</form>
<?php
get_footer(); #defaults to footer_inc.php

}

function showName()
{#form submits here we show entered name
get_header(); #defaults to footer_inc.php
if(!isset($_POST['epName']) || $_POST['epName'] == '')
{//data must be sent
feedback("No form data submitted"); #will feedback to submitting page via session variable
myRedirect(THIS_PAGE);
}

if(!ctype_alnum($_POST['epName']))
{//data must be alphanumeric only
feedback("Only letters and numbers are allowed. Please re-enter your name."); #will feedback to submitting page via session variable
myRedirect(THIS_PAGE);
}

$epSubmitted = strip_tags($_POST['epName']);# strip data entered

echo '<h3 align="center">' . smartTitle() . '</h3>';
echo '<p align="center">Episode Name: <b>' . $epSubmitted . '</b><br />';

echo '<p align="center">Total Red Shirts Appearing: <b>' . $rsTot . '<br />';

echo 'Red Shirts Still Breathing at End of Episode: <b>' . $rsSurvived . '<br />';
echo 'Red Shirt Episode Survival Ratio: <b>' . $rsRatio . '</b>!</p>';


echo '<p align="center"><a href="' . THIS_PAGE . '">RESET</a></p>';
get_footer(); #defaults to footer_inc.php
}
?>


Edited by Chezshire

form data will only exist after the form has been submitted. all your form processing code needs to be inside a conditional statement that tests if the expected form has been submitted so that the data values it (the form processing code) references will exist.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.