|
Posted by Jerim79 on 04/05/07 13:34
On Apr 5, 8:29 am, "Jerim79" <m...@hotmail.com> wrote:
> On Apr 4, 6:22 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
>
>
>
> > Jerim79 wrote:
> > > On Apr 4, 4:09 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> > >> Jerim79 wrote:
> > >>> On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.com> wrote:
> > >>>> I need to create a form that takes a number that the user enters, and
> > >>>> duplicates a question the number of times the user entered. For
> > >>>> instance, if the customer enters 5 on the first page, when they press
> > >>>> next the form generates "How old are you?" 5 times on the page. The
> > >>>> customer will answer all 5 questions then press next. Finally, all the
> > >>> > local variables get dynamically created and written to a database.
> > >>>> I have already taken care of dynamically creating the question five
> > >>>> times. Using a simple WHILE clause, this generates the correct number
> > >>>> of questions. What I am having an issue with at this point, is how to
> > >>>> dynamically create the local variables.For instance, for the question
> > >>>> "How old are you?" I would need a unique variable for each instance;
> > >>>> using something like $Age(n). So that for five times, it would
> > >>>> automatically created variables $Age1 through $Age5. I have carried
> > >>> > over the number to the submit page by creating the variable
> > >>> $Number
> > >>>> and passing it along as hidden button on the form. $Age'$Number'
> > >>>> seemed to work for creating the variable, but $_post["Age'$Number'"]
> > >>>> doesn't work for referencing the global variable. I would need some
> > >>>> way of looping through and dynamically creating the variables.
> > >>>> I am willing to rethink my approach to the whole problem, so the door
> > >>>> is wide open to suggestions.
> > >>> I have been playing around with the various suggestions here. I
> > >>> haven't gotten anything to work yet. I have read the PHP manual pages.
> > >>> Maybe I need to give a little bit better detail about what I am trying
> > >>> to do. The first page of my form is a simple screen that just asks for
> > >>> a number. Such as this:
> > >>> INDEX.HTML
> > >>> <html>
> > >>> <body>
> > >>> <form action="survey.php" method="POST">
> > >>> How many people are in your family? <input type="text"
> > >>> name="Number" value="" />
> > >>> <input type="Submit" name="Submit" value="Submit" />
> > >>> </form>
> > >>> </body>
> > >>> </html>
> > >>> After clicking on Submit, a second screen pops up. This is the PHP
> > >>> script, with a while loop that displays the same question for the
> > >>> amount of times the user entered on the last page:
> > >>> SURVEY.PHP
> > >>> <?php
> > >>> if ($_SERVER["REQUEST_METHOD"] == "POST") {
> > >>> $Number=$_POST['Number'];
> > >>> $Number2=$Number;
> > >>> ?>
> > >>> <form action="submit.php" method="POST">
> > >>> while ($Number!=0){
> > >>> echo "How old is person number $Number? " ?
> > >>> <input type="text" name="Age[]"value="" />
> > >>> <?php
> > >>> echo Age[$Number];
> > >>> $Number--;
> > >>> }
> > >>> ?>
> > >>> <input type="hidden" name="Number" value="<? echo
> > >>> $Number; ?>">
> > >>> <input type="Submit" name="Submit" value="Submit">
> > >>> </form> <?php
> > >>> }
> > >>> else{
> > >>> echo "You don't have permission to access this page directly.";
> > >>> }
> > >>> Okay, so now we have asked the user for the ages of all of the family
> > >>> members the user told us they had. Now we must write this to the
> > >>> database, or at least get it over to the form to write it to the
> > >>> database. So:
> > >>> SUBMIT.PHP
> > >>> <?php
> > >>> if ($_SERVER["REQUEST_METHOD"] == "POST") {
> > >>> $Number=$_POST['Number'];
> > >>> $Number2=$_POST['Number'];
> > >>> $Age[]=$_POST['Age'];
> > >>> while ($Number>-1){
> > >>> $query="INSERT INTO table()
> > >>> VALUES('$Age[$Number]')";
> > >>> $result = mysql_query($query) or die('Query failed: ' .
> > >>> mysql_error());
> > >>> $Number--;
> > >>> }
> > >>> mysql_close($connection);
> > >>> }
> > >>> else{
> > >>> echo "You don't have permission to access this page directly.";
> > >>> }
> > >>> Forgetting any other issues, such as why I break out of PHP to do HTML
> > >>> stuff, the fact that when I read the numbers into the table they will
> > >>> be in reverse order or that this may not reflect the way you would do
> > >>> it, what else do I need to do to make this code work correctly? I
> > >>> understand some may have an issue with why I use three forms, when I
> > >>> could use just one. That issue aside for the moment, I am trying to
> > >>> learn the easiest way to do this. It is broken out so I can better
> > >>> understand the process. Once it is working correctly and I understand
> > >>> how it works, then I will be happy to consolidate as much as I can. My
> > >>> main problem right now is between the SURVEY.PHP script and the
> > >>> SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
> > >>> SUBMIT.PHP. I have even tried echoing the values manually such as echo
> > >>> $Age[0], with no luck.
> > >>> I haven't tried the second way that was posted here, mostly because I
> > >>> am know what to put in the SUBMIT.PHP form as far as <input /> fields.
> > >>> One other way I have tried is that in the SURVEY.PHP form I used
> > >>> <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
> > >>> inside of the while loop. I could probably also do name="<? echo
> > >>> $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
> > >>> that will work.
> > >> foreach ($Age as $a) {
> > >> $query="INSERT INTO table() VALUES('$a')";
> > >> $result = mysql_query($query) or die('Query failed: ' .
> > >> mysql_error());
> > >> }
>
> > >> --
> > >> ==================
> > >> Remove the "x" from my email address
> > >> Jerry Stuckle
> > >> JDS Computer Training Corp.
> > >> jstuck...@attglobal.net
> > >> ==================
>
> > > Thanks, that worked perfectly. Just one other question. What if I want
> > > two inputs? Such as:
>
> > > <input type="text" name="Age[] "value="" />
> > > <input type="text" name="Height[]" value="" /
>
> > > I would need to read both arrays into the same table as they relate to
> > > each other. Such as Age[1]Height[1], then Age[2]Height[2], and so on.
> > > I tried using foreach($Age as $a, $Height as $h) or foreach($Age as $a
> > > AND $Height as $h). Or do I even need to specify the second array in
> > > foreach()? Could I just insert it as such:
>
> > > foreach ($Age as $a) {
> > > $query="INSERT INTO table() VALUES('$a','$Height')";
> > > $result = mysql_query($query) or die('Query failed: ' .
> > > mysql_error());
> > > }
>
> > > I looked at the PHP website and it didn't mention this as a
> > > possibility.
>
> > Ah, I missed that. Well, then, do:
>
> > for ($i=0; i < $Number; $i++) {
> > $query="INSERT INTO table() VALUES('$age[$i]','$Height[$i]')";
> > $result = mysql_query($query) or die('Query failed: ' .
> > mysql_error());
> > }
>
> > And BTW - you do know items in a SQL table are unordered. Just because
> > you insert them in a specific order does not mean they will come out in
> > the same order.
>
> > --
> > ==================
> > Remove the "x" from my email address
> > Jerry Stuckle
> > JDS Computer Training Corp.
> > jstuck...@attglobal.net
> > ==================
>
> Thank your for you help so far. I know I keep asking for help, but
> honestly I have never done something like this before. I am just
> having one issue now. I am correctly passing the $Number value to the
> last page. I have used echo commands at the top and bottom of the last
> page to verify that it is the number the user typed in on the first
> page. However this doesn't write anything to the database:
>
> for ($i=0; i<$Number; $i++) {
> $query="INSERT INTO table()
> VALUES('$age[$i]','$Height[$i]')";
> $result = mysql_query($query) or die('Query failed: ' .
> mysql_error());
> }
>
> I even tried just outputting the values to the screen with this, but
> it doesn't show anything:
>
> for ($n=0; n<$Number; $n++){
> echo $Age[$n];
> echo $Height[$n];
> }
>
> I know that $Number is correct, as I used the echo commands above. My
> only other thought is that for some reason, I can't access the array
> with $Age[$n]. When I try to print the array location directly to the
> screen using $Age[0], $Age[1], etc, it just prints "Array" on the
> screen. So the foreach() worked, it just wouldn't print two values on
> the same row, but $Age[] doesn't seem to be accessing correctly.
I am wondering if I should declare $Age as an array such as
$Age=array(); before I do $Age[]=$_POST['Age'];. I am just wondering
if PHP is creating the array properly and really identifying it as an
array.
[Back to original message]
|