Jump to content

[SOLVED] showing variable in drop down.


denoteone

Recommended Posts

I want to show the selected month as the drop down default if the form has been submitted.  I am getting ".4." in the drop down and the rest of the form is not showing? can anyone see what I am doing wrong?

 

<form action="<?=$PHP_SELF?>" method="post">
       Month: <select name="month" id="month">
<?PHP if(isset($_POST["B1"])){
         echo  '<option value="please pick" > .'  . $_POST['month'] .  ' .</option>';
}else{
echo '<option value="please pick" >Select</option>';
} ?>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">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>
        </select>

Link to comment
Share on other sites

The most important part of the code is...

 

if(isset($_POST["B1"])){
         echo  "<option value=\"please pick\" >$_POST['month']</option>";
}else{
echo "<option value=\"please pick\" >Select</option>";
} ?>

can I just add a post variable in the middle of the echo like the above example?

Link to comment
Share on other sites

if(isset($_POST["B1"])){
         echo  "<option value=\"please pick\" >$_POST['month']</option>";
}else{
echo "<option value=\"please pick\" >Select</option>";
} ?>

can I just add a post variable in the middle of the echo like the above example?

 

Arrays that use a quote around the index aren't parsed correctly within double quotes. But, you can wrap the variable within brackets

echo  "<option value=\"please pick\" >{$_POST['month']}</option>";

 

I tend to wrap all my variables in brackets when they are included in strings with double quotes.

 

Don't know why you are having the issue described above. Have you check the HTML output source for any clues?

Link to comment
Share on other sites

This is a good solution for what you are doing:

 


<?php

echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
echo "Month: <select name=\"month\" id=\"month\">";

$topValue = isset($_POST['month'])?intval($_POST['month']):"Select";

         echo  "<option value=\"please pick\" >".$topValue."</option>";
         echo  "<option value=\"1\">1</option>";
         echo  "<option value=\"2\">2</option>";
         echo  "<option value=\"3\">3</option>";
         echo  "<option value=\"4\">4</option>";
         echo  "<option value=\"5\">5</option>";
         echo  "<option value=\"6\">6</option>";
         echo  "<option value=\"7\">7</option>";
         echo  "<option value=\"8\">8</option>";
         echo  "<option value=\"9\">9</option>";
         echo  "<option value=\"10\">10</option>";       
         echo  "<option value=\"11\">11</option>";
         echo  "<option value=\"12\">12</option>";
         echo  "</select>";

Link to comment
Share on other sites

I did not read the original topic, but just improving mtoynbee's code a tad :)

 

<?php
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
echo "Month: <select name=\"month\" id=\"month\">";

$topValue = isset($_POST['month'])?intval($_POST['month']):"Select";

         echo  "<option value=\"please pick\" >".$topValue."</option>";
         for ($i=1; $i < 13; $i++) 
               echo  "<option value=\"{$i}\">{$i}</option>";
         echo  "</select>";

 

Why have all those echos when you can have it easily generated for you :)

Link to comment
Share on other sites

Was trying to keep it as close to the original script as possible.

 

However I would actually use my selectbox function...

 


if (!function_exists('SelectBox')) {
function SelectBox($name,$class,$vars,$labels,$js=false,$alphabetise=false,$status=false,$selected_value=false,$dont_title_case=false,$return_as_variable=false) {

if ($selected_value) {
	$selected_value = ereg_replace("\(","\\(",$selected_value);
	$selected_value = ereg_replace("\)","\\)",$selected_value);
	$selected_value = ereg_replace("\?","\\?",$selected_value);
	if (!eregi("\^|",$vars)) { $remove_bars = true; }
	$vars = "|".$vars."|";
	$vars = ereg_replace("\|".$selected_value."\|", "\|".$selected_value."*\|", $vars);
	if (substr($vars, -1) == "|" && !$remove_bars) { $vars = substr($vars,1,-1); }
	if (substr($vars, -1) == "|" && $remove_bars) { $vars = substr($vars,0,-1); }
	$vars = stripslashes($vars);
	unset($selected_value);
	if ($remove_bars) { $vars = substr ($vars,1); }
}

if (eregi("\(Blanks\)",$labels)) { $rearrange_array = true; }

$class = explode ("|",$class);
$vars = explode ("|",$vars);
$labels = explode ("|",$labels);

if ($alphabetise) {
	if ($rearrange_array) {
		$labels = array_slice($labels, 0, count($labels) - 2);
		$vars = array_slice($vars, 0, count($vars) - 2);
		array_multisort($labels, SORT_ASC, SORT_STRING, $vars, SORT_NUMERIC, SORT_DESC);
		array_push($labels, "(Blanks)", "(NonBlanks)");
		array_push($vars, "(Blanks)", "(NonBlanks)");
	} else {
		array_multisort($labels, SORT_ASC, SORT_STRING, $vars, SORT_NUMERIC, SORT_DESC);
	}
}

if ($js == "redirect_blank") { $js = "window.open(this.form.$name.options[this.form.$name.selectedIndex].value);"; }
if ($js == "redirect") { $js = "location=this.form.$name.options[this.form.$name.selectedIndex].value;"; }
if ($js) {
if (!eregi("^onfocus",$js) && !eregi("^onblur",$js) && !eregi("^onclick",$js) && !eregi("^onmouseover",$js)) { $js = " onchange=\"$js\""; }
}
$returned_sb = "<select name=\"$name\" id=\"$name\" class=\"$class[0]\"$js  $status>";
for ($i=0;$i<count($labels);$i++) {
	if ($class[1] && $i > 0) { $class[0] = $class[1]; }
	if (eregi("\*",$vars[$i])) {
		$vars[$i] = ereg_replace ("\*", "", $vars[$i]);
		$labels[$i] = ereg_replace ("\*", "", $labels[$i]);
		$returned_sb.= "<option class=\"$class[0]\" value=\"".trim($vars[$i])."\" selected=\"selected\">".strtotitle(trim($labels[$i]),$dont_title_case)."</option>";
	} else {
		$returned_sb.= "<option class=\"$class[0]\" value=\"".trim($vars[$i])."\">".strtotitle(trim($labels[$i]),$dont_title_case)."</option>";
	}
}
$returned_sb.= "</select>";

if ($return_as_variable == true) {
	return $returned_sb;
} else {
	echo $returned_sb;
}
}
}


Link to comment
Share on other sites

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.