Undefined Variable

Place for questions and answers for all newcomers and new coders. This is a free for all forum, no question is too stupid and to noob.
Post Reply
User avatar
Xaos
Posts: 940
Joined: Wed Jan 11, 2012 4:01 am

Undefined Variable

Post by Xaos »

Alright. So i got MikeD to fix my problem of showing different forms based on a selection in jQuery, but now I'm getting undefined "climate" on line 4 of sim.php


Sim.php

Code: Select all

<?php
$predators = $_POST['predators'];
$disaster = $_POST['disaster'];
$climate = $_POST['climate'];
$food = $_POST['food'];
$disease = $_POST['disease'];
$water = $_POST['water'];



$water = $water* 6;
$food = $food* 5;
$predators = 40-($predators * 4);
$disease = 30-($disease * 3);
$disaster = 20-($disaster * 2);

if($climate == "Temperate"){
  $climate = 49;
}elseif($climate == "Subtropical"){
  $climate = 42;
}elseif($climate == "Tropical"){
  $climate = 36;
}elseif($climate == "Semiarid"){
  $climate = 24;
}elseif($climate == "Arid"){
  $climate = 18;
}elseif($climate == "Polar"){
  $climate = 6;
}else{die;}

$finalscore = $predators + $disaster + $climate + $food + $disease + $water;


if($finalscore >= 216){
  echo "Your projected success rate lies between 90% and 100%. You have great chances.";
}elseif($finalscore >= 192){
  echo "Your projected success rate lies between 80% and 90%. You have pretty good chances.";
}elseif($finalscore >= 168){
  echo "Your projected success rate lies between 70% and 80%. You have have alright chances.";
}elseif($finalscore >= 144){
  echo "Your projected success rate lies between 60% and 70%. You have slightly above average chances.";
}elseif($finalscore >= 120){
  echo "Your projected success rate lies between 50% and 60%. You have very average chances.";
}elseif($finalscore >= 96){
  echo "Your projected success rate lies between 40% and 50%. You have below average chances.";
}elseif($finalscore >= 72){
  echo "Your projected success rate lies between 30% and 40%. You have relatively low chances.";
}elseif($finalscore >= 48){
  echo "Your projected success rate lies between 20% and 30%. You have very low chances.";
}elseif($finalscore >= 30){
  echo "Your projected success rate lies between 10% and 20%. You have almost no chance.";
}elseif($finalscore < 30){
  echo "Your projected success rate lies between 0% and 10%. You have near impossible chances and face near apocolypse.";


}else{die;}
echo $finalscore;
?>
Stuff.html

Code: Select all

<?php
    if (isset($_POST['submit']) {
$predators = $_POST['predators'];
$disaster = $_POST['disaster'];
$climate = $_POST['climate'];
$food = $_POST['food'];
$disease = $_POST['disease'];
$water = $_POST['water'];
$primary = $_POST['primary'];

    }
?>


<html>
<div id="p1">
<form action="sim.php" method="post">
        Climate<select id="climate">
        <option value="Tropical">Tropical</option>
        <option value="Subtropical">Subtropical</option>
        <option value="Polar">Polar</option>
        <option value="Arid">Arid</option>
        <option value ="Semiarid">SemiArid</option>
        <option value="Temperate">Temperate</option>
    </select>
</form>


        </div>


        <style type = "text/css">
            #p1{
                margin-top:150px;
                margin-left:670px;
            }
        </style>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="JS.js"></script>

</html>

JS.js

Code: Select all

/*$(document).on('change', "select#climate", function() {

    var climate = $(this).attr("option");

    $("div#View_Menu").remove();

    CardID = $(this).attr('data-id');
    var Div = "div#"+$(this).attr('id');

    $.post('Duel/create_mon_menu.php',{CardID:CardID}, function(data){
        $(Div).append(data);
        $('div#View_Menu').css("visibility","visible");

    });


});*/

$( "select#climate" ).change(function() {

    var Type = $('select#climate').find(":selected").text();

    $.post('Response.php',{Type:Type}, function(data){

        $('div#p1').html(data);

    });

    alert( data );
});

Response.php

Code: Select all

<?php

