techbots
asked on
PHP random quote generator with priority
I am trying to create a script that will randomly pick from a list of quotes and display them on a web page, but will give some of the quotes a higher "weight" based on a priority number. I have pieced together several PHP scripts, but since I don't really know PHP, I have missed something along the way and the script isn't working. Can someone please take a look at this and let me know what I am doing wrong.
Note: after I get this part working, I need to add in the references somehow - can I just add them in at the end of the line with html code wrapped around them to apply the different CSS for them?
Thanks in advance!!
Note: after I get this part working, I need to add in the references somehow - can I just add them in at the end of the line with html code wrapped around them to apply the different CSS for them?
Thanks in advance!!
<html>
<head>
</head>
<body>
<p>
<?php
$show_quote = 1;
$separator = " ";
$quotes[0][quote] = "Quote A";
$quotes[0][priority] = 1;
$quotes[1][quote] = "Quote B";
$quotes[1][priority] = 8;
$quotes[2][quote] = "Quote C";
$quotes[2][priority] = 2;
if($quotes) {
for($i = -1; $i < count($quotes); $i++) {
for($j = 0; $j < $quotes[$i][priority]; $j++) {
$newquotesindex = count($newquotes) + 1;
$newquotes[$newquotesindex] = $quotes[$i][quote];
}
}
}
if($show_quote >= count($newquotes))
$show_quote = count($newquotes);
$showarray[0] = "";
$showindex = 0;
do {
$randindex = rand(0, count($newquotes));
if(!in_array($newquotes[$randindex], $showarray) && $newquotes[$randindex] != "") {
$showarray[$showindex] = $newquotes[$randindex];
$showindex++;
}
}
while(count($showarray) <= $show_quote);
for($i = 0; $i < $show_quote; $i++ ) {
if($show_quote == 1 || (($i + 1) == $show_quote))
echo $showarray[$i]);
else
echo $showarray[$i].$separator;
}
}
?>
</p>
</body>
</html>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Another note: I don't need the script to ever display more than one quote, so that part of the script can be removed - I just don't know what is safe to delete so I left it in there. It woudl be great if someone wants to simplify this for me!
hielo, I tried just changing that but it didn't do anything. I must still have an error somewhere else.
hielo, I tried just changing that but it didn't do anything. I must still have an error somewhere else.
ASKER
Brilliant spoxox!!
Exactly what I was looking for - and thank you for such a speedy and SIMPLE answer!
This is what I meant by adding references - my idea worked so I already have the answer to that.
Thank you - now I can sleep tonight!!
Exactly what I was looking for - and thank you for such a speedy and SIMPLE answer!
This is what I meant by adding references - my idea worked so I already have the answer to that.
Thank you - now I can sleep tonight!!
<html>
<head>
<style type="text/css">
<!--
.name {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: italic;
font-weight: bold;
}
-->
</style>
</head>
<body>
<p>
<?php
$quotes[0] = "Quote A<br/><span class=\"name\">- John Doe</span>";
$quotes[1] = "Quote B<br/><span class=\"name\">- Jane Smith</span>";
$quotes[2] = "Quote C<br/><span class=\"name\">- Fred Flintstone</span>";
$randindex = rand(1, 100);
if ($randindex < 10)
$quoteIndex = 0;
elseif ($randindex < 25)
$quoteIndex = 2;
else
$quoteIndex = 1;
echo $quotes[$quoteIndex];
?>
</p>
</body>
</html>
Happy dreams!
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
routinet -
I like your way of handling priorities better, it's a lot simpler for me to keep track of even though both work.
You both helped tremendously. Thank you all for your swift answers - what would I do without EE?!
I like your way of handling priorities better, it's a lot simpler for me to keep track of even though both work.
You both helped tremendously. Thank you all for your swift answers - what would I do without EE?!
for($i = 0; $i < count($quotes); $i++) {