Jump to content

Recommended Posts

Newb here.

 

My form works with sessions and the video loads etc, data submits, etc. all that is good. But i've gotten lost in the complexity of the build it seems and my html has become malformed I think. As a result each submission or page reload inserts another form inside the form inside the form etc etc etc. It some sort of weird looping madness or something. I'm very new to classes and how they work and i can't find where the madness is coming from. 

 

To duplicate the error, fill out the form and submit (the video won't play in firefox so use safari or chrome to test).

 

I've been trying to resolve this for hours - i'm very lost in the complexity.

 

 

test.png

<?php

# '../' == sub-folder.  use './' == root
require '../inc_0700/config_inc.php'; #provides configuration, pathing, error handling, db credentials

echo '<link rel="stylesheet" type="text/css" href="w05c09_gojiraIncidentReport.css">';
//END CONFIG AREA ----------------------------------------------------------

# 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!
        showObjects();
        break;

    case "clear": # 3 Clear the session data
        clearObjects();
        showForm();
        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

    echo
    '<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,"Please Enter Your Name")){return false;}
            return true;//if all is passed, submit!
        }
    </script>


	<video id="bgVideo" preload="auto" autoplay="true" loop="loop" muted="muted" volume="0" poster="_bgGrfxs/bg_vidGlobe.jpg">
		<source src="_bgVideo/bg_vidLoop.mp4" type="video/mp4"/>
		<source src="_bgVideo/bg_vidLoop.ogv" type="video/ogg"/>
	</video>



	<!-- This image stretches exactly to the browser width/height and lies behind the video-->

	<div id="bodyDummy">
		<!-- <h3 align="center"">' . smartTitle() . '</h3>-->
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />

		<form align="center" action="' . THIS_PAGE . '" method="post" onsubmit="return checkForm(this);">
			<img width="10%" src="img_logo-panPacificDefenseCenter.png" alt="Kaiju Incident Reporter"/>

			<br />
				<h2 style="color: #ff6d26;">Incident Report Form</h2>
			<br />

			<!-- incWho? -->
			<br />
				<b>Reporting Officer ID:</b><br />
				<input type="text" name="incWho" placeholder="Please enter your full name here" />
			<br />
			<br />


			<!-- incWhat -->
				<b><a id="orange" href="http://godzilla.wikia.com/wiki/Main_Page">Massive Unidentified Terrestrial Organism encountered:</a></b><br />
					<select
						type="text"
						name="incWhat"
						data-placeholder="Select Incident Location..."
						class="chzn-select"
						multiple style="width:354px;"
						tabindex="40">
					';

				include 'ddlist-Kaiju.php';
			echo '</select>
			<br />
			<br />


			<!-- incWhen = date of incident -->
				<b>Date of Incident:</b><br />
				<input type="text" name="incWhen" placeholder="Please enter your full name here" />
			<br />
			<br />


			<!-- incWhere -->
				<b>Incident Location:</b><br />
					<select
						type="text"
						name="incWhere"
						data-placeholder="Select Incident Location..."

						multiple style="width:354px;"
						tabindex="111">
					';

				include 'ddlist-countriesInternational.php';
			echo '</select>

				<br />
				<br />


			<!-- incWhy -->
					<b>Incident notes:</b><br />
					<textarea name="incWhy"
						cols="54" rows="3"
						placeholder="Please enter any details you can recall of the incident - if incident is still occurring run" ></textarea>
				<br />
				<br />


			<!-- incScale -->
			    <b>Rate the severity of the incident (0 to 5):</b>
				<br />
				<br />
			    <input type="range"
					data-show-value="true"
					data-hightlight="true"
					data-popup-enabled="true"
					name="incScale" min="0" max="5" value="0" onchange="updateTextInput(this.value);">
				<br />
				<br />

			    <input id="go" type="submit" value="Go!">

				</p>
			<input type="hidden" name="act" value="display" />
		</form>
		<br />
		<p style="#444"><i>Once you have completed your incident report, Run! For the love god man run, run for the hills and be safe!</i></p>
		';
    get_footer(); #defaults to footer_inc.php

    echo '</div><!-- END bodyDummy -->';
}

