PDA

View Full Version : سوال: جطورعددی روکه ازinputگرفتم و باارایه مقایسهکردم رنگ فونتش تغییر بدم



n_a602
یک شنبه 10 مهر 1390, 11:18 صبح
توی کدی که واسه شما فرستادم یک عدد پنج رقمی با ارقم بدون تکرار (مثلا 12345 یا 87659)تولید میشه که توی ارایهrandبه طوری که هررقم توی یک خونه ارایه randاست بازدن دکمه start ریخته میشه(البته چون بایدعدد ارقام بدون تکرار داشته باشه گاهی باید چند بار دکمه startکلیک کرد)بعد حالا کاربرباید این عدد پنج دقمی رو حدس بزنه هررقمش رو توی یک nputینویسه بعد دکمهlevel و که فشار داد هرعددش با عدد تصادفی مقایسه میشه برای ارقامی که دقیقا یکان اونها برابر عدد تصادفی بود رنگ فونت inputمربوط به اون رقم مثلا سبز میشه ولی اگررقمی که وارد کرده درعدد تصادفی بود ولی یکانش متفاوت بود رنگش قرمزبشه

مثلا عدد تصادفی 78954
عدد حدسی کاربر 91046




<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd (http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd)">
<html xmlns="http://www.w3.org/1999/xhtml (http://www.w3.org/1999/xhtml)">
<head><link rel="stylesheet" type="text/css" href="style.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
.error1
{
background-color:red;
color:white;
}
.error2
{
background-color:#039;
color:white;
}
</style></head>
<body>
<form id="form1" name="form1" method="get" action="">
<p>&nbsp;</p>
<p>
<input type="submit" name="start" id="button" value="Start" />
<p>
<label>:
<input type="text" name="0" id="0" value="<?php if (isset($_GET['0'])) echo $_GET['0']; ?>" class="<?php
if(isset($_GET['level']))
{
$temp[0]=$_GET[0];


$n=$_SESSION['rand'][0];


for($j=1;$j<=5;$j++)
{
if($n==$temp[$j-1])
{


if(0==$j-1)


{
echo'error1';
}


else


{
echo'error2';
}




}
}}
?>" />
</label>
<label>
<input type="text" name="2" id="2" value="<?php if (isset($_GET['2'])) echo $_GET['2']; ?>"/>
</label>
<label>
<input type="text" name="3" id="3" value="<?php if (isset($_GET['3'])) echo $_GET['3']; ?>"/>
</label>
<label>


<input type="text" name="4" id="4" />
</label>
<label>
<input type="text" name="5" id="5" value="<?php if (isset($_GET['5'])) echo $_GET['5']; ?>"/>
<br />
nokteh:dar har input faghat yek ragham vard konid<br />
<br />
</label>
<input type="submit" name="level" id="button2" value="level1" /> </form>
<?php
session_start();
// ...هرباریک عدد پنج رقمی به صورت رندوم انتخاب میشودایجاد یک عدد تصادفی پنج رقمی و قراردادن ان در ارایه نکته ارقام این عدد پنج رقمی غیرتکراری است
if(isset($_GET['start']))
{
$_SESSION['rand'] = array();
$rand = rand(9999,99999);
$f =wordwrap($rand, 1, '-',true);
$g=explode('-',$f);
for ($i=0;$i<=5;$i++)
{
$num=$g[$i];
for($j=$i+1;$j<=5;$j++)
{
if($num==$g[$j])


exit;


else
$_SESSION['rand'][$i]=$g[$i];
}
}
print_r ($_SESSION['rand']);
}
echo $rand;
?>


</body>
</html>

n_a602
یک شنبه 10 مهر 1390, 21:22 عصر
این فایل کدم

exlord
یک شنبه 10 مهر 1390, 21:28 عصر
<style type="text/css">
.normal {
background-color: #ffffff;
}

.correct {
background-color: green;
}

.not-correct {
background-color: red;
}
</style>
<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');
session_start();
if(isset($_POST['btnReset'])){
unset($_SESSION['inputs']);
}
$inputs = array();
if (isset($_SESSION['inputs']))
$inputs = $_SESSION['inputs'];
else
{
for ($i = 0; $i < 5; $i++) {
$inputs[$i]['rands'] = rand(0, 9);
$inputs[$i]['class'] = 'normal';
}
$_SESSION['inputs'] = $inputs;
}


if (isset($_POST['btn1'])) {
for ($i = 0; $i < 5; $i++) {
$inputs[$i]['vals'] = $_POST['txt' . $i];
}

for ($i = 0; $i < 5; $i++) {
if ($inputs[$i]['rands'] == $inputs[$i]['vals'])
$inputs[$i]['class'] = 'correct';
else
$inputs[$i]['class'] = 'not-correct';
}
}
?>
<form action="test.php" method="post">
<?
for ($i = 0; $i < 5; $i++) {
$name = 'txt' . $i;
$val = isset($_POST['txt' . $i]) ? $_POST['txt' . $i] : '';
$class = isset($inputs[$i]['class']) ? $inputs[$i]['class'] : '';
echo "<input type='text' name='$name' value='$val' class='$class'>";
}
?>
<input type="submit" name="btn1" value="evaluate !">
<input type="submit" name="btnReset" value="Reset">
</form>

webpower
دوشنبه 11 مهر 1390, 11:15 صبح
با سلام
من کدتون رو تا مرحله تولید رندم و ذخیره اون برای مرحله ی بعد (level1) بررسی کردم این مشکلات رو که الان میگم برطرف کردم اینم کد:

