dickm Posted May 4, 2011 Share Posted May 4, 2011 The below code generates a pull down menu list of names that user can select to use. It is one of many input options on the form including text and radio button form options. I am able to store all the other input options to be redisplayed in case of editing needs, but unable to redisplay the user selection from this signature pull down menu. When I return the user to this page currently the signature pull down menu is at the default start display, not the users choice. Any suggestions would be appreciated. <?php require_once ('./php/mysql_connect.php'); // Connect to the db. $cusid=$_SESSION['cusid']; $query="SELECT relcusid, concat(authsign,'-',signtitle) as mysig FROM relsignor WHERE relcusid=$cusid"; $result = mysql_query ($query); echo "<select name = mysig value=''>mysig</option>"; while($nt=mysql_fetch_array($result)){//Array of records stored in $nt echo '<option value=" ' . $nt["mysig"]. ' "> '. $nt["mysig"] .'</option>'; } echo "</select>"; ?> <p><b>Signature to use: </b> </p><br /> <hr /> <div align="center"><input type="submit" name="submit" value="Submit My Information" /> <input type="hidden" name="submitted" value="TRUE" /> </div> Link to comment Share on other sites More sharing options...
HartleySan Posted May 4, 2011 Share Posted May 4, 2011 On page 550 of the 3rd edition, Larry states: "The first time the administrator runs this script, there will be no existing artists. In this case, there won't be any options in this pull-down menu, so an indication to add an artist is made (FIgure 17.15). This otherwise-basic code is complicated by the desire to make the pull-down menu sticky. To make any select menu sticky, you have to add selected="selected" to the proper option. So the code in the while loop checks if $_POST['existing'] is set and, if so, if its value is the same as the current artist ID being added to the menu." On the same page, Larry uses the following code, which can easily be adapted to your needs: while ($row = mysqli_fetch_array($r,MYSQLI_NUM)) { echo "<option value=\"$row[0]\""; if (isset($_POST['existing']) && ($_POST['existing'] == $row[0])) { echo ' selected="selected"'; } echo ">$row[1]</option>\n"; } Well, hope that helps. 1 Link to comment Share on other sites More sharing options...
dickm Posted May 17, 2011 Author Share Posted May 17, 2011 Okay, I have modified my code based on Larry's process on page 550, but am getting the error: //Warning: mysql_fetch_array() expects parameter 2 to be long, string given in C:\xampp\htdocs\preview_setup_AZ_state_form.php on line 343. Line 343 is the while condition line. I can't rely on post I don't think, because my user editing option occurs a few screens later, when they have an option to make changes based on a new display of information so that is why is am using SESSION instead of POST. Any suggestions for corrections would be appreciated. <p><b>Signee to use for this form: </b> </p><br /> <?php require_once ('./php/mysql_connect.php'); // Connect to the db. $cusid=$_SESSION['cusid']; $query="SELECT relcusid, concat(authsign,'-',signtitle) as mysig FROM relsignor WHERE relcusid=$cusid"; $result = mysql_query ($query); if (mysql_num_rows($result) > 0) { while($row=mysql_fetch_array($result, mysql_num )) { echo '<option value=\"$row[0]\"'; if ($_SESSION['my_sig'] == $row) {echo 'selected="selected"'; echo ">$row[1]</option>\n"; } } } Mahalo Link to comment Share on other sites More sharing options...
Larry Posted May 18, 2011 Share Posted May 18, 2011 That's because you are using MYSQL_NUM in lowercase, which doesn't exist. Link to comment Share on other sites More sharing options...
BHB Posted June 18, 2012 Share Posted June 18, 2012 I am a little confused by this piece of code still. Iff one were to have multiple pull down menus (entering say a new artist really not necc) what changes are made? I like the sticky option and think the radio could be dropped. Each menu has its own query so free result used between each menu? Thanks for any suggestions. Link to comment Share on other sites More sharing options...
HartleySan Posted June 18, 2012 Share Posted June 18, 2012 I've been having similar discussions with a fellow board member recently, and I'm starting to think more and more that serializing data to be used in sticky forms (while not relationally sound) isn't such a bad idea. For example, instead of having a separate table or tables for each drop-down lists data, it's a lot more efficient to stick all the data together into one string in one field in a DB. Of course, you'd have to delimit the string somehow so that you can easily split up and reassemble the data for the application and DB, but it seems like it'd save a lot of trouble with having to make too many queries just to make a form sticky. If you meant something else by your post, BHB, please say so. Link to comment Share on other sites More sharing options...
BHB Posted June 18, 2012 Share Posted June 18, 2012 Appears my drop downs are working and the mult queries seem to be happy.. . Might confuse the ids to have one long query. I used a modules foldure from advanced 5 and the redirect path (since my page is an include ). The form path in combination with redirect seem to be causing form not to process and loose the sticky! I am going to step away from the code and work on graphics for a while... Hope subconscious works it out. Link to comment Share on other sites More sharing options...
BHB Posted June 19, 2012 Share Posted June 19, 2012 Well my form is sticky, drop menus work but does not effect my db; I also don't get errors for empty fields. Guess I am close now. Link to comment Share on other sites More sharing options...
BHB Posted June 19, 2012 Share Posted June 19, 2012 this part look right? If(isset($_GET[submitted])) { $url .= ' &submitted=' . urlencode($_GET['name1=question&name2=level&name3=industry']); } I am confused about the data. Dropp menu is the value from id (two tables level and industry each have respective id). The final post to db should be the id not the value. So maybe I need to add more values to the URL. Link to comment Share on other sites More sharing options...
BHB Posted June 19, 2012 Share Posted June 19, 2012 Then adding the base URL for module kills the sticky... Grrrr this is something stupid. Link to comment Share on other sites More sharing options...
Recommended Posts