How To Add More Than One Entry On A Single Cell/Array ?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
UniqueIdeaMan
Forum Contributor
Posts: 197
Joined: Wed Jan 18, 2017 3:43 pm

How To Add More Than One Entry On A Single Cell/Array ?

Post by UniqueIdeaMan »

Programming buddies,

I'm back online after nearly 2wks of offline. Gonna be harassing you guys again and more this time. Eeek!

Anyway, right now, I'm trying to build a script that adds multi entries into same single cell or mysql row.
The script tries monitoring what you are browsing via the:

<pre><input type="text" name="browse_url" size="120"></pre>

and then record your viewed urls into the same row (position: 0), column: browsings like so:

1.com,2.com and so on.
So, at first, the mysql array or cell is blank. When you view a url (eg.) 1.com then the array would show like this:

1.com

And then afterwards, if you view facebook.com then the cell should get updated by first grabbing the previously viewed urls and then adding the latest url onto the same cell/array like so (each url separated by comma):

<pre>1.com,facebook.com</pre>

Throw your precious eyes on line 79 onwards on both sample scripts. I reckon the 1st script is no good but the 2nd should work. Gave you both scripts to show the variety of ways I attempted.


Sample 1:

Code: Select all

<pre><?php 
session_start();
require "conn.php";
require "site_details.php";

/*Check if user is logged-in or not by checking if session is set or not. 
If user is not logged-in then redirect to login page. Else, show user's account homepage.php.*/

if(!isset($_SESSION["user"])) 
{
    header("location:login.php");
}
else 
{
	$user = $_SESSION["user"];
	?>
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
	<html>
	<head>
	<title>Browse!</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	</head>
	<body>
	<p>
	<p>
	<p>	
	<?php 
	//Display 'Browser' ?>
	<iframe src='<?php echo $db_latest_view;?>'></iframe>
	<p>
	<p>
	<p>
    <form method="post" action="">
	<table border="1" width="50%">
	<tr>
	<td width="10">Url: </td>
	<td><input type="text" name="browse_url" size="120"></td>
	</tr>
	<tr>
	<td width="10">Browse: </td>
	<td>
	<select name="browsing_type">
	<OPTION>Anonymous Browsing</OPTION>
	<OPTION>Group Browsing</OPTION>
	</SELECT>
	</td>
	</tr>
	<td></td>
	<td><input type="submit" name="browse" size="50" value="Browse"><input type="submit" name="search_keywords" size="50" value="Search Keywords"></td>
	<tr>
	<td width="10">Message: </td><td><textarea name="message" cols="120" rows="10"></textarea></td>
	</tr>
	<tr>
	<td></td>
	<td width="50"><input type="submit" name="submit_message" size="50" value="Send Message!"></td>
	</tr>
	<p>
	<p>
	</table>
	</form>
	
	<?php 
	if(isset($_REQUEST['browse'])) 
	{
		$browse_url = trim(strip_tags(strtolower(mysqli_real_escape_string($conn,$_POST["browse_url"]))));
		$browsing_type = trim(strip_tags(strtolower(mysqli_real_escape_string($conn,$_POST["browsing_type"]))));
		
		//Grab User details from database.
		$sql = "SELECT * FROM users WHERE usernames = '".$user."'";	
		$result = mysqli_query($conn,$sql);
		$numrows = mysqli_num_rows($result);
		if($numrows) 
		{	
			while($row = mysqli_fetch_assoc($result))
			{
				$db_user_browsings = $row["browsings"];				
			}
			
			$sql = "INSERT INTO users(browsings) VALUES('".$browse_url."''".$db_user_browsings."')";
			$result = mysqli_query($conn,$sql);
			if($sql)
			{
				echo "true";			
			}
			
			$sql = "UPDATE users SET browsings_latest = '".$browse_url."' WHERE usernames = '".$user."'";
			$result = mysqli_query($conn,$sql);
			if($sql)
			{
				echo "true";			
			}				
		}
	}
}

?>
</pre>
Sample 2

Code: Select all

<pre><?php 
session_start();
require "conn.php";
require "site_details.php";

