PDA

View Full Version : مشکل این کد چیه؟



artablog
دوشنبه 25 شهریور 1392, 17:30 عصر
سلام دوستان
دارم یه ابزار حدیث طراحی میکنم یه مشکلی دارم به این کدها نگا کنید

<?php

for ($a=1; $a <= 2; $a++){
if(isset($_GET['n'.$a]))
$i = rand($a, $a);

}
switch($i)
{
case "1" :
$name = "امام علی (ع)<br />";
$b = include('n/1.php');
break;
case "2" :
$b = include('n/2.php');
$name = "امام حسين (ع)";
break;
echo $b;}
?>
<? echo $name;?>
من میخوام وقتی n1=1 شد حدیث های امام علی را نشون بدم و وقتی n2=1 شد احادیث امام حسن
حالا وقتی هر دو را بالا اوردیم بصورت تصادفی از هرکدوم چاپ بشه

abolfazl-z
دوشنبه 25 شهریور 1392, 17:53 عصر
یکم واضح تر توضیح دهید.

ورودی n برای چی هست ؟

artablog
دوشنبه 25 شهریور 1392, 18:03 عصر
مثلا n1=1 احادیث امام علی را نشون میده n2=1 هم امام حسین

Javidhb
دوشنبه 25 شهریور 1392, 18:46 عصر
بهتر نیست:
1 = n حدیث امام علی
2 = n حدیث امام حسین

artablog
دوشنبه 25 شهریور 1392, 18:56 عصر
بهتر نیست:
1 = n حدیث امام علی
2 = n حدیث امام حسین
نه اینطوری نمیشه باید همون طوری باشه که نوشتم

MMSHFE
سه شنبه 26 شهریور 1392, 09:12 صبح
session_start();
if(!isset($_SESSION['name'])) {
$_SESSION['name'] = '';
}
$n1 = 'علی';
$n2 = 'حسین';
$flag1 = false;
$flag2 = false;
if(isset($_GET['n1']) && $_GET['n1'] == 1) {
$flag1 = true;
}
if(isset($_GET['n2']) && $_GET['n2'] == 1) {
$flag2 = true;
}
if($flag1 && $flag2) {
$_SESSION['name'] = ($_SESSION['name'] != $n1 ? $n1 : $n2);
echo '<p>' . $_SESSION['name'] . '</p>' . PHP_EOL;
}
elseif($flag1) {
echo '<p>' . $n1 . '</p>' . PHP_EOL;
}
elseif($flag2) {
echo '<p>' . $n2 . '</p>' . PHP_EOL;
}
else {
echo '<p>Error</p>' . PHP_EOL;
}

artablog
سه شنبه 26 شهریور 1392, 09:40 صبح
ممنون آقای شهرکی ولی این کد کار نکرد. وقتی n1=1 و n2=1 را صدا میزنیم باید هر دو بصورت رندومی چاپ بشن این کد بالا فقط یکیشو چاپ میکنه

MMSHFE
سه شنبه 26 شهریور 1392, 13:51 عصر
کد رو تغییر دادم. دوباره چک کنید.

artablog
سه شنبه 26 شهریور 1392, 14:25 عصر
اره این درسته . یه خوبی هم که داره رندوم عوض نمیکنه با هر بار رفرش عوض میشه
حالا نمیشه بصورتی که من اون بالا نوشتم نوشت باید تا n14=1 تو کد اضافه کنم کد خیلی زیاد میشه ولی کدی که من بالا نوشتم تا هر مقدار میتونم ورودی بدم بدون اضافه کردن دستور فقط اعداد را کم و زیاد میکنم

MMSHFE
چهارشنبه 27 شهریور 1392, 08:19 صبح
اون مسئله هم راه حل داره. با یک کوئری کل اسامی رو استخراج کنید و توی آرایه که اندیسش، n1 و n2 و... و مقدارش هم اسم موردنظر هست بگذارین و بعد مقادیر ارسالی با روش Get رو بررسی کنید و اگه با هرکدوم از مقادیر آرایه برابر بود، اون رو نشون بدین و اگه چندتا انتخاب شده بود، به همین روش، قبلی رو توی Session بگذارین و هربار یکی دیگه رو نشون بدین.