Re: Re: Dynamically Created Checkboxes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2011-02-24 at 12:52 -0500, Gary wrote:
> "Steve Staples" <sstaples@xxxxxxxx> wrote in message 
> news:1298568238.14826.2431.camel@xxxxxxxxxxx
> > On Thu, 2011-02-24 at 11:42 -0500, Gary wrote:
> >> "Steve Staples" <sstaples@xxxxxxxx> wrote in message
> >> news:1298492194.14826.2425.camel@xxxxxxxxxxx
> >> > On Wed, 2011-02-23 at 14:56 -0500, Gary wrote:
> >> >> "Steve Staples" <sstaples@xxxxxxxx> wrote in message
> >> >> news:1298490417.14826.2418.camel@xxxxxxxxxxx
> >> >> > On Wed, 2011-02-23 at 14:17 -0500, Gary wrote:
> >> >> >> "Jim Lucas" <lists@xxxxxxxxx> wrote in message
> >> >> >> news:4D653673.7040604@xxxxxxxxxxxx
> >> >> >> > On 2/23/2011 4:35 AM, Gary wrote:
> >> >> >> >> "Pete Ford" <pete@xxxxxxxxxxxxx> wrote in message
> >> >> >> >> news:62.C1.32612.D49D46D4@xxxxxxxxxxxxxxx
> >> >> >> >>> This bit?
> >> >> >> >>>
> >> >> >> >>> On 22/02/11 22:06, Gary wrote:
> >> >> >> >>>> for($i=1; $i<=$_POST['counties']; $i++) {
> >> >> >> >>>> if ( isset($_POST["county{$i}"] ) ) {
> >> >> >> >>>
> >> >> >> >>> You loop over $_POST['counties'] and look for 
> >> >> >> >>> $_POST["county$i"]
> >> >> >> >>>
> >> >> >> >>> I suspect that there is no field 'counties' in your form, so 
> >> >> >> >>> the
> >> >> >> >>> server
> >> >> >> >>> is
> >> >> >> >>> complaining about the missing index - seems likely that the
> >> >> >> >>> production
> >> >> >> >>> server
> >> >> >> >>> is not showing the error, but instead just giving up on the 
> >> >> >> >>> page.
> >> >> >> >>>
> >> >> >> >>> I think the IE7/Firefox browser difference is a red herring: it
> >> >> >> >>> wasn't
> >> >> >> >>> actually working in any browser, or the code changed between
> >> >> >> >>> tests.
> >> >> >> >>> Remember, PHP is server side and generates HTML (or whatever).
> >> >> >> >>> Unless
> >> >> >> >>> you
> >> >> >> >>> tell the PHP what browser you are using and write PHP code to 
> >> >> >> >>> take
> >> >> >> >>> account
> >> >> >> >>> of that (not generally recommended) then the server output is 
> >> >> >> >>> the
> >> >> >> >>> same
> >> >> >> >>> regardless of browser.
> >> >> >> >>>
> >> >> >> >>> -- 
> >> >> >> >>> Peter Ford, Developer                 phone: 01580 893333 fax:
> >> >> >> >>> 01580
> >> >> >> >>> 893399
> >> >> >> >>> Justcroft International Ltd.
> >> >> >> >>> www.justcroft.com
> >> >> >> >>> Justcroft House, High Street, Staplehurst, Kent   TN12 0AH
> >> >> >> >>> United
> >> >> >> >>> Kingdom
> >> >> >> >>> Registered in England and Wales: 2297906
> >> >> >> >>> Registered office: Stag Gates House, 63/64 The Avenue, 
> >> >> >> >>> Southampton
> >> >> >> >>> SO17
> >> >> >> >>> 1XS
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> Pete
> >> >> >> >>
> >> >> >> >> Once again, thank you for your help.
> >> >> >> >>
> >> >> >> >> I was able to get it to work, I did not understand the browser
> >> >> >> >> differences
> >> >> >> >> either, but on my testing server on IE, it worked as I wanted 
> >> >> >> >> but
> >> >> >> >> not
> >> >> >> >> on
> >> >> >> >> anything else.  I chopped out most of the code and ended up with
> >> >> >> >> this:
> >> >> >> >>
> >> >> >> >> if ( isset($_POST['submit']) ) {} else {
> >> >> >> >> print "<form action=\"phpForm3.php\" method=\"POST\">\n";
> >> >> >> >> if ($Recordset1) {
> >> >> >> >> print "<table width=200 border=1>\n";
> >> >> >> >> print "<th>&nbsp; </th>\n";
> >> >> >> >> print "<th> State </th>\n"; //2 fields in Counties table, State 
> >> >> >> >> and
> >> >> >> >> County
> >> >> >> >> print "<th> County </th>\n";
> >> >> >> >> print "</tr>\n";
> >> >> >> >> //create table
> >> >> >> >> $i = 0;
> >> >> >> >> while ( $row = mysql_fetch_array($Recordset1) ) {
> >> >> >> >> $i++;
> >> >> >> >> print "<tr>\n";
> >> >> >> >> print "<td><input type=\"checkbox\" name=\"county$i\"
> >> >> >> >> value=\"$row[name]\"></td>\n";
> >> >> >> >> echo "<td>{$row['state_id']}</td>\n";
> >> >> >> >> echo "<td>{$row['name']}</td>\n";
> >> >> >> >> echo "</tr>\n";
> >> >> >> >> }//end while
> >> >> >> >> print "</table>\n";
> >> >> >> >> } else {
> >> >> >> >> echo("<P>Error performing query: " .
> >> >> >> >> mysql_error() . "</P>");
> >> >> >> >> }
> >> >> >> >> print "<input type=\"hidden\" name=\"counties\" 
> >> >> >> >> value=\"$i\"/>\n";
> >> >> >> >> print "<input type=\"submit\" name=\"submit\" value=\"Go\"/>\n";
> >> >> >> >> }
> >> >> >> >> ?>
> >> >> >> >>
> >> >> >> >> Again, thank you.
> >> >> >> >>
> >> >> >> >> Gary
> >> >> >> >>
> >> >> >> >> __________ Information from ESET Smart Security, version of 
> >> >> >> >> virus
> >> >> >> >> signature database 5899 (20110223) __________
> >> >> >> >>
> >> >> >> >> The message was checked by ESET Smart Security.
> >> >> >> >>
> >> >> >> >> http://www.eset.com
> >> >> >> >>
> >> >> >> >
> >> >> >> > If you would allow me to show you a little easier way of doing 
> >> >> >> > this.
> >> >> >> >
> >> >> >> > if ( !isset($_POST['submit']) ) {
> >> >> >> >  echo '<form action="phpForm3.php" method="POST">';
> >> >> >> >  if ($Recordset1) {
> >> >> >> >    echo <<<HEADER
> >> >> >> > <table width=200 border=1>
> >> >> >> >  <tr><th> &nbsp; </th><th> State </th><th> County </th></tr>
> >> >> >> > HEADER;
> >> >> >> >    while ( $row = mysql_fetch_array($Recordset1) ) {
> >> >> >> >      echo <<<ROW
> >> >> >> >  <tr>
> >> >> >> >    <td><input type="checkbox" name="county[]"
> >> >> >> > value="{$row['name']}"></td>
> >> >> >> >    <td>{$row['state_id']}</td>
> >> >> >> >    <td>{$row['name']}</td>
> >> >> >> >  </tr>
> >> >> >> > ROW;
> >> >> >> >  }//end while
> >> >> >> >  echo '</table>';
> >> >> >> > } else {
> >> >> >> >  echo '<p>Error performing query: '.mysql_error().'</p>';
> >> >> >> > }
> >> >> >> >  echo '<input type="submit" name="submit" value="Go" />';
> >> >> >> > }
> >> >> >> >
> >> >> >> > Now, the main thing I want you to see is the line for the country
> >> >> >> > checkbox'es
> >> >> >> >
> >> >> >> > The county[] turns the submitted values into an array.  So, in 
> >> >> >> > the
> >> >> >> > processing
> >> >> >> > script, you would do this.
> >> >> >> >
> >> >> >> > <?php
> >> >> >> >
> >> >> >> > ...
> >> >> >> >
> >> >> >> > if ( !empty($_POST['county'])
> >> >> >> >  foreach ( $_POST['county'] AS $id => $name )
> >> >> >> >    echo "{$id} {$name}\n";
> >> >> >> >
> >> >> >> > ...
> >> >> >> > ?>
> >> >> >> >
> >> >> >> > Hope this clears things up for you a little.
> >> >> >> >
> >> >> >> > Enjoy.
> >> >> >> >
> >> >> >> > Jim
> >> >> >>
> >> >> >> In a weird twist, I have/had  the script working, but again it is 
> >> >> >> not
> >> >> >> working in FF or Chrome.  This is a link to the first page which 
> >> >> >> runs
> >> >> >> you
> >> >> >> through the pages.
> >> >> >>
> >> >> >> I have the submit to trigger upon change so there is no submit 
> >> >> >> button.
> >> >> >> This
> >> >> >> works in IE7.  If I add a submit button, it does not work in any of
> >> >> >> them.
> >> >> >>
> >> >> >> I am wondering if this is more a problem with the html.
> >> >> >>
> >> >> >>
> >> >> >> http://www.assessmentappeallawyer.com/forum_state.php
> >> >> >>
> >> >> >> This is the code for the first processing page
> >> >> >>
> >> >> >> if ( !isset($_POST['submit']) ) {
> >> >> >>   echo '<form action="forum_delete.php" method="POST">';
> >> >> >>   if ($Recordset1) {
> >> >> >>     echo <<<HEADER
> >> >> >> <table width=200 border=0>
> >> >> >>   <tr><th> &nbsp; </th><th> State </th><th> County </th></tr>
> >> >> >> HEADER;
> >> >> >>     while ( $row = mysql_fetch_array($Recordset1) ) {
> >> >> >>       echo <<<ROW
> >> >> >>   <tr>
> >> >> >>     <td><input type="checkbox" name="county[]"
> >> >> >> value="{$row['name']}"></td>
> >> >> >>     <td>{$row['state_id']}</td>
> >> >> >>     <td>{$row['name']}</td>
> >> >> >>   </tr>
> >> >> >> ROW;
> >> >> >>   }//end while
> >> >> >>   echo '</table>';
> >> >> >> } else {
> >> >> >>   echo '<p>Error performing query: '.mysql_error().'</p>';
> >> >> >> }
> >> >> >>   echo '<input type="submit" name="submit" value="Select" />';
> >> >> >> }
> >> >> >>
> >> >> >> ?>
> >> >> >>
> >> >> >> ****This is the code for the second processing page.
> >> >> >>
> >> >> >>
> >> >> >> <?php
> >> >> >>
> >> >> >>
> >> >> >> if ( !empty($_POST['county']))
> >> >> >>   foreach ( $_POST['county'] AS $id => $name )
> >> >> >>     echo 'You have selected '. " {$name}".'<br />';
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> $totalRows_county_result_net= "($totalRows_county_result) + (1)";
> >> >> >>  echo "[$totalRows_county_result_net]";
> >> >> >>  echo "$totalRows_county_result";
> >> >> >>  ?>
> >> >> >> </div>
> >> >> >> <!--eo center-->
> >> >> >>
> >> >> >>
> >> >> >> <?php
> >> >> >> $name=$_POST['name'];
> >> >> >> echo 'You have selected'."$name";
> >> >> >>
> >> >> >> ?>
> >> >> >> <?php
> >> >> >> mysql_free_result($county_result);
> >> >> >> ?>
> >> >> >>
> >> >> >> Again, thank you for any input.
> >> >> >>
> >> >> >> Gary
> >> >> >
> >> >> > I think it may have to do with HTML, or the fact that IE is 
> >> >> > "helping"
> >> >> > you with your coding... where FF and Chrome are usually more
> >> >> > "literal" (yet better IMO). Also, the fact that "submit" has not 
> >> >> > been
> >> >> > defined.
> >> >> >
> >> >> > try adding:
> >> >> > <input type="submit" name="submit" value="submit" style="display:
> >> >> > none;" />
> >> >> >
> >> >> > This *SHOULD* give you the submit button, but the style is "hidden"
> >> >> > now,
> >> >> > so it shouldn't show, but it will fire off the "submit" action... 
> >> >> > make
> >> >> > sure it is in between the <form></form> tags though.
> >> >> >
> >> >> > Steve
> >> >> >
> >> >> Steve
> >> >>
> >> >> Thank you for your reply, I had inserted a submit button prior, but it
> >> >> did
> >> >> not work.  I tried your suggestions and got the same result.  I am not
> >> >> seeing anything in the html that should be causing the hick-up, but 
> >> >> given
> >> >> the php is run on the server as Peter pointed out, browser issues with
> >> >> php I
> >> >> have not really encountered before.
> >> >>
> >> >> I can live with a submit button, but living with one that does not
> >> >> work...
> >> >>
> >> >> Thank you for your input, if you see anything else that seems amiss,
> >> >> please
> >> >> let me know.
> >> >>
> >> >> Gary
> >> >>
> >> >
> >> > the <form onchange="submit"> as far as I know, isn't a standard/valid
> >> > html attribute...  so I would remove it altogether.
> >> > http://www.w3schools.com/tags/tag_form.asp
> >> >
> >> >
> >> > and try on the <select ... onchange=""> to be
> >> > <select .... onchange="document.forms["Form1"].submit();">
> >> > where Form1 is the id of the form (so add that to the <form...>
> >> > <form id="Form1" ... >
> >> >
> >> > try that... (i haven't been testing... my fault... but I am in the 
> >> > midst
> >> > of work right now to really test it out)
> >> >
> >> > good luck!
> >> >
> >> > Steve
> >>
> >> Thank you to everybody that has helped.  As it is now, I have the 
> >> checkboxes
> >> appearing in all browers, but I am unable to pass the "checked" values to
> >> the next page which echo's the choices.
> >>
> >> The page that produces the checkboxes is here: (and this works fine)
> >>
> >>
> >>
> >> if ( isset($_POST['submit']) ) { // if form is submitted, process it
> >>
> >>
> >> print "<form action=\"phpForm3.php\" method=\"POST\">\n";
> >>
> >>
> >>
> >> if ($Recordset1) {
> >> print "<table width=200 border=0>\n";
> >>
> >> print "<th>&nbsp; </th>\n";
> >>
> >>
> >> print "</tr>\n";
> >> //create table
> >> $i = 0;
> >> while ( $row = mysql_fetch_array($Recordset1) ) {
> >> $i++;
> >> print "<tr>\n";
> >>
> >> print "<td><input type=\"checkbox\" name=\"county$i\"
> >> value=\"$row[name]\"></td>\n";
> >>
> >> /*echo "<td>{$row['state_id']}</td>\n";*/
> >>
> >> echo "<td>{$row['name']}</td>\n";
> >>
> >> echo "</tr>\n";
> >>
> >> }//end while
> >> print "</table>\n";
> >> } else {
> >> echo("<P>Error performing query: " .
> >> mysql_error() . "</P>");
> >>
> >> }
> >> print "<input type=\"hidden\" name=\"counties\" value=\"$i\"/>\n";
> >> print "<input type=\"submit\" name=\"submit\" value=\"Go\"/>\n";
> >> }?>
> >>
> >> ***************
> >>
> >> My query on phpForm3.php is
> >>
> >> $query_county_result = "SELECT * FROM counties WHERE name = 'checked' ";
> >>
> >> Which is to be displayed by
> >>
> >> if ( !empty($_POST['county']))
> >>   foreach ( $_POST['county'] AS $id => $name )
> >>     echo 'You have selected '. " {$name}".'<br />';
> >>
> >> I get a blank page and mysql_num_row returns 0
> >>
> >> Again, sorry I am not getting this and thank you for all your help.
> >>
> >> Gary
> >>
> >>
> >
> > to get back to your other issue you were having, i've created a test
> > page from your code:
> > http://pastebin.com/WCH6HQ4Q
> >
> > basically, remove the submit, change the onchange event for the select,
> > and then add the javascript function.   this should work in all browsers
> > (unless of course you have javascript disabled (which was talked about a
> > few weeks/months ago)
> >
> > NOW, for this issue you have today... checkboxes are an array... so you
> > will need to use it as:
> > <input type="checkbox" name="wahtever[]" value="something"> some text
> >
> > notice the [] in the name attribute of the checkbox?
> >
> > Hope that all works... (this is also not a PHP related question...
> > hasn't really been all along, more like HTML and Javascript, but I am
> > glad to help if i can)
> >
> > Steve
> 
> 
> Steve
> 
> As always thank you.
> 
> I'm not sure we are on the same page (unless I don't understand your answer 
> which of course is entirly possible).  I have the checkboxes displayed using 
> this
> 
> print "<td><input type=\"checkbox\" name=\"county$i\" 
> value=\"$row[name]\"></td>\n";
> 
> I ended up using a submit button which seems to work fine.
> 
> I had the results of those checkboxes being displayed on the next page, but 
> now it does not.
> 
> The query is
> 
> mysql_select_db($database_assess, $assess_remote);
> $query_county_result = "SELECT * FROM counties WHERE name ='checked'";
> $county_result = mysql_query($query_county_result, $assess_remote) or 
> die(mysql_error());
> $row_county_result = mysql_fetch_assoc($county_result);
> $totalRows_county_result = mysql_num_rows($county_result);
> 
> The script to display it is
> 
> if ( !empty($_POST['county']))
>   foreach ( $_POST['county'] AS $id => $name )
>     echo 'You have selected '. " {$name}".'<br />';
> 
> Frustrating how it was working, now it is not.
> 
> Thanks again.
> 
> Gary 
> 

Gary,

<input type=\"checkbox\" name=\"county$i\" value=\"$row[name]\">

the problem is, is that "county" is not an array... it would be:
county01
county02
county03... and so on

so when you do:

if ( !empty($_POST['county']))
foreach ( $_POST['county'] AS $id => $name )
   echo 'You have selected '. " {$name}".'<br />'

there is no $_POST['county'] as they would all be $_POST['county01'] and so forth

NOW... if you change the checkboxes to:
<input type=\"checkbox\" name=\"county[$i]\" value=\"$row[name]\">

you will have the array of checkboxes called $_POST['county']


to test simply what the post is, on the page that you're submitting to, 
echo "<pre>";
print_r($_POST);
echo "</pre>";
exit;

and it will show you all your $_POST variables that you're sending.


Good luck, and BOY has this "thread" has gotten huge... since this is
really an HTML issue (the syntax seems to be HTML, and the PHP coding
seems to correct)  you can email me off list to continue this if you'd
like, as to not CLOG the list with the HTML issue... (just trying to be
considerate)

Steve


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux