per the php documentation, I am trying to use an array to grab the text from the various html inputs on the page, and then take that array and pass it into a mysql statement.
Problem is, php doesn't recognize the variable as an array when i press insert, so all it does is insert a blank record (increments auto_increment ID field with new record).
What am I doing wrong, anyone?
Here's the code:
<BODY>
<?
$link = mysql_connect("localhost", "*", "*****") or die("Could not connect");
$MainDBName = urldecode($databasename);
$MainTable = urldecode($tablename);
if (!$MainDBName)
{
$MainDBName = urldecode($MainDBNameInput);
$MainTable = urldecode($MainTableInput);
}
$filename = basename($PHP_SELF);
mysql_select_db($MainDBName, $link) or die("Failed selecting database; DB = " . $MainDBName . "; Table = " . $MainTable);
$MainResult = mysql_query("SELECT FROM " . $MainTable, $link);
$MainRows = mysql_num_rows($MainResult);
$MainFields = mysql_list_fields($MainDBName, $MainTable, $link);
$MainColumns = mysql_num_fields($MainFields);
$FieldsCount = mysql_num_fields($MainFields);
echo "Table: ".$MainTable."<br />\n";
echo "Record Count: " . $MainRows . "<br />\n";
print"<br />\n";
echo "Below are the details...<br />\n";
print"<br />\n";
print "<table width=100% border=0 align=left>" . "\n";
print "<tr>" . "\n";
print "<td width=30%>" . "\n";
print "<h3><b><u>Update Fields</u></b></h3>" . "\n";
print "</td>" . "\n";
print "</tr>" . "\n";
print "<tr>" . "\n";
print "<td><u>" . "\n";
print "Field Name" . "\n";
print "</u></td>" . "\n";
print "<td width=15%><u>" . "\n";
print "Field Type" . "\n";
print "</u></td>" . "\n";
print "<td><u>" . "\n";
print "Data" . "\n";
print "</u></td>" . "\n";
print "</tr>" . "\n";
$breakcounter = 8;
for ($nDiplayRowCounter = 0; $nDiplayRowCounter < $MainColumns; $nDiplayRowCounter++)
{
$breakcounter++;
$CurrentFieldName = mysql_field_name($MainFields, $nDiplayRowCounter);
$CurrentFieldType = mysql_field_type($MainResult, $nDiplayRowCounter);
$CurrentFieldLength = mysql_field_len($MainResult, $nDiplayRowCounter);
$CurrentFieldFlags = mysql_field_flags($MainResult, $nDiplayRowCounter);
$input = (GetInputType($CurrentFieldName, $CurrentFieldType, $CurrentFieldLength, $CurrentFieldFlags));
print "<tr>" . "\n";
print "<td width=30%>" . "\n";
echo $CurrentFieldName . "\n";
print "</td>" . "\n";
print "<td width=15%>" . "\n";
echo $CurrentFieldType . "\n";
print "</td>" . "\n";
print "<td>" . "\n";
echo $input;
print "</tr>" . "\n";
print "</td>" . "\n";
}
print "<tr>\n";
print "<td width=33%>\n";
print "<FORM ACTION=" . $filename . " METHOD=POST>\n";
print "<INPUT TYPE=SUBMIT NAME='insert' VALUE='Insert'>\n";
print "</td>" . "\n";
print "<td width=33%>\n";
print "<INPUT TYPE=SUBMIT NAME='update' VALUE='Update'>\n";
print "</td>" . "\n";
print "<td width=33%>\n";
print "<INPUT TYPE=SUBMIT NAME='delete' VALUE='Delete'>\n";
print "</td>" . "\n";
print "</tr>\n";
print "<tr>\n";
print "<td colspan=3>\n";
print "<A href=\"chooser.php\">Back To Table Selection Screen</A>";
print "</tr>\n";
print "</td>\n";
print "</table>" . "\n";
print "<INPUT TYPE=HIDDEN NAME=\"MainDBNameInput\" SIZE=5 VALUE=$MainDBName>";
print "<INPUT TYPE=HIDDEN NAME=\"MainTableInput\" SIZE=5 VALUE=$MainTable>";
While ($breakcounter > 0)
{
print " \n";
print "<br />\n";
$breakcounter--;
}
print "<HR width=100%>\n";
If ($insert)
{
$InsertValues = '';
for ($nValuesCounter = 1; $nValuesCounter < $FieldsCount; $nValuesCounter++)
{
$InsertValues = $InsertValues . "$InputsArray[$nValuesCounter] ";
}
$sql = "INSERT INTO $MainTable VALUES (";
$lfirstfield = True;
$nArrayItemsCount = count($InputsArray);
//start at 1 to skip primary key for now, MUST CHANGE TO FUNCTION PROPERLY AND DETECT PKs $nTempCount
for ($nColumnsCounter = 1; $nColumnsCounter < $MainColumns; $nColumnsCounter++)
{
$UpdateFieldName = mysql_field_name($MainFields, $nColumnsCounter);
if (!$lfirstfield)
{
$sql = $sql . ", ";
}
$sql = $sql . GetAsType($MainDBName, $MainTable, $nTempCount, "{$InputsArray[" . $UpdateFieldName . "]}");
}
$sql = $sql . ")";
if (mysql_query($sql))
{
echo("<P>Record Added</P>");
echo "nTempCount= " . $nTempCount . "; nArrayItemsCount= " . $nArrayItemsCount . "<br />\n";
echo "InsertValues= " . $InsertValues . "<br />\n";
print_r(array_values($InputsArray)) . "\n";
echo "\n";
}
else
{
echo("<P>Error adding new record: " . mysql_error() . "</P>");
echo $sql . "<br />\n";
echo "nTempCount= " . $nTempCount . "; nArrayItemsCount= " . $nArrayItemsCount . "<br />\n";
echo "InsertValues= " . $InsertValues . "<br />\n";
print_r(array_values($InputsArray)) . "\n";
echo "\n";
}
}
elseif ($update)
{
while ( list( $key, $val ) = each( $InputsArray ) )
{
echo "$key => $val<br>";
}
}
elseif ($delete)
{
}
While ($breakcounter > 0)
{
print " \n";
print "<br />\n";
$breakcounter--;
}
print "<HR width=100%>\n";
print "<table width=100% border=0 align=left>" . "\n";
print "<tr>" . "\n";
print "<td align=left>" . "\n";
print "<p>Data View</p>\n";
print "</td>" . "\n";
print "</tr>" . "\n";
print "<tr>";
for ($nRowCounter = 0; $nRowCounter < $MainColumns; $nRowCounter++)
{
$DataViewFieldName = mysql_field_name($MainResult, $nRowCounter);
$DataViewFieldLength = mysql_field_len($MainResult, $nRowCounter);
If ($DataViewFieldLength > 20)
{
$DataViewFieldLength = 20;
}
print "<td width=$DataViewFieldLength align=left valign=top>\n";
echo $DataViewFieldName . "\n";
print "</td>\n";
}
print "</tr>" . "\n";
while ( $row = mysql_fetch_array($MainResult, MYSQL_ASSOC) )
{
print "<tr>\n";
for ($nFieldCounter = 0; $nFieldCounter < $MainColumns; $nFieldCounter++)
{
$DataViewFieldName = mysql_field_name($MainResult, $nFieldCounter);
print "<td align=left valign=top>\n";
echo $row[$DataViewFieldName] . "\n";
print "</td>\n";
}
print "</tr>\n";
}
print "</table>" . "\n";
?>
</body>
<?
function GetInputType ($Inputfieldname, $Inputfieldtype, $Inputfieldlength, $Inputfieldflags)
{
$FlagsArray = explode(" ", $Inputfieldflags);
If ($Inputfieldlength > 80)
{
$Inputfieldlength = 80;
}
switch ($Inputfieldtype)
{
case 'string':
$return = "<INPUT TYPE=TEXT NAME=\"InputsArray[" . $Inputfieldname . "]\" SIZE=" . $Inputfieldlength . ">";
break;
case 'int':
if ( in_array("auto_increment", $FlagsArray) )
{
$return = "<INPUT TYPE=TEXT NAME=\"InputsArray[" . $Inputfieldname . "]\" SIZE=10 READONLY> (auto-increment)[Read-Only]";
}
else
{
$return = "<INPUT TYPE=TEXT NAME=\"InputsArray[" . $Inputfieldname . "]\" SIZE=10 MAXLENGTH=50>";
}
break;
case 'blob':
$return = "<textarea name=\"InputsArray[" . $Inputfieldname . "]\" rows=8 cols=80></textarea>\n";
break;
default:
$return = "<INPUT TYPE=TEXT NAME=\"InputsArray[" . $Inputfieldname . "]\" SIZE=" . $Inputfieldlength . " MAXLENGTH=" . $Inputfieldlength . ">";
break;
}
return $return;
}
function GetPrimaryKey ($db, $tbl)
{
mysql_select_db($dbname, $link) or die("Failed selecting database");
$ThisResult = mysql_query("SELECT * FROM " . $tbl);
$rows = mysql_num_rows($ThisResult);
$fields = mysql_list_fields($db, $tbl, $link);
for ($i = 0; $i < $columns; $i++)
{
$field = mysql_field_name($fields, $i);
$fieldflags = mysql_field_flags($fields, $i);
$FlagsArray = explode(" ", $fieldflags);
if ( in_array("primary_key", $FlagsArray) )
{
$pkfield = $pkfield . " " . $field;
}
}
return $pkfield;
}
function GetAsType($db, $tbl, $fldindex, $value)
{
//do something here to get the type of the current field
mysql_select_db($db) or die("Failed selecting database");
$thistempresult = mysql_query("SELECT * FROM " . $tbl);
$tmpFieldType = mysql_field_type($thistempresult, $fldindex);
switch ($tmpFieldType)
{
case 'string':
If (!$variant)
{
$variant = " ";
}
else
{
$variant = "'$value'";
}
break;
default:
$variant = $value;
break;
}
return $variant;
}
?>
Thanks in advance if anyone gives it a shot, I appreciate it, as does the wall I have been banging my head against...
-Patrick