在盯着这些代码行,并在多个编码论坛上研究了几个小时之后,我仍然坚持使用我所拥有的代码,但这些代码并没有完全发挥作用。我正在尝试成功运行此PHP脚本,以便可以从MySQL表中随机查询文本引用并显示在我的网站页脚中。每次用户刷新网站时,报价都应该更改。我还试图计算每个报价显示的次数,然后当我的网站上显示特定报价时,计数器会告诉网站用户特定报价的显示次数。到目前为止我的代码是:
<?php
include('Includes/inc_connect.php');
$DBName = 'database';
if (!@mysql_select_db($DBName, $DBConnect))
echo "<p style='text-align:center'>There are no quotes to view!</p>";
else {
$TableName = "randomquote";
$SQLstring = "SELECT quote FROM $TableName";
//executes the query
$QueryResult = @mysql_query($SQLstring, $DBConnect);
if ($QueryResult === false)
{
echo "<p>Unable to retrieve the data.</p>" . "<p>Error code: " . mysql_errno($DBConnect) . ": " . mysql_error($DBConnect) . "</p>";
}
else
{
$quote_array = array();//Creates a blank array
//use a while loop to extract the data from the database table into an indexed array
while(($Row = mysql_fetch_row($QueryResult)) !== FALSE)
{
$quote_array = $Row[0];
}
}
//assign the contents of the table to an array variable
$quote_count=count($quote_array);
$RandomArrayIndex = rand(0, $quote_count-1);
$quote = stripslashes($quote_array[$RandomArrayIndex]);
$SQLString = "UPDATE randomquote SET display_count " . " = display_count + 1 WHERE quote = " . $quote_array[$quote];
$SQLString = "SELECT display_count from randomquote WHERE quote = " . $quote_array[$quote];
$display_count = @mysql_query($SQLString, $DBConnect);
//display the random quote on the Web page
echo "<p style='text-align:center;font-style:italic'><strong>" . $quote . "</strong></p>\n";
echo "<p style='text-align:center>This quote has displayed " . $display_count . " times.</p>/n";
}
else
{
//specify that the comments cannot be read
echo "<p>The quote cannot be displayed at this time</p>\n";
}
else
{
//specify that there are no quotes
echo "<p>There are no quotes to display.</p>\n";
}
我是PHP和MySQL的学生,所以非常感谢任何和所有的帮助和建议。非常感谢!
答案 0 :(得分:0)
我相信这可能有所帮助:
变化
$SQLstring = "SELECT quote FROM $TableName";
到
$SQLstring = "SELECT quote FROM $TableName ORDER BY RAND()";
或者如果您一次只想要一个报价
$SQLstring = "SELECT quote FROM $TableName ORDER BY RAND() LIMIT 1";
我在这里假设您更新显示计数工作正常。
然后您可以删除代码的随机数组部分。
答案 1 :(得分:0)
你也可以想到一个改进 - 如果我正确理解你正在做的是获取所有引号然后使用php随机选择一个。为什么不使用php随机选择一个数字(假设你的报价表有一个id键的引用ID)并只查询它?
伪代码中的
$ rand_post_id = rand(0,$ num_of_quotes);
$ query =“SELECT quote FROM $ TableName WHERE quote_id = $ quoteId”;
$ res = $ mysql_query($ query,$ dbconnect);
并确保你正确地逃避我没有的引用ID。