How to display current selection in a select box

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
LVL 16
SheilsAsked:
Who is Participating?
 
sivagnanam chandrakanthConnect With a Mentor Technical LeadCommented:
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
 
sivagnanam chandrakanthConnect With a Mentor Technical LeadCommented:
use selected attribute in option tag to get the default value selected by default

http://www.w3schools.com/tags/att_option_selected.asp
0
 
SheilsAuthor Commented:
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
2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

 
SheilsAuthor Commented:
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
 
SheilsAuthor Commented:
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
 
sivagnanam chandrakanthTechnical LeadCommented:
add  $selected=""; in else

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

      $selected=" selected ";

      }else{
$selected="";
}
0
 
sivagnanam chandrakanthTechnical LeadCommented:
What do you mean by this //But all the option disappears when there is no data in the field.//

Can you explain more
0
 
SheilsAuthor Commented:
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
 
SheilsAuthor Commented:
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
 
sivagnanam chandrakanthConnect With a Mentor Technical LeadCommented:
your if condition has issue, use two equal to (==)

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

      $selected=" selected ";

      }
0
 
sivagnanam chandrakanthTechnical LeadCommented:
Did you check if condition?
0
 
SheilsAuthor Commented:
ok that fixed it. Thanks a lot mate
0
All Courses

From novice to tech pro — start learning today.