نمایش رندوم از دیتابیس

Jim Jim

Well-Known Member
دوستان می خواستم مقادیری که در ستون message از جدول posts توسط اعضا ارسال شده، بصورت رندوم در صفحه اصلی نمایش داده بشه
یه فایل config.php ایجاد کردم برای اتصال به دیتابیس:
PHP:
<?php
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_DATABASE', 'db');
?>

بعد این کد رو در صفحه بکار بردم:
PHP:
<?php
	//Start session
	session_start();
	
	//Include database connection details
	require_once('config.php');
	
	//Array to store validation errors
	$errmsg_arr = array();
	
	//Validation error flag
	$errflag = false;
	
	//Connect to mysql server
	$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
	if(!$link) {
		die('Failed to connect to server: ' . mysql_error());
	}
	
	//Select database
	$db = mysql_select_db(DB_DATABASE);
	if(!$db) {
		die("Unable to select database");
	}
	
	//Create query
	$qry="SELECT * FROM posts WHERE message='$message'";
	$result=mysql_query($qry);
	
	//Check whether the query was successful or not
	if($result) {
		if(mysql_num_rows($result) == 1) {
			//Login Successful
			session_regenerate_id();
			$member = mysql_fetch_assoc($result);
			$_SESSION['SESS_MESSAGE'] = $member['message'];
		}
	}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>

<?php echo $_SESSION['SESS_MESSAGE'];?>

</body>
</html>

ولی گویا مملو از ایراد هست
عزیزان کسی می تونه کمک کنه؟

با تشکر
 

farik

Well-Known Member
با سلام..
راستش من خیلی متوجه کاری که تو کدتون کردین و ارتباطش به نمایش رندوم رو نفهمیدم اخه چرا میریزینش تو فلش؟..تازه شما با هر دفعه mysql_fetch_assoc فقط یک سطر رو میخونه (نمیدونم سطر اخر یا سطر اول)...به هر حال..شما باید بیاین با تابع mysql_num_rows تعداد کل رکورد ها رو بدست بیارین..بعد در عددی که با تابع rand بدست میارین رو در تعداد رکورد ها میکنین..بعد میاین و با این ایدی یک پست رو انتخاب میکنین...اگه ایدی رو از 1 شروع بشن و یکی یکی رفته باشن بالا...معمولا جولاب میده..البتاه در مواردی که حذفی در رکوردها پیش بیاد ممکنه به مشکل بربخورید...
البته یک روش دیگه هم هست..که تو اون روش میاین با یک حلقه for یکی یکی رکرودها رو بخونین و یکی رو رندم نشون بدین..
موفق باشید
 

Jim Jim

Well-Known Member
می خواستم هر دفعه یه سطر بصورت رندوم نمایش داده بشه

من خیلی تسلط ندارم

عزیزان امکانش هست یه نمونه اش رو بگذارید؟
 

farik

Well-Known Member
با سلام..
مسعود جان اینم یک روشه ولی بحثه اینه که اگه تعداد ستون های تیبل کم باشه(مثلا 3تا)..امکان تکراری شدن نتیجه زیاد و شانس همه انتخاب ها یکسان نیست:دی..
موفق باشید..:rose:
 

Jim Jim

Well-Known Member
ولی ستونمون message هست، سطرهای ارسالی توسط کاربران رو می خوایم بصورت رندوم نشون بدیم

با تشکر
 

farik

Well-Known Member
با سلام...
ربطی به اون نداره..این دستور که مسعود جان گفتن رکرو ها رو بر اساس یکی از ستون ها(که ستون به صورت رندم انتخاب میشه) مرتب میکنه بعد شما میاین و اولین نتیجه رو میخونین..
موفق باشید..
 

Jim Jim

Well-Known Member
عزیزان می خوام هربار یکی از مقادیری که در ستون message از جدول posts توسط کاربران ارسال شده رو بصورت رندوم در صفحه اصلی نمایش بدم

به این کد نیاز دارم

ممنون میشم در صورت امکان یکی از دوستان این کد رو برام بذاره

هزینه اش رو هم تقدیم می کنم

با تشکر
 

Masoud1365

مدیر انجمن
PHP:
$Query = "SELECT * FROM `table` WHERE `postStatuse` = 1 ORDER BY rand() LIMIT 3";
این کدش ! من قسمت شرطش رو همینجوری گذاشتم که اگه شرطی خواستید بزارید اگرم نه که حذفش کنید !
 

Jim Jim

Well-Known Member
به این صورت میشه؟

