Page 3 of 3
Posted: Mon Jul 31, 2006 12:10 am
by RobertGonzalez
I guess what I was really after was trying to find out what the values of each of those vars were. I had assumed (sorry about that) that those vars came from post. If they didn't, please run the script, but instead of hitting the db with the values, echo them so I can see what the values are. Thanks.
Posted: Mon Jul 31, 2006 6:23 am
by reecec
thats ok! they do come from a POST but you had told me to stop that
this is what you told me to do
Code: Select all
<?php
if ($_POST['form_create_table'] == 'yes'){
$maketable="CREATE TABLE $table (";
/* $endfield=1;
while ( $endfield <= 2) {
${$field.$endfield}=$_POST['field' . $endfield];
${$length.$endfield}=$_POST['length' . $endfield];
${$attribute.$endfield}=$_POST['attribute' . $endfield];
${$null.$endfield}=$_POST['null' . $endfield];
${$default.$endfield}=$_POST['default' . $endfield];
$maketable .= "${$field.$endfield}; varchar(${$length.$endfield}) ${$null.$endfield} default '${$default.$endfield}',";
$endfield++;
}
*/
echo '<h1>Field is ' . $field . '</h1>';
echo '<h1>Length is ' . $length. '</h1>';
echo '<h1>Attribute is ' . $attribute. '</h1>';
echo '<h1>Null is ' . $null. '</h1>';
echo '<h1>Default is ' . $default. '</h1>';
echo '<h1>Endfield is ' . $endfield. '</h1>';
echo '<h1>Maketable is ' . $maketable. '</h1>';
}
?>
and all my $_POSTS have been stoped from the script
and in the loop it starts the var $maketable again is this right
eg $maketable="CREATE TABLE $table (";
then in the loop
$maketable .= "${$field.$endfield}; varchar(${$length.$endfield}) ${$null.$endfield} default '${$default.$endfield}',";
I appreciate your help very much thanks reece
Posted: Mon Jul 31, 2006 9:45 pm
by RobertGonzalez
OK, so here's my question...
In the script above that you just quoted, those vars that are getting echo'ed, where do they get set? Because as it is right now, they are undefined and you are trying to use them as part of another var. Your script cannot work that way. PHP will try to parse those vars into the other var that you are creating on the left side of the equal sign. Is this the case?
Posted: Tue Aug 01, 2006 5:54 am
by reecec
Sorry not sure how to answer you question i will try my best.
My script currently asks how many fields they need and it loops the form as many times as they need every time it loops it adds 1 to the end value
eg. fieldname1 fieldname 2
then php retrives this by again looping and taking the values from the post
eg
$_POST['length' . $endfield];
length1
length2
length3
depending on how many fields they need at the moment the loops are set for 2 fields just for testing.
while $endfield <= 2) {
then puts these posts into varaibles the same as the text box names eg $field1 $field2
then creates the table using those vars from the post
Code: Select all
$table=$_POST['tbname'];
if ($_POST['form_create_table'] == 'yes'){
$endfield=1;
while ( $endfield <= 2) {
${$field.$endfield}=$_POST['field' . $endfield];
$endfield++;
}
$endfield=1;
while ( $endfield <= 2) {
${$length.$endfield}=$_POST['length' . $endfield];
$endfield++;
}
$endfield=1;
while ( $endfield <= 2) {
${$attribute.$endfield}=$_POST['attribute' . $endfield];
$endfield++;
}
$endfield=1;
while ( $endfield <= 2) {
${$null.$endfield}=$_POST['null' . $endfield];
$endfield++;
}
$endfield=1;
while ( $endfield <= 2) {
${$default.$endfield}=$_POST['default' . $endfield];
$endfield++;
}
$endfield=1;
$maketable="CREATE TABLE $table;(";
while ( $endfield <= 2) {
$maketable .= "${$field.$endfield}; varchar(${$length.$endfield}) ${$null.$endfield} default '${$default.$endfield}',";
$endfield++;
}
echo $maketable;
thanks reece
Posted: Tue Aug 01, 2006 9:03 am
by RobertGonzalez
Ok, in this code here...
Code: Select all
$table=$_POST['tbname'];
if ($_POST['form_create_table'] == 'yes'){
$endfield=1;
while ( $endfield <= 2) {
${$field.$endfield}=$_POST['field' . $endfield];
$endfield++;
}
Where does $field get defined?
Posted: Tue Aug 01, 2006 10:30 am
by reecec
it doesnt im am defining it there with a number
eg $field1
i take it i have to define it on its own first
thanks reece
Posted: Wed Aug 02, 2006 9:06 pm
by RobertGonzalez
Then your syntax is wrong. To get $field1 out of your code you would need to do this...
Code: Select all
$table=$_POST['tbname'];
if ($_POST['form_create_table'] == 'yes'){
$endfield=1;
while ( $endfield <= 2) {
$field.$endfield = $_POST['field' . $endfield];
$endfield++;
}
Now that I think about it, an array may be in better in order.
Code: Select all
$table=$_POST['tbname'];
$field = array();
if ($_POST['form_create_table'] == 'yes'){
$endfield=1;
while ( $endfield <= 2) {
$field[$endfield] = $_POST['field' . $endfield];
$endfield++;
}
Posted: Thu Aug 03, 2006 7:16 am
by reecec
Thanks everah the array works perfect
CREATE TABLE (field1 varchar(100) default 'test1',field2 varchar(200) NOT NULL default 'test2',
it echos all the values in the right place with none overriden like before
but these one last small thing how do I end my create table in need to put the closing
")
also I have a comma seperating the each field its creating how do I make it stop this on the last one or will it not effect the query if it is there with noting after
Code: Select all
$endfield=1;
$maketable="CREATE TABLE $table(";
while ( $endfield <= 2) {
$maketable .= "$field[$endfield] varchar($length[$endfield]) $null[$endfield] default '$default[$endfield]',";
$endfield++;
}
echo $maketable;
Apart from these last things I think we are there
thanks everah
reece
Posted: Thu Aug 03, 2006 4:14 pm
by RobertGonzalez
Code: Select all
$endfield=1;
$maketable="CREATE TABLE $table(";
while ( $endfield <= 2) {
$delim = ( $endfield == 2) ? '' : ', ';
$maketable .= "$field[$endfield] varchar($length[$endfield]) $null[$endfield] default '$default[$endfield]'$delim";
$endfield++;
}
echo $maketable;
Posted: Fri Aug 04, 2006 6:04 am
by reecec
thanks thats what I need
Created test
its all done thanks very much for your time everah
Posted: Fri Aug 04, 2006 10:04 am
by RobertGonzalez
Glad I could help.