<?php
session_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><link rel="stylesheet" type="text/css" href="style.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<style type="text/css">
.error1
{
background-color:red;
color:white;
}
.error2
{
font-size:18px;
color:white;
}
</style></head>
<body>
<form id="form1" name="form1" method="get" action="">
<p>&nbsp;</p>
<p>
<input type="submit" name="start" id="button" value="Start" />
<p>
<label>:
<input type="text" name="0" id="0" value="<?php if (isset($_GET['0'])) echo $_GET['0']; ?>" <?php
if(isset($_GET['level']))
{

$n=$_SESSION['rand'][0];

$z=0;
for($j=0;$j<=4;$j++)
{
if($n==$_SESSION['hads'][$j])
{

if($j==$z)

{
echo'class="error1"';

}

else
{
echo'class="error2"';

}
}
}}
?>" />
</label>
<label>
<input type="text" name="1" id="1" value="<?php if (isset($_GET['1'])) echo $_GET['1']; ?>" class="<?php
if(isset($_GET['level']))
{

$n=$_SESSION['rand'][1];

for($j=0;$j<=4;$j++)
{
if($n==$_SESSION['hads'][$j])
{

if(1==$j)

{
echo'class="error1"';

}

else
{
echo'class="error2"';

}
}
}}
?>"/>
</label>
<label>
<input type="text" name="2" id="2" value="<?php if (isset($_GET['2'])) echo $_GET['2']; ?>" class="<?php
if(isset($_GET['level']))
{


$n=$_SESSION['rand'][2];

for($j=0;$j<=4;$j++)
{
if($n==$_SESSION['hads'][$j])
{

if(2==$j)

{
echo'class="error1"';

}

else
{
echo'class="error2"';

}
}
}}
?>"/>
</label>
<label>

<input type="text" name="4" id="4" />
</label>
<label>
<input type="text" name="5" id="5" value="<?php if (isset($_GET['5'])) echo $_GET['5']; ?>"/>
<br />
nokteh:dar har input faghat yek ragham vard konid<br />
<br />
</label>
<input type="submit" name="level" id="button2" value="level1" />
<label>
<input type="submit" name="ok" id="button3" value="ok" />
</label>
</form>
<?php

// ...هرباریک عدد پنج رقمی به صورت رندوم انتخاب میشودایجاد یک عدد تصادفی پنج رقمی و قراردادن ان در ارایه نکته ارقام این عدد پنج رقمی غیرتکراری است
if(isset($_GET['start']))
{
$_SESSION['rand'] = array();
$rand = rand(10000,99999);
$f =wordwrap($rand, 1, '-',true);
$g=explode('-',$f);
for ($i=0;$i<=3;$i++)
{
$num=$g[$i];
for($j=$i+1;$j<=4;$j++)
{
if($num==$g[$j])
exit;

else
$_SESSION['rand'][$i]=$g[$i];
}
}
$_SESSION['rand'][4]=$g[4];
print_r ($_SESSION['rand']);
echo $rand;
}

//عدد کاربر رادر ارایه seesion['hads']قرار میدهد
if(isset($_GET['ok']))
{
for($i=0;$i<=5;$i++)
{
$temp[$i]=$_GET[$i] ;

}
for($j=0;$j<=4;$j++)
{
$_SESSION['hads'][$j]=$temp[$j];

}print_r ($_SESSION['hads']);
}

?>

</body>
</html>

توی اولین اجرا کدتون از خط 132 (توی فایلتون) ارور میگرفت این به این دلیل بود که در این خط برای بار دوم از session_start() استفاده کردید (الاوه بر خط اول) حذفش کردم
موقع ساخت عدد رندم شما کمترین رو 9999 قرار داده بودید که این یعنی یک عدد 4 رقمی پس من به عدد 10000 تغیرش دادم
در خط 156 متغیر rand$ رو چاپ کرده بودید در حالی که تا زمانی که start رو نزنیم rand$ تولید نمیشه و در زمان اولین ورود برنامتون ارور میداد به قبل از کروشه انتقالش دادم (خط قبل)
در قسمتی که توسط دوتا حلقه تو در تو چک میکردین دوتا مشکل وجود داشت
این حلقه ها هر کدوم باید چهار بار کار کنند یعنی حلقه اول هر بار یک عدد بیرون بکشه و حلقه دوم این عدد رو با بعدی مقایسه کنه پس حلقه اول چهار بار اعداد رو بیرون میکشه و حلقه دوم هر چهار بار این ها رو با اعداد بعدی مقایسه میکنه این وسط چون حلقه دوم از یک شروع میشه پس من شرطش رو به <=4 تغییر دادم تا چهار بار کار کنه و حلقه اول هم که از 0 شروع میشه شرطش رو به <=3 تغییر دادم
مشکل دوم این که اگر حلقه 4 بار بچرخه فقط چهار تا آرایه set میشن پس آرایه پنجم رو دستی ست کردم (بدون کمک حلقه) یعنی این خط رو بیرون از دو حلقه اضافه کردم:

$_seesion['rand'][4]=$g[4];

من کاربرد دکمه ok رو متوجه نشدم اگر بازم مشکلی بود بگید تا به کمک دوستان بررسیش کنیم
بازم خوشحال میشم اگه بتونم کمکی کنم ;)