function showObjects()
{#form submits here we show entered name
    //dumpDie($_POST);

    //if the session is not started, that could be a problem
    get_header(); #defaults to footer_inc.php
    if(!isset($_SESSION)){session_start();}

	echo "<br />";

    if(!isset($_SESSION['kSession']))
    {//if no session exists, create it
    $_SESSION['kSession']= array();
    }

    //we need to add post data here
    $_SESSION['kSession'] [] = new incReport($_POST['incWho'], $_POST['incWhat'], $_POST['incWhen'], $_POST['incWhere'], $_POST['incWhy'], $_POST['incScale']);

    $totalScale = 0;
    foreach($_SESSION['kSession'] as $incReport)//loop thru each array item
    {
    	echo $incReport;
    	$totalScale += $incReport->incScale;
    }

    $totalReports = count($_SESSION['kSession']);

    $aveRating = $totalScale/$totalReports;
    	echo '<div style="margin: auto; padding:0 10px; background-color:#ff6d26;width: 300px";><p style="color:white;">Average Incident Severity:</p> <h1 style="color:white;";>';

    	echo "$aveRating";
    	echo'</h1></div>';

    	if ($aveRating == 5){ echo '<p>Five: We suggest you make peace with this, your final moment.. enjoy the sunset before that giant foot comes down on you.</p>';}
    	if ($aveRating == 4){ echo '<p>Four: The end is near, run man run, she isn\'t worth it, save yourse<p>lf.</p>';}
    	if ($aveRating == 3){ echo '<p>Three: And your still there? Seriously?</p>';}
    	if ($aveRating == 2){ echo '<p>Two: Take a picture, it will last longer. Now. Run for the hills!</p>';}
    	if ($aveRating == 1){ echo '<p>One: Have you considered running?</p>';}
    	if ($aveRating == 0){ echo '<p>Zero: This would be a good time to consider moving to a safer vantage point.</p></form></div><!--end dummy-->';}



    	//get_footer(); #defaults to footer_inc.php

    //------end of work area-------//

    get_header(); #defaults to footer_inc.php
    if(!isset($_POST['incWho']) || $_POST['incWhat'] == ''){//data must be sent
        feedback("No form data submitted"); #will feedback to submitting page via session variable
        myRedirect(THIS_PAGE);
    }

    if(preg_match('[^A-Za-z0-9]', $_POST['incWho'])){//data must be alphanumeric only
        feedback("Only letters & numbers are allowed."); #will feedback to submitting page via session variable
        myRedirect(THIS_PAGE);
    }

    $myName = strip_tags($_POST['incWho']);# here's where we can strip out unwanted data
	}


	function clearObjects(){
		//echo "clearing objects here";
		if(!isset($_SESSION)){session_start();}
		unset($_SESSION['kSession']);
		feedback("session cleared");
	}

	class incReport{
		public $incWho = "";
		public $incWhat = "";
		public $incWhen = "";
		public $incWhere = "";
		public $incWhy = "";
		public $incScale = "";


		function __construct($incWho, $incWhat, $incWhen, $incWhere, $incWhy, $incScale){
			$this->incWho=$incWho;
			$this->incWhat=$incWhat;
			$this->incWhen=$incWhen;
			$this->incWhere=$incWhere;
			$this->incWhy=$incWhy;
			$this->incScale=$incScale;
		}


    function __toString(){
	static $kID = 1;//kaiju incident number

        $myReturn = '<video id="bgVideo" preload="auto" autoplay="true" loop="loop" muted="muted" volume="0" poster="_bgGrfxs/bg_vidGlobe.jpg">
		<source src="_bgVideo/bg_vidLoop.mp4" type="video/mp4"/>
		<source src="_bgVideo/bg_vidLoop.ogv" type="video/ogg"/>
		</video>

		<div id="bodyDummy">
		<br />
		<br />
		<br />
		<br />
		<br />
		<br />
    	<form><p> Incident ID: kID00' . $kID ; //works
        $kID++; //iterate report

        $myReturn .= ' | Incident Reported by: ' . $this->incWho . '   ' ;//works

        $myReturn .= ' | Massive Terrestial Organsim Observed: ' . $this->incWhat . '   ' ;//shows where...
        $myReturn .= ' | Date of Incident: ' . $this->incWhen . '   ' ; //works
        $myReturn .= ' | Incident Location: ' . $this->incWhere . ' '; //shows what
        $myReturn .= ' | Incident Details: ' . $this->incWhy. ' '; // working
        $myReturn .= ' | Incident Severity: ' . $this->incScale . '</p>

        <p align="center"><a href="' . THIS_PAGE . '">File Report, then Run!</a> | <a href="' . THIS_PAGE . '?act=clear">Reset</a></p>
        ' ;

        return $myReturn;
    }
}

Nobody can run that but you, would probably do more good to post the html source code or the link to your page.

 

But .....why not start using some dividers instead and check with a html validator

 

Try to keep all your coding up top, and do the html all neatly below.

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.