我有一个网站,人们可以点击名称,然后重定向到相应的URL
id | name | url
1 | facebook | www.fb.com
我想要显示1,200,000,023 URL
。登录用户未访问的URLs
。
我的注册信息存储在userdb.php
中,如下所示:
1|username|a84894gf5sag4f684gh68fh45g|email@gmail.com|NA
我的display.php
是
<?php
mysql_connect('mysql', '1', 'Py');
mysql_select_db('a5803761_add');
$query =mysql_query('select * from addimage order by ID DESC');
while( $row = mysql_fetch_assoc($query) )
{
echo '<div style="min-width:300px;height:100px;border:red 5px;float:left;"><a href="'.$row['url'].'">'.$row['name'].'</a></div>';
}
?>
&#13;
答案 0 :(得分:1)
首先,您必须存储哪个用户已访问过哪个网址。这个表应该有这样的结构:
CREATE TABLE VISITED(ID INT AUTO_INCREMENT,
USER_ID INT,
URL_ID INT,
PRIMARY KEY(ID),
KEY(USER_ID),
KEY(URL_ID));
然后你必须解释用户点击存储,如果他们访问网址(可能使用jQuery,并使用AJAX发回)或使用重定向PHP记录点击的网址,然后将用户重定向到此。< / p>
如果你考虑第二个,这个PHP应该是:
<?php
//You should check here for the URL to be an integer
$res = mysql_query('SELECT url FROM addimage WHERE id='.$url_id.';');
if (mysql_num_rows($res)>0) {
mysql_query('INSERT INTO VISITED VALUES(NULL,'.$_SESSION['logged_in_user_id'].','.$url_id.');');
$row = mysql_fetch_array($res);
Header('Location: http://'.$row[0]);
}
?>
之后,当您列出网址时,您必须检查用户尚未访问的网址:
<?php
mysql_connect('mysql', '1', 'Py');
mysql_select_db('a5803761_add');
$sql = 'select addimage.id, addimage.name, VISITED.USER_ID from addimage ';
$sql .= 'LEFT JOIN VISITED ON (addimage.id = VISITED.URL_ID) ';
$sql .= 'WHERE (VISITED.USER_ID='.$_SESSION['logged_in_user_id'].');';
$query =mysql_query('order by ID DESC');
while( $row = mysql_fetch_assoc($query) )
{
if ($row[2] == 'NULL') {
echo '<div style="min-width:300px;height:100px;border:red 5px;float:left;"><a href="/redirecter.php?url_id='.$row['id'].'">'.$row['name'].'</a></div>';
}
}
?>
但我认为在一个HTML中列出这么多网址并不是一个好主意,可能浏览器会占用所有内存。也许你应该做某种过滤器或分页机制。
请将此代码仅作为示例,并根据您的需要进行修改。
另一方面,正如其他人所建议的那样,不要使用mysql_扩展,使用mysqli或PDO。
答案 1 :(得分:0)
我建议您使用mysqli
或PDO
。哦,写&#34; http://&#34;进入链接。