StevoBot
StevoBot

Reputation: 30

echo specific row from array

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

Answers (2)

SeanWM
SeanWM

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

jeroen
jeroen

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

Related Questions