PHP:
<?php
	//Start session
	session_start();
	
	//Include database connection details
	require_once('config.php');
	
	//Array to store validation errors
	$errmsg_arr = array();
	
	//Validation error flag
	$errflag = false;
	
	//Connect to mysql server
	$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
	if(!$link) {
		die('Failed to connect to server: ' . mysql_error());
	}
	
	//Select database
	$db = mysql_select_db(DB_DATABASE);
	if(!$db) {
		die("Unable to select database");
	}
	
	//Create query
$Query = "SELECT * FROM `table` WHERE `postStatuse` = 1 ORDER BY rand() LIMIT 3";
	
	//Check whether the query was successful or not
	if($result) {
		if(mysql_num_rows($result) == 1) {
			//Login Successful
			session_regenerate_id();
			$member = mysql_fetch_assoc($result);
			$_SESSION['SESS_MESSAGE'] = $member['message'];
		}
	}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>

<?php echo $_SESSION['SESS_MESSAGE'];?>

</body>
</html>
 

Masoud1365

مدیر انجمن
اون کوئری رو که من همینجوری نوشتم ! شما بر اساس نام جدول و مشخصات خودتون ویرایشش کنید !
 

Jim Jim

Well-Known Member
خوب این کوئری رو به همین صورت در صفحه گذاشتم (البته نام جدول و فیلد رو تغییر دادم)

اما این مقدار در کجا فراخوانی میشه؟ یعنی متغیر نباید در جایی صدا زده بشه و یا از سشن استفاده بشه؟

ممکنه این کدی که زحمت کشیدید رو کامل کند؟
 

Masoud1365

مدیر انجمن
خوب این کوئری رو به همین صورت در صفحه گذاشتم (البته نام جدول و فیلد رو تغییر دادم)

اما این مقدار در کجا فراخوانی میشه؟ یعنی متغیر نباید در جایی صدا زده بشه و یا از سشن استفاده بشه؟

ممکنه این کدی که زحمت کشیدید رو کامل کند؟
البته شرطش رو هم من همینجوری نوشتم که اگر شرطی ندارید اون قسمتش رو هم باید بردارید !
مقدارش هم مثل بقیه کوئری ها باید بگیرید ، کاری به سشن و اینا نداره !
 

Jim Jim

Well-Known Member
فرض کنیم در سایت موضوعات مختلفی تعریف شده و در جدول دیتابیس، در کنار فیلد message فیلد دیگری داریم که شماره موضوع رو مشخص می کنه catid
ارسالی هایی که در ستون message ثبت میشه می تونه از هر موضوعی بوده باشه که با catid مشخص میشه که مربوط به کدام موضوع بوده

حالا با توجه به این شرطی که شما گذاشتید، می تونیم بگیم مثلا: یکی از مقدارهای ستون message رو بصورت رندوم نمایش بده که catid اون 2 باشه (یعنی جزء ارسالی های موضوع فلان باشه که در جدول با آی دی 2 مشخص شده)

ممکنه لطفا کدش رو با این شرط کامل کنی؟





PHP:
$query = "SELECT * FROM `table` WHERE `postStatuse` = 1 ORDER BY rand() LIMIT 3";  
$result=mysql_query($query);

فقط متغیر query رو درج کنم، به این صورت درسته؟

خیلی لطف کردی
 

Masoud1365

مدیر انجمن
من پیشنهاد میکنم مفاهیم پایه را مطالعه بفرمائید !
این شرط هست :
PHP:
WHERE `postStatuse` = 1
شما بسته به نوع استفاده تغیرش بدید مثلا :
PHP:
WHERE `catID` = 2 OR `Statuse` = 1 OR ...
 

Jim Jim

Well-Known Member
در کوئریمون مقدار message رو که باید داشته باشیم... چون این مقدار قرار هست رندوم نمایش داده بشه
ولی چطور به catid اشاره کنیم؟
PHP:
$query = "SELECT * FROM `table` WHERE `message` = 1 ORDER BY rand() LIMIT 3";
 

Masoud1365

مدیر انجمن
خدائیش پست قبلی من رو بخونید ! خب نوشتم که چطوری از 2 یا چند شرط استفاده کنید !
PHP:
$query = "SELECT * FROM `table` WHERE `message` = 1 AND `catid` = 2 ORDER BY rand() LIMIT 3";
 

Masoud1365

مدیر انجمن
خدائیش پست قبلی من رو بخونید ! خب نوشتم که چطوری از 2 یا چند شرط استفاده کنید !
PHP:
$query = "SELECT * FROM `table` WHERE `message` = 1 AND `catid` = 2 ORDER BY rand() LIMIT 3";
 

جدیدترین ارسال ها

بالا