开发者

How to get the value of html <input type="hidden"> in PHP?

I am a certifid newbie so pls be patient with me if my question might sound very idiotic to you.

Hi guys. Im trying to get the value of an html <input type="hidden"> using PHP. The value of that hidden element is passed from Javascript and I need to display the value of that hidden element by using php echo. From what I understand (I hope I understood it right) when you do something like $description = isset($_GET['description']) ? $_GET['description'] : null; and also <input type="hidden" id="description" value="<?php echo $description; ?>" /> you can access/display the value of the hidden element by using <?php echo $_GET['description']; ?> but I am getting an undefined index: description. I am a total noob so I am really confused about this. I hope my question is not that confusing. Anyway I am very willing to answer probing questions.

BTW, here are the codes:

index.php

<?php include('functions.php'); ?>

<?php 
 $yr = isset($_GET['year_list']) ? $_GET['year_list'] : null;
 $evnt = isset($_GET['event_list']) ? $_GET['event_list'] : null; 
 $description = isset($_GET['description']) ? $_GET['description'] : null; 
?>

<html>
<head>
 <script type="text/javascript" src="myscripts.js"></script>
 <style type='text/css'>
  #show_description {
   min-height: 100px;
   min-width: 500px;
   max-height: 100px;
   max-width: 500px;
   background-color: #000;
   color: #fff;
   padding: 10px;
  }
 </style>
</head>
<body onload="check_year_event();">
 <div>
  <form name="myform" action="index.php" method="get" >
   <input type="hidden" id="hidden_year_list" value="<?php echo $yr; ?>" />
   <input type="hidden" id="hidden_event_list" value="<?php echo $evnt; ?>" />
   <input type="hidden" id="description" value="<?php echo $description; ?>" />

   Select Year: <?php echo hspacer(1); ?>
   <select id="year_list" name="year_list" onchange="check_year_event();" >
   <?php  
    for($year = (date('Y') - 100); $year <= (date('Y') + 100); $year++ ) {
     if ($year == date('Y'))  echo "<option value='$year' name='$year' selected='' >" . $year . "</option>";
     else echo "<option value='$year' name='$year' >" . $year . "</option>";
    }
   ?>
   </select>
   <?php echo hspacer(5); ?>
   Select Event:  <?php echo hspacer(1); ?>
   <select id="event_list" name="event_list" onchange="check_year_event();" >
   <?php  
    $events = array("Karate Tournament", "Beauty Pageant", "Film Festival", "Singing Contest", "Wedding");

    foreach($events as $event) echo "<option value='$event' name='$event' >" . $event . "</option>";
   ?>
   </select>
   <?php echo vspacer(2); echo hspacer(22); ?>
   <input type="submit" id="send_notice" value="Send Notice" onclick="check_year_event(); return false; "/> 
  </form>
 </div>

 <div id="show_description" >
  <?php echo $_GET['description']; ?>
 </div>

</div>
</body>
</html>

functions.php

<?php
 function hspacer($num_of_spaces) {
  $spaces = "";
  if ($num_of_spaces > 0)  for($i=0; $i<$num_of_spaces; $i++ )  $spaces .= "&nbsp;";

  return $spaces;
 }

 function vspacer($num_of_linefeeds) {
  $linefeeds = "";
  if ($num_of_linefeeds > 0)  for($i=0; $i<$num_of_linefeeds; $i++ )  $linefeeds .= "<br />";

  return $linefeeds;
 }
?>

myscripts.js

function create2DArray(row, col){
 var array2D = new Array(row);

 for (var i = 0; i < row; i++) {
  array2D[i] = new Array(col);
 }

 return array2D;
}


function check_year_event() {
 var years_and_events = create2DArray(10, 3);


 years_and_events[0][0] = 2001; 
 years_and_events[0][1] = "Karate Tournament"; 
 years_and_events[0][2] = "Annual karate tournament held globally"; 
 years_and_events[1][0] = 2002; 
 years_and_events[1][1] = "Beauty Pageant"; 
 years_and_events[1][2] = "Beauty pageant held globally"; 
 years_and_events[2][0] = 2003; 
 years_and_events[2][1] = "Film Festival"; 
 years_and_events[2][2] = "Film festival held globally"; 
 years_and_events[3][0] = 2004; 
 years_and_events[3][1] = "Singing Contest"; 
 years_and_events[3][2] = "Singing contest tournament held globally"; 
 years_and_events[4][0] = 2005; 
 years_and_events[4][1] = "Wedding"; 
 years_and_events[4][2] = "Wedding tournament held globally"; 
 years_and_events[5][0] = 2007; 
 years_and_events[5][1] = "Karate Tournament"; 
 years_and_events[5][2] = "Annual karate tournament held globally"; 
 years_and_events[6][0] = 2008; 
 years_and_events[6][1] = "Beaty Pageant"; 
 years_and_events[6][2] = "Beauty pageant held globally"; 
 years_and_events[7][0] = 2009; 
 years_and_events[7][1] = "Film Festival"; 
 years_and_events[7][2] = "Film festival held globally"; 
 years_and_events[8][0] = 2010; 
 years_and_events[8][1] = "Singing Contest"; 
 years_and_events[8][2] = "Singing contest tournament held globally"; 
 years_and_events[9][0] = 2011; 
 years_and_events[9][1] = "Wedding"; 
 years_and_events[9][2] = "Wedding tournament held globally"; 


 var year = document.getElementById('year_list')开发者_JAVA技巧.value;
 var event = document.getElementById('event_list').value;
 var found = false;

 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {
    document.getElementById('description').value = years_and_events[i][2];
    document.getElementById('send_notice').style.visibility = "hidden";
    document.getElementById('show_description').style.visibility = "visible";
    found = true;
    break;
   }
  }

 if (found == false) {
  document.getElementById('show_description').style.visibility = "hidden";
  document.getElementById('send_notice').style.visibility = "visible";
 }
}


You need to give the input a name. So:

<input name="description" />


Inside the show_description div replace $_GET['description'] with $description.

EDIT: I think I understand why you are confused now. If you want to display the value of the description input in the show_description div, you need to use javascript to do that. PHP is server side and it only runs once, when the page is requested by the browser. If you are doing anything that happens after the page is loaded, you need to use javascript. That said, make this change to your check_year_event() function.

 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {
    document.getElementById('description').value = years_and_events[i][2];
    document.getElementById('show_description').innerHTML = years_and_events[i][2];
    document.getElementById('send_notice').style.visibility = "hidden";
    document.getElementById('show_description').style.visibility = "visible";
    found = true;
    break;
  }
 }

And remove the echo $_GET['description'] from the index.php file


You would need to set the name of the <input type="hidden"> like <input type="hidden" name="hiddenfield">

Then you can reference this field in the PHP by $_GET['hiddenfield']. Make sure the input is in the form.


You need to give your input a name, an id or both: <input type="hidden" id="foo">

A few side notes...

There's a very useful javascript library that you might want to try:

http://jquery.com/

It comes with multitudes of UI elements and plugins, and allows to do many things in a much simpler way than what you're currently writing.

You might also want to document yourself a bit on SQL injections, cross-site scripting and cross-site request forgery. A lot of stuff needs to be escaped in your code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