Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 253
  • Last Modified:

Help with taking data from a DB table into an HTML table

Hiya -

I currently have code that takes data from a DB table and puts it into an HTML table.

Now, I want to put a DELETE button in the last cell of each row... that when press, will delete that entry from the DB. I know how to do this normally but not using this "IMPLODE" function that someone here advised me to use. I just need to know how to replace the 2 "????????"'s in the attached code.
$query="SELECT * FROM categories";
	$result = mysql_query($query) or die("Unable to execute $query: " . mysql_error());
 
 
        $row = mysql_fetch_assoc($result);
	$colorvar = 1;
 
        do{
		if ($colorvar == 1)
		{
                	echo '<tr><td bgcolor="#FFFFDF"><font color="#660033" face="calibri">'. implode('</td><td bgcolor="#FFFFDF"><font color="#660033" face="calibri">',$row) .'</td><td bgcolor="#FFFFDF"><form action="./budget.php"><input type="hidden" name="delete" value="1"><input type="hidden" name="id" value="???????"><center><input type="submit" value="Delete"></center></form></td></tr>';
			$colorvar = 2;
		} else
		{
	        	echo '<tr><td><font color="#660033" face="calibri">'. implode('</td><td><font color="#660033" face="calibri">',$row) .'</td><td><form action="./budget.php"><input type="hidden" name="delete" value="1"><input type="hidden" name="id" value="???????????"><center><input type="submit" value="Delete"></center></form></td></tr>';
			$colorvar = 1;
		}
 
		$resultcount = $resultcount + 1;
        }while( $row = mysql_fetch_assoc($result) );
 
print '		      <tr><form action="./budget.php">
        	<td width="5%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"><input type="hidden" name="create" value="1"></td>
        	<td width="5%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"></td>
        	<td width="10%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"><input type="text" name="type"></td>
        	<td width="25%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"><input type="text" name="main"></td>
        	<td width="25%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"><input type="text" name="secondary"></td>
        	<td width="10%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"></td>
        	<td width="10%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"></td>
        	<td width="10%" bgcolor="#DDFFFF"><font color="#FFFFCC" face="calibri"><center><input type="submit" value="Create"></center></td>
		      </form></tr></tbody></table></body></html>';
 
mysql_free_result($result);

Open in new window

0
runelynx
Asked:
runelynx
  • 5
  • 5
1 Solution
 
Kevin CrossChief Technology OfficerCommented:
If the code you have creates the appropriate HTML and you can see the hidden ID value in the source code of the HTML page generated (when you click view source from browser), then all you need to do is code the DELETE button to post data to a PHP page that then uses the posted ID like:

<?php
$id = $_POST["id"];
?>

Then in your SQL statement do this:

$query = "DELETE FROM categories WHERE id = $id";

Unless I missed something, this should work.
0
 
runelynxAuthor Commented:
Hi,

Thanks but the problem I'm having is I can't pull out the "id" value to assign into a variable. I'm not sure how to attach it to a variable while the "implode" function is working in the loop.
0
 
runelynxAuthor Commented:
Re working the code snippet to make a little more sense

 $row = mysql_fetch_assoc($result);
        $colorvar = 1;
 
        do{
                if ($colorvar == 1)
                {
                        echo '<tr><td bgcolor="#FFFFDF"><font color="#660033" face="calibri">
'. implode('</td><td bgcolor="#FFFFDF"><font color="#660033" face="calibri">',$row) .'
</td><td bgcolor="#FFFFDF"><form action="./budget.php"><input type="hidden" name="delete" value="1">
<input type="hidden" name="id" value="???????"><center><input type="submit" value="Delete"></center></form></td></tr>';
                        $colorvar = 2;
                } else
                {
                        echo '<tr><td><font color="#660033" face="calibri">
'. implode('</td><td><font color="#660033" face="calibri">',$row) .'
</td><td><form action="./budget.php"><input type="hidden" name="delete" value="1">
<input type="hidden" name="id" value="???????????">
<center><input type="submit" value="Delete"></center></form></td></tr>';
                        $colorvar = 1;
                }
 
                $resultcount = $resultcount + 1;
        }while( $row = mysql_fetch_assoc($result) );

Open in new window

0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
Kevin CrossChief Technology OfficerCommented:
$row[0] should get you column or current row where 0 is the index of the column.  Can also use $row["id"] if I am not mistaken.

Here is some more information on implode syntax: http://us3.php.net/implode.

Thought you indicated the code you had already worked to display data on the page though.  Anyway, once you get the id in the HTML page source, you can use what I posted earlier to retrieve the input field with name="id" for use in the db DELETE query.
0
 
runelynxAuthor Commented:
When I try to use $row, $row[0], or $row[0][0] ...  all three return  the string   "Array"

Help? :(
0
 
runelynxAuthor Commented:
when I do

print_r ($row);

I get:

Array (     [id] => 22     [active] =>      [type] => Test     [main] => One     [secondary] => Two     [weekly] =>      [monthly] =>  ) Array (     [id] => 18     [active] =>      [type] => Create     [main] => One     [secondary] => Entry     [weekly] =>      [monthly] =>  ) Array (     [id] => 20     [active] =>      [type] =>      [main] =>      [secondary] =>      [weekly] =>      [monthly] =>  )
0
 
Kevin CrossChief Technology OfficerCommented:
Hopefully some more experienced PHP folks will chime in.  I am more of SQL Syntax person and as I stated I thought you had this part working and just needed the next step to delete.

It looks like $row is the array being used for implode.  Is $result the actual record from mysql.  If so, that is the variable you can use for $result["id"] or $result[0] (note you must replace 0 with actual column index of id -- if it is the first column, then 0 is fine).
0
 
Kevin CrossChief Technology OfficerCommented:
Alright look here: http://us2.php.net/array.

Use $row['id'].
0
 
runelynxAuthor Commented:
Ok got it to work... using:

'.  $row["id"]   .'

for some reason the double quotes vs single quotesi nside the brackets made a difference
0
 
Kevin CrossChief Technology OfficerCommented:
Glad that helped.  Sorry I misunderstood initially.

Good luck.

Regards,
Kevin
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now