Reputation: 30
I currently have a table like the one below.
ID adPlacement filePath dateAdded adName adLink
12 1 Test 1.png 2013-02-12 Test 1 http://www.cuad.coop
13 1 Test 2.png 2013-02-12 Test 2 http://www.google.com
I am trying to randomly select a row and echo out the adName, adLink, and filePath all on separate echo statements.
Here is the code I am using right now:
$query_adSpot1 = "SELECT * FROM advertisements WHERE adPlacement = 1";
$result = mysql_query($query_adSpot1, $server) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$row = array(
'adName' => $row['adName'],
'filePath' => $row['filePath'],
'adLink' => $row['adLink']
);
$fileLocation = $row;
$fileLocations[] = $fileLocation;
}
shuffle($fileLocation);
echo $fileLocation[0];
Right now when I run the script it will write test 2.png, or test 2, or http://www.google.com.
I want to be able to echo separately from a random row, but need the separate columns to equal same row.
echo filePath
echo adName
echo adLink
Upvotes: 1
Views: 2775
Reputation: 16989
You can use the RAND()
function in MySQL
$query_adSpot1 = "SELECT * FROM advertisements WHERE adPlacement = 1 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query_adSpot1, $server) or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['filePath'];
echo $row['adName'];
echo $row['adLink'];
Upvotes: 0
Reputation: 91734
You are shuffling the wrong array, you should be using:
shuffle($fileLocations);
^ This is the one with all your values
var_dump($fileLocations[0]);
// will show you an array with 3 elements from the same row in the database
What you are doing is re-ordering the last row found in your sql query.
Upvotes: 1