/*Check if user is logged-in or not by checking if session is set or not. 
If user is not logged-in then redirect to login page. Else, show user's account homepage.php.*/

if(!isset($_SESSION["user"])) 
{
    header("location:login.php");
}
else 
{
	$user = $_SESSION["user"];
	?>
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
	<html>
	<head>
	<title>Browse!</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	</head>
	<body>
	<p>
	<p>
	<p>	
	<?php 
	//Display 'Browser' ?>
	<iframe src='<?php echo $db_latest_view;?>'></iframe>
	<p>
	<p>
	<p>
    <form method="post" action="">
	<table border="1" width="50%">
	<tr>
	<td width="10">Url: </td>
	<td><input type="text" name="browse_url" size="120"></td>
	</tr>
	<tr>
	<td width="10">Browse: </td>
	<td>
	<select name="browsing_type">
	<OPTION>Anonymous Browsing</OPTION>
	<OPTION>Group Browsing</OPTION>
	</SELECT>
	</td>
	</tr>
	<td></td>
	<td><input type="submit" name="browse" size="50" value="Browse"><input type="submit" name="search_keywords" size="50" value="Search Keywords"></td>
	<tr>
	<td width="10">Message: </td><td><textarea name="message" cols="120" rows="10"></textarea></td>
	</tr>
	<tr>
	<td></td>
	<td width="50"><input type="submit" name="submit_message" size="50" value="Send Message!"></td>
	</tr>
	<p>
	<p>
	</table>
	</form>
	
	<?php 
	if(isset($_REQUEST['browse'])) 
	{
		$browse_url = trim(strip_tags(strtolower(mysqli_real_escape_string($conn,$_POST["browse_url"]))));
		$browsing_type = trim(strip_tags(strtolower(mysqli_real_escape_string($conn,$_POST["browsing_type"]))));
		
		//Grab User details from database.
		$sql = "SELECT * FROM users WHERE usernames = '".$user."'";	
		$result = mysqli_query($conn,$sql);
		$numrows = mysqli_num_rows($result);
		if($numrows) 
		{	
			while($row = mysqli_fetch_assoc($result))
			{
				$db_user_browsings = $row["browsings"];				
			}
			
			$sql = "UPDATE users SET browsings = '".$browse_url."''".$db_user_browsings."' WHERE usernames = '".$user."'";
			$result = mysqli_query($conn,$sql);
			if($sql)
			{
				echo "true";			
			}	
			
			$sql = "UPDATE users SET browsings_latest = '".$browse_url."' WHERE usernames = '".$user."'";
			$result = mysqli_query($conn,$sql);
			if($sql)
			{
				echo "true";			
			}				
		}
	}
}

?>
</pre>
Last edited by requinix on Sun Apr 09, 2017 5:39 pm, edited 1 time in total.
Reason: [php] -> [syntax=php]
UniqueIdeaMan
Forum Contributor
Posts: 197
Joined: Wed Jan 18, 2017 3:43 pm

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by UniqueIdeaMan »

I first did add a comma and coded a variety of different ways and they all throwed error. The only 2 that didn't throw error is what I listed in this thread but as you can see the entries are not being separated by commas. I get no error with these 2 codes, though.
Yes, you have figured correctly what I want to do. But, I'll explain again and you can be kind enough to show a few example codes. ;)

EXAMPLE
Imagine you viewed 1.com now on your first session. 1.com would be listed on the following columns:

latest_browsings
browsings (full history).

So now, the columns would look like this:

BROWSINGS | LATEST_BROWSINGS
1.com | 1.com


Now, if you move-onto 2nd.com then that would be UPDATED on the latest_browsings column but INSERTED in the browsings column.
So now, the columns would look like this:

BROWSINGS|LATEST_BROWSINGS |
1.com | 2.com
2.com|


Note the "Browsings" column show your full browsing history (like your browser shows you when you click CTRL+H. The "latest_browsings" shows you the most current page you viewed (like a Status Update thingy in social network accounts. So, "latest_browsings" only show data from position zero. No other rows get filled).
Now, how would you code to achieve that ? Where should I make the change ?

Thanks in advance! :)
User avatar
Celauran
Moderator
Posts: 6427
Joined: Tue Nov 09, 2010 2:39 pm
Location: Montreal, Canada

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by Celauran »

