Reply to Re: Dynamic Form

Your name:

Reply:


Posted by Jerim79 on 04/05/07 13:29

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.

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация