?
Solved

How to display current selection in a select box

Posted on 2013-01-07
12
Medium Priority
?
282 Views
Last Modified: 2013-01-07
I have the following php form which is linked to a mysql database

<?php

$sql="SELECT `fldTransactionId` , DATE_FORMAT( `fldDate` , '%d %b %Y' ) , `fldWithdrawingAccount` , `fldSalesPerson` ,`fldInvoice` , `fldAccount` FROM `tbTransactions` LEFT JOIN `tbAccounts` ON `fldAccountID` = `fldWithdrawingAccount` WHERE `tbTransactions`.`fldtype` =2";

 $j=$_GET['nextrow'];

switch ($_GET['recnav']){

  case "Prev":
      $j=$j-1;
      break;

 case "Next":

  $j=$j+1;
  break;

  case null:
   $j=$j+1;
   break;

  }
  $result=mysql_query($sql);

  switch($j){

      case 0:
      case 1:

            $msg= "This is the first record. You can't go back any further";
            $j=1;
            break;

      case mysql_num_rows($result):

            $msg= "This is the last record";
            break;

      case mysql_num_rows($result)+1:
            $j=mysql_num_rows($result);
            $msg= "This is the last record";
            break;

  //Main form starts here

  echo "<form class='mainform' method='GET' action='../pages/pgMain.php'>";

      echo "<input type='hidden' name='nextrow' value='".$j."'>".$msg."<br/>";
      echo "<input type='hidden' name='navbutton' value='Expenses'>";

      echo "<div>Date:</div><input value='".mysql_result($result, $j-1,1)."' ><br/>";
       echo "<div>Withdrawing Account:</div><input value='".mysql_result($result, $j-1,5)."' ><br/>";

      include "../queries/qryAccounts.php";

      $WithdrawingAccountssql="Select `tbTransactions`.`fldWithdrawingAccount`,`tbAccounts`.`fldAccount` From `tbAccounts` LEFT JOIN `tbTransactions`  ON `tbAccounts`.`fldAccountID`=`tbTransactions`.`fldWithdrawingAccount`";

      $Accounts=mysql_query($WithdrawingAccountssql);

      while ($AccountsRow = mysql_fetch_array($Accounts)){

      $AccountsOption=$AccountsOption."<option VALUE=".$AccountsRow[0].">". $AccountsRow[1]."</option>";

      }

      echo "<div>Withdrawing Account:</div><select>".$AccountsOption."</select><br/>";
      echo "<div>Sales Person:</div><input value='".mysql_result($result, $j-1,3)."' ><br/>";

      echo "<div class='navbuttons'>"
      echo "<input type='submit' name='recnav' value='Prev' />"

      echo "<input type='submit' name='recnav' value='Next' />"

</div>
  echo "</form>

?>

Open in new window


I want the select box on line 66 to show the data in the table when they are available and allow me to edit that data. At present it only shows the first option and does not seem to be linked to the data.

So the question is how do I make the select box show the data for that record and allow me to update.

Thanks
0
Comment
Question by:Sheils
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 6
12 Comments
 
LVL 12

Assisted Solution

by:sivagnanam chandrakanth
sivagnanam chandrakanth earned 2000 total points
ID: 38750042
use selected attribute in option tag to get the default value selected by default

http://www.w3schools.com/tags/att_option_selected.asp
0
 
LVL 16

Author Comment

by:Sheils
ID: 38750056
The form moves through a number of records. So the selected cannot be static. Are you suggesting that I use some more code to move the selected attribute to the relevant option each time I move to a new record?
0
 
LVL 12

Accepted Solution

by:
sivagnanam chandrakanth earned 2000 total points
ID: 38750068
yes use a if condition within while loop to identify and add "selected"


 while ($AccountsRow = mysql_fetch_array($Accounts)){
if(somecondition==somevalue){
$selected='selected';
}
      $AccountsOption=$AccountsOption."<option ".$selected." VALUE=".$AccountsRow[0].">". $AccountsRow[1]."</option>";

      }
0
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 
LVL 16

Author Comment

by:Sheils
ID: 38750115
This code works when there is data in the field. But all the option disappears when there is no data in the field.

while ($AccountsRow = mysql_fetch_array($Accounts)){
      if($AccountsRow[1]=mysql_result($result, $j-1,5)){

      $selected=" selected ";

      }


      $AccountsOption=$AccountsOption."<option".$selected."VALUE=".$AccountsRow[0].">". $AccountsRow[1]."</option>";

      }

      echo "<div>Withdrawing Account:</div><select>".$AccountsOption."</select><br/>";

Open in new window


I believe that it has to do with spacing but I just can't get it right.
0
 
LVL 16

Author Comment

by:Sheils
ID: 38750120
I have tried the following if..else statement to no avail

if($AccountsRow[1]=mysql_result($result, $j-1,5)){

      $selected=" selected ";

      }

      else{
        $selected=" ";
      }
0
 
LVL 12

Expert Comment

by:sivagnanam chandrakanth
ID: 38750124
add  $selected=""; in else

while ($AccountsRow = mysql_fetch_array($Accounts)){
      if($AccountsRow[1]=mysql_result($result, $j-1,5)){

      $selected=" selected ";

      }else{
$selected="";
}
0
 
LVL 12

Expert Comment

by:sivagnanam chandrakanth
ID: 38750130
What do you mean by this //But all the option disappears when there is no data in the field.//

Can you explain more
0
 
LVL 16

Author Comment

by:Sheils
ID: 38750155
Chaged as follows still no luck

while ($AccountsRow = mysql_fetch_array($Accounts)){
      $selected="";
      if($AccountsRow[1]=mysql_result($result, $j-1,5)){

      $selected=" selected ";

      }
      else{
        $selected="";
      }

      $AccountsOption=$AccountsOption."<option ".$selected." VALUE=".$AccountsRow[0].">". $AccountsRow[1]."</option>";

      }

see output on: http://www.wowislandcharter.com/wowaccounts/pages/pgMain.php?nextrow=4&navbutton=Expenses&recnav=Prev
0
 
LVL 16

Author Comment

by:Sheils
ID: 38750166
It looks like the while loop is not running if the if statement is false. I also notice that when is does work the 4 options are the same.
0
 
LVL 12

Assisted Solution

by:sivagnanam chandrakanth
sivagnanam chandrakanth earned 2000 total points
ID: 38750167
your if condition has issue, use two equal to (==)

 if($AccountsRow[1]==mysql_result($result, $j-1,5)){

      $selected=" selected ";

      }
0
 
LVL 12

Expert Comment

by:sivagnanam chandrakanth
ID: 38750190
Did you check if condition?
0
 
LVL 16

Author Comment

by:Sheils
ID: 38750249
ok that fixed it. Thanks a lot mate
0

Featured Post

Get MySQL database support online, now!

At Percona’s web store you can order your MySQL database support needs in minutes. No hassles, no fuss, just pick and click. Pay online with a credit card.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this blog post, we’ll look at how using thread_statistics can cause high memory usage.
In this article, I’ll talk about multi-threaded slave statistics printed in MySQL error log file.
Learn the basics of modules and packages in Python. Every Python file is a module, ending in the suffix: .py: Modules are a collection of functions and variables.: Packages are a collection of modules.: Module functions and variables are accessed us…
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…
Suggested Courses

801 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question