No. You're doing it wrong. Put multiple values in multiple rows and use foreign key relations.
UniqueIdeaMan
Forum Contributor
Posts: 197
Joined: Wed Jan 18, 2017 3:43 pm

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by UniqueIdeaMan »

Celauran wrote:No. You're doing it wrong. Put multiple values in multiple rows and use foreign key relations.
What is foreign key relations ?

My .exe bot shows data like this:

username timestamp url
Celauran 2017/04/10 18:00:00 www.url.com
ui man 2017/04/10 18:10:00 www.microosft.com
Celauran 2017/04/10 18:15:00 www.sitepoint.com

Actually, the columns were:
TimeStamp|Id|Username|Browsing_Histories|Contact_Details
(Ofcourse, if any public tries contacting any user (like you) then they'd have to go through filling-in a cpa survey before they see your contact details. Thus earn you $1-20 cpa earning.
Bear in mind, this is one tbl with many cols and not more than one tbl. "Browsings_History" tbl that shows all users browsing history on a single webpage. It is like a SERP with GO TO NEXT PAGE facility. Imagine a google serp.

But I NOW want my web version of the bot or member site/social network (sn) to show like this:

Username | Browsing_Histories |
Celauran | "www.sitepoint.com, www.microosft.com, www.url.com"
ui man | "www.sitepoint.com, www.facebook.com, www.google.com"

Originally, I wanted the SN to show like this:

Username | Browsing_Histories | Latest_Viewings
Celauran | "www.sitepoint.com, www.microosft.com, www.url.com" | www.url.com
ui man | "www.sitepoint.com, www.facebook.com, www.google.com" | www.google.com

That way, the left iframe shows you your friends' Latest_Viewings column, row 0.
And the right iframe shows you all your friends browsing histories (Browsing_Histories) column.

Anyway, let me experiment and decide how it should display the data to the user. Right now, I need to learn how to add more than one entry on the same cell/array separated by commas. The code I learn might become handy in future on other projects where it is necessary to have more than one entry on a single cell/array and it is right and recommended to do so like that.
A cell is called array, right ? We say array in php and cell in ms excell. Correct ?
I did once download a youtube tut that showed how to code to dump many entries into a single cell. I might aswell see if I can find it.
User avatar
Celauran
Moderator
Posts: 6427
Joined: Tue Nov 09, 2010 2:39 pm
Location: Montreal, Canada

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by Celauran »

Two tables makes a lot more sense here. One table for user information (user id, name, etc) and another for tracking visits. Foreign key is simply having, say, visits.user_id map to users.id so you know which visit belongs to which user. You can use comma separated values in a TEXT field, but it's a pretty bad idea. The list is going to get pretty long and you'll always have to fetch it in its entirety and then parse it rather than letting the SQL server do the work for you -- the very work the SQL server is intended to do.
thinsoldier
Forum Contributor
Posts: 367
Joined: Fri Jul 20, 2007 11:29 am
Contact:

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by thinsoldier »

UniqueIdeaMan, you are working backwards. And if not backwards, sideways. Do some decent tutorials, gain proper understanding, and then attempt to add features to your app. Then, when you hit a problem you'll be able to ask us better questions and get better answers.

Google database normalization.

I used comma separated values in a single field twice almost 15 years ago and have regretted it ever since. Those projects are still alive and people are still asking for new features. Searching those CSV fields is prohibitively slow and the time necessary to refactor all the areas in the app that work with those CSV fields is prohibitively expensive. I've got a 6 year long to-do list full of CSV field related feature requests that no one will ever afford to be able to do.
Warning: I have no idea what I'm talking about.
UniqueIdeaMan
Forum Contributor
Posts: 197
Joined: Wed Jan 18, 2017 3:43 pm

Re: How To Add More Than One Entry On A Single Cell/Array ?

Post by UniqueIdeaMan »

Thinsoldier,

Since others are warning me, along with you, a while ago I had given-up on the idea to dump multi entries into single cell. Thanks for your history mentioning, though.
Post Reply