Forum Moderators: coopster

Message Too Old, No Replies

Update postgres database

update many columns and rows at once

         

broun24

8:14 pm on Jun 2, 2008 (gmt 0)

10+ Year Member



Iam quite new to php and sql and am trying to generate update sql for multiple columns. This code below view records from database and then creates textboxes for edit. I have tried many things to be able to automatically generate as many sql statements as there are rows, but it is failing to work.
Guys thank you for the ideas and code
session_start();
$dir=$_SESSION['project_name'];
$dir = 'cobh_first_cut' ;
$editable = "headloss_parameters";
$query1 ="";
$conn = connect($dir);
if (isset($_POST['edit'])) {

edit ($editable, &$queryname) ;
}

else
{
view ($editable, &$queryname) ;
function connect($dir)
{
$cons= 'host=localhost port=5432 dbname='.$dir.' user=""" password="""';
$conn = pg_connect("$cons")or die('Could not connect: ' . pg_last_error());
return $conn;
}
function view ($editable, &$queryname)
{
global $conn;
$res = pg_query($conn, "select * from $editable");
$i = pg_num_fields($res);
// echo "<table><TR>";
echo '<table class="tbl" border="3" cellspacing="1" cellpadding="5"><TR>';
global $query1;
$queryname =$query1;
for ($j = 0; $j < $i; $j++) {
$fieldname = pg_field_name($res, $j);
echo '<TH class="dr">'."$fieldname </TH>";
if ($j==$i-1 )
{
$queryname .= "$fieldname " ;
}
else
$queryname .= "$fieldname, " ;

}
echo "</TR><TR>";

$query = "Select $queryname FROM $editable";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
$rows = pg_num_rows($result);
for ($k = 0; $k < $rows; $k++)
{
for ($j = 0; $j < $i; $j++) {
$fieldname = pg_field_name($res, $j);
$retu = pg_fetch_result($result,$k,$j) ;

echo '<td class="hr">'. htmlspecialchars($retu) ;

}
echo '<td class="hr"><a href="'.$editable.'?a=edit&recid='.$k. '">Edit</a></td> ';

echo "</TR> ";
}

echo "</table><p>";

?>
<form method="POST" action="?q=<?php echo $editable ?>">
<input style="visibility: visible; vertical-align: middle; width: 170px;
color: blue; direction: ltr; line-height: normal; font-style: normal;
border-right-style: groove; letter-spacing: normal; background-color: gray; text-align: center;
font-variant: normal" type="submit" name="edit" value="Edit Values">
</form> <br />Edit this Data table<br />
<?php

}
function edit ($editable, &$queryname)
{
global $conn;
$res = pg_query($conn, "select * from $editable");
$i = pg_num_fields($res);
echo "Project: $dir \n Table to Edit: $editable";
echo '<table class="tbl" border="3" cellspacing="1" cellpadding="5"><TR>';
global $query1;
$queryname =$query1;
for ($j = 0; $j < $i; $j++) {
$fieldname = pg_field_name($res, $j);
echo "<TH>$fieldname </TH>";
if ($j==$i-1 )
{
$queryname .= "$fieldname " ;
}
else
$queryname .= "$fieldname, " ;

}
echo "</TR><TR>";
$query = "Select $queryname FROM $editable";

$result = pg_query($query) or die('Query failed: ' . pg_last_error());
$rows = pg_num_rows($result);
for ($k = 0; $k < $rows; $k++)
{
for ($j = 0; $j < $i; $j++) {
$fieldname = pg_field_name($res, $j);
$retu = pg_fetch_result($result,$k,$j) ;

echo '<td class="hr"><input name="text'.$j.$k. '" type="text" value="'. $retu .'">';
}
echo "</TR> ";
}

echo " </table>";

?>
<form method="POST" action="?q=<?php echo $editable ?>">
<input style="visibility: visible; vertical-align: middle; width: 170px;
color: blue; direction: ltr; line-height: normal; font-style: normal;
border-right-style: groove; letter-spacing: normal; background-color: gray; text-align: center;
font-variant: normal" type="submit" name="update" value="Update">
</form> <br /><br />
<?php }

PHP_Chimp

6:57 am on Jun 4, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Have you had a look at the user comments under pg_num_fields [uk2.php.net]?
As there is an example of converting results into an html table (as you are doing). There table is not editable, however in sure you can add a few <input> tags in there to sort it out.

Welcome to Webmaster World.