$Type = $_POST['Type'];
?>
   <html>

        <form action="sim.php" method="post">

        Predator Severity
        <select name="predators">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br><br><br>

        Chance of Natural Disaster
        <select name="disaster">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br><br><br>

        Food Supply
        <select name="food">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br>      <br><br>

        Risk of Deadly Disease
        <select name="disease">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br>  <br><br>

        Access to Water
        <select name="water">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br> <br><br>

        Primary Consumers
        <select name="primary">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>    <br> <br><br>

        <input type="submit" name="submit" value="Submit" />

            </form>
         </html>
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

Re: Undefined Variable

Post by vitinho444 »

I'm not sure why you're using Jquery in a form.
Although, i've found one thing in your jquery script that i think it is not being identified:

Code: Select all

$( "select#climate" ).change(function()
This will use the select tag with the id of climate. And in your select you are only saying that the name of the select is climate, not the ID. I don't think that's the same.

Other than that.. you don't seem to have a select called climate to send the POST["climate"], thus saying it is not defined.

Hope that's the problem :)
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: Undefined Variable

Post by Jackolantern »

Yep, you need to actually give the SELECT tag a name="climate". ID is not picked up on the server-side.
The indelible lord of tl;dr
User avatar
Xaos
Posts: 940
Joined: Wed Jan 11, 2012 4:01 am

Re: Undefined Variable

Post by Xaos »

Oh okay. He probably meant for me to do that, but I neglected to do so. Also, I'm using jQuery because I just want climate to be shown, then depending on which climate you choose, a different form appears
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

Re: Undefined Variable

Post by vitinho444 »

Xaos wrote:Oh okay. He probably meant for me to do that, but I neglected to do so. Also, I'm using jQuery because I just want climate to be shown, then depending on which climate you choose, a different form appears
Ahhh ok :) I didn't notice that sorry.
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
User avatar
Xaos
Posts: 940
Joined: Wed Jan 11, 2012 4:01 am

Re: Undefined Variable

Post by Xaos »

Gah. Still having issues.

Stuff.html

Code: Select all

   if (isset($_POST['submit']) {
$predators = $_POST['predators'];
$disaster = $_POST['disaster'];
$climate = $_POST['climate'];
$food = $_POST['food'];
$disease = $_POST['disease'];
$water = $_POST['water'];
$primary = $_POST['primary'];

    }
?>


<html>
<div id="p1">
<form action="sim.php" method="post">
        Climate<select id="climate" name="cimate">
        <option value="Tropical" name="Tropical">Tropical</option>
        <option value="Subtropical" name="Subtropical">Subtropical</option>
        <option value="Polar" name="Polar">Polar</option>
        <option value="Arid" name="Arid">Arid</option>
        <option value ="Semiarid" name="Semiarid">SemiArid</option>
        <option value="Temperate" name="Temperate">Temperate</option>
    </select>
</form>


        </div>


        <style type = "text/css">
            #p1{
                margin-top:150px;
                margin-left:670px;
            }
        </style>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="JS.js"></script>

</html>

JS.js

Code: Select all

/*$(document).on('change', "select#climate", function() {

    var climate = $(this).attr("option");

    $("div#View_Menu").remove();

    CardID = $(this).attr('data-id');
    var Div = "div#"+$(this).attr('id');

    $.post('Duel/create_mon_menu.php',{CardID:CardID}, function(data){
        $(Div).append(data);
        $('div#View_Menu').css("visibility","visible");

    });


});*/

$( "select#climate" ).change(function() {

    var climate = $('select#climate').find(":selected").text();

    $.post('Response.php',{climate:climate}, function(data){

        $('div#p1').html(data);

    });

    alert( data );
});

Response.php

Code: Select all

<?php

$climate = $_POST['climate'];

?>
   <html>

        <form action="sim.php" method="post" >

        Predator Severity
        <select name="predators">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br><br><br>

        Chance of Natural Disaster
        <select name="disaster">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br><br><br>

        Food Supply
        <select name="food">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br>      <br><br>

        Risk of Deadly Disease
        <select name="disease">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br>  <br><br>

        Access to Water
        <select name="water">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>
        <br> <br><br>

        Primary Consumers
        <select name="primary">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
            <option value="7">Seven</option>
            <option value="8">Eight</option>
            <option value="9">Nine</option>
            <option value="10">Ten</option>
        </select>    <br> <br><br>

        <input type="submit" name="submit" value="Submit" />

            </form>
         </html>
Sim.php

Code: Select all

<?php
$predators = $_POST['predators'];
$disaster = $_POST['disaster'];
$climate = $_POST['climate'];
$food = $_POST['food'];
$disease = $_POST['disease'];
$water = $_POST['water'];



$water = $water* 6;
$food = $food* 5;
$predators = 40-($predators * 4);
$disease = 30-($disease * 3);
$disaster = 20-($disaster * 2);

if($climate == "Temperate"){
  $climate = 49;
}elseif($climate == "Subtropical"){
  $climate = 42;
}elseif($climate == "Tropical"){
  $climate = 36;
}elseif($climate == "Semiarid"){
  $climate = 24;
}elseif($climate == "Arid"){
  $climate = 18;
}elseif($climate == "Polar"){
  $climate = 6;
}else{die;}

$finalscore = $predators + $disaster + $climate + $food + $disease + $water;


if($finalscore >= 216){
  echo "Your projected success rate lies between 90% and 100%. You have great chances.";
}elseif($finalscore >= 192){
  echo "Your projected success rate lies between 80% and 90%. You have pretty good chances.";
}elseif($finalscore >= 168){
  echo "Your projected success rate lies between 70% and 80%. You have have alright chances.";
}elseif($finalscore >= 144){
  echo "Your projected success rate lies between 60% and 70%. You have slightly above average chances.";
}elseif($finalscore >= 120){
  echo "Your projected success rate lies between 50% and 60%. You have very average chances.";
}elseif($finalscore >= 96){
  echo "Your projected success rate lies between 40% and 50%. You have below average chances.";
}elseif($finalscore >= 72){
  echo "Your projected success rate lies between 30% and 40%. You have relatively low chances.";
}elseif($finalscore >= 48){
  echo "Your projected success rate lies between 20% and 30%. You have very low chances.";
}elseif($finalscore >= 30){
  echo "Your projected success rate lies between 10% and 20%. You have almost no chance.";
}elseif($finalscore < 30){
  echo "Your projected success rate lies between 0% and 10%. You have near impossible chances and face near apocolypse.";


}else{die;}
echo $finalscore;
?>
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: Undefined Variable

Post by Jackolantern »

Still the same problem? climate is undefined?
The indelible lord of tl;dr
User avatar
Xaos
Posts: 940
Joined: Wed Jan 11, 2012 4:01 am

Re: Undefined Variable

Post by Xaos »

Jackolantern wrote:Still the same problem? climate is undefined?
Aye. And I thought I did everything right. It's undefined in sim.php on line 4
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: Undefined Variable

Post by Jackolantern »

You need to form your HTML better, I think. You are just lumping everything into the HTML tag. Try copy and pasting all of your code that needs to output HTML to be displayed in the browser into this template:

Code: Select all

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">

  <title>The HTML5 Herald</title>
  <meta name="description" content="The HTML5 Herald">
  <meta name="author" content="SitePoint">

  <link rel="stylesheet" href="css/styles.css?v=1.0">  
</head>

<body>
  <script src="js/scripts.js"></script>
</body>
</html>
Of course, if you are using jQuery's ready event, feel free to move any JS scripts back up to the head. But both a HEAD and BODY tag are required. When left out, strange things can happen, such as form data being malformed when sent to the server.
The indelible lord of tl;dr
User avatar
Xaos
Posts: 940
Joined: Wed Jan 11, 2012 4:01 am

Re: Undefined Variable

Post by Xaos »

Code: Select all

<?php
    if (isset($_POST['submit']) {
$predators = $_POST['predators'];
$disaster = $_POST['disaster'];
$climate = $_POST['climate'];
$food = $_POST['food'];
$disease = $_POST['disease'];
$water = $_POST['water'];
$primary = $_POST['primary'];

    }
?>


<!doctype html>
<head>
<div id="p1">
<form action="sim.php" method="post">
        Climate<select id="climate" name="cimate">
        <option value="-" name="-">---------</option>
        <option value="Tropical" name="Tropical">Tropical</option>
        <option value="Subtropical" name="Subtropical">Subtropical</option>
        <option value="Polar" name="Polar">Polar</option>
        <option value="Arid" name="Arid">Arid</option>
        <option value ="Semiarid" name="Semiarid">SemiArid</option>
        <option value="Temperate" name="Temperate">Temperate</option>
    </select>
</form>


        </div>


        <style type = "text/css">
            #p1{
                margin-top:150px;
                margin-left:670px;
            }
        </style>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="JS.js"></script>
                </head>
        <body>

        </body>
</html>

?

I get undefined with thsi, still
Post Reply

Return to “Beginner Help and Support”