PDA

View Full Version : سوال: فرم php



vimax65
سه شنبه 12 بهمن 1389, 15:08 عصر
سلام
من چطوری می تونم خروجیه یک فرم php رو توی یه صفحه دیگه نشون بدم؟
با استفاده از آموزش w3schools یه فرم ساده ساختم:


<form action="2.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
اینو با اسم 1.php ذخیره کردم
بعد کد زیر رو با نام 2.php ذخیره کردم


Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.
بعد یه صفحه خالی توش 2.php رو فراخونی کردم با اینکلود
اما مشکل اینه تو صفحه ی 1 هر چی بنویسم توی تکست باکس میاد توی صفحه 2 نشون میده ولی نمی مونه
چطوری میشه یه فرم ساخت که مقدار رو توی صفحه اول بنویسم و خروجی رو هر جا خواستم نشون بده؟
یعنی توی صفحه 1 یه سری متن بنویسم و تو صفحه 2 نشون بده و ذخیره بشه با رفرش از بین نره که جایی صفحه 2 رو اینکلودش کردم خروجی رو نشون بده

Mr.Moghadam
سه شنبه 12 بهمن 1389, 15:55 عصر
سلام
فکر میکنم مشکل شما با session حل بشه


Welcome <?php echo $_SESSION['fname'] = $_POST["fname"]; ?>!<br />
You are <?php echo $_SESSION['age'] =$_POST["age"]; ?> years old.

بعد توی هر صفحه ای خواستید میتونید به صورت زیر استفاده کنید

echo $_SESSION['fname']

فقط

session_start()
رو فراموش نکنید

MSN_Issue
سه شنبه 12 بهمن 1389, 16:23 عصر
دوست عزیز لازم نیست توی صفحه ای خالی 2.php رو فراخوانی کنید !!!
بازدن همون دکمه ای که توی صفحه ی اول هست ، صفحه ی 2 فراخوانی میشه و مقادیر هم ارسال میشه و همون طور که توی پستت خودتون نوشتید مورد استفاده قرار میگیره !

vimax65
سه شنبه 12 بهمن 1389, 16:30 عصر
نه عزیز
من میخوام هر متنی که نوشتم تو یه صفحه جداگانه نشون بدم
چون که صفحه ی 2 کدش پی اچ پی هست
و کد پی اچ پی جایی که میخوام استفاده کنم نمیشه استفاده کرد فقط میشه اینکلود کرد
یعنی کد یه جا دیگست
من فقط میخوام یه متن رو که توی تکست باکس نوشتم توی صفحه دوم بمونه
بعد متن بعدی رو نوشتم متن قبلی پاک بشه از صفحه دوم و متن جدید جایگزینش بشه

MMSHFE
سه شنبه 12 بهمن 1389, 19:37 عصر
با سلام، دوست گرامي چرا اين راه رو امتحان نميكنيد:
توي فايل دوم هرچي دريافت كردين رو توي يك فايل ذخيره كنيد و دفعات بعدي محتويات اون فايل رو اينكلود كنيد:
فايل دوم:


<?PHP
$fp=fopen('output.php','w') or die('Error');
echo('Welcome '.$_POST['fname'].'!<br/>'."\r\n");
fwrite($fp,'echo(\'Welcome '.$_POST['fname'].'!<BR/>\');');
fwrite($fp,'echo(\'You are '.$_POST['age'].' years old.<BR/>\');');
fclose($fp);
?>

و محتويات فايلهاي بعدي:


<?PHP
include('output.php');
?>

توضيح: محتويات فايل PHP (يعني خود كدهاي اين فايل) بصورت پويا ساخته ميشه. يعني هربار كه ازطريق فرم اطلاعات براي فايل دوم ارسال بشه، فايل خروجي يعني output.php رو بازنويسي ميكنه تا اطلاعات جديد رو نشون بده. حالا كافيه اين فايل رو include كنيد.
موفق و مؤيد باشيد.

vimax65
چهارشنبه 13 بهمن 1389, 03:43 صبح
آقا درست شد.فقط میشه کاری کرد آرشیو کنم اینا رو جایی تو یه فایل مجزا؟
یعنی هر یک متنی که می نویسم بعد جدید میاد قبلی پاک میشه
قبلیا پاک نشه بره تو آرشیو و در آرشیو مثله یه صفحه خالی بشه متن هایی که قبلا ارسال شده رو دید

MMSHFE
چهارشنبه 13 بهمن 1389, 13:15 عصر
با سلام، براي اين كار ميتونيد از بانك اطلاعاتي استفاده كنيد و سوابق رو توي بانك ثبت كنيد. هر بار هم آخرين مقادير بانك رو بخونيد:


<?PHP
mysql_connect('localhost','root','');
mysql_select_db('db');
$result=mysql_query('select * from `table` order by `id` desc limit 1');
$id=0;
if(mysql_num_rows($result)>0)
{
$id=mysql_result($result,0,0);
}
$result=mysql_query('insert into `table` values(\''.$id.'\',\''.$_POST['fname'].'\',\''.$_POST['age'].'\'));
?>
و محتويات output.php هم بدين ترتيب خواهد بود:


<?PHP
mysql_connect('localhost','root','');
mysql_select_db('db');
$result=mysql_query('select * from `table` order by `id` desc limit 1');
if(mysql_num_rows($result)>0)
{
$fname=mysql_result($result,0,1);
$age=mysql_result($result,0,2);
echo("Welcome $fname!<BR/>\n");
echo("You are $age years old.<BR/>\n");
}
else
{
echo("ERROR : No data exist.<BR/>\n");
}
?>
و باز هم بايد فايل output.php رو include كنيد.
البته يك راه هم براي نگهداري آرشيو با استفاده از فايلها وجود داره كه پيشنهاد نميكنم چون كار با فايلها علاوه بر كند بودن، باعث مصرف بي رويه و نابجاي فضاي ذخيره سازي هم خواهد شد و هر بار، چون علاوه بر محتويات فايل، هدر فايلها هم ارسال خواهد شد، ترافيك سايت هم بدون دليل موجهي، با افزايش مصرف مواجه ميشه.
البته اگه اصرار به استفاده از اون روش داريد، بفرماييد تا اون رو هم توضيح بدم.
راستي، تا يادم نرفته، اين هم محتويات فايل archive.php :


<?PHP
mysql_connect('localhost','root','');
mysql_select_db('db');
$result=mysql_query('select * from `table` order by `id`');
if(mysql_num_rows($result)>0)
{
echo('<TABLE border="1" width="100%">'."\n");
echo('<TR align="center" valign="middle">');
echo('<TH width="10%">ID</TH>');
echo('<TH width="80%">FName</TH>');
echo('<TH width="10%">Age</TH>');
echo('</TR>'."\n");
while($row=mysql_fetch_assoc($result))
{
echo('<TR align="center" valign="middle">');
echo('<TD>'.$row['id'].'</TD>');
echo('<TD>'.$row['fname'].'</TD>');
echo('<TD>'.$row['age'].'</TD>');
echo('</TR>'."\n");
}
echo('</TABLE>'."\n");
}
else
{
echo("ERROR : No data found.<BR/>\n");
}
?>
موفق و مؤيد باشيد.

vimax65
چهارشنبه 13 بهمن 1389, 13:58 عصر
مرسی
اون کد اول رو باید بالای فرم اضافه کنم؟

MMSHFE
پنج شنبه 14 بهمن 1389, 08:27 صبح
با سلام، اون كد مربوط به فايل 2.php هست. موفق و مؤيد باشيد.

vimax65
پنج شنبه 14 بهمن 1389, 14:21 عصر
آها پس یک دات پی اچ پی هم همون فرمه هست؟
هیچی توش نیاز نیست باشه؟

<form action="2.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

vimax65
پنج شنبه 14 بهمن 1389, 16:16 عصر
من اول یک دیتابیس به مشخصات :
نام:form
نام کاربری:form
پسورد:form
ساختم

بعد یک صفحه با نام php.1 ساختم با محتویات زیر:

<form action="2.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
بعد یک صفحه با نام 2.php ساختم با محتویات زیر:

<?PHP
mysql_connect('localhost','form','form');
mysql_select_db('form');
$result=mysql_query('select * from `table` order by `id` desc limit 1');
$id=0;
if(mysql_num_rows($result)>0)
{
$id=mysql_result($result,0,0);
}
$result=mysql_query('insert into `table` values(\''.$id.'\',\''.$_POST['fname'].'\',\''.$_POST['age'].')');
?>
البته زمان اجرای کد خود شما یعنی خط

$result=mysql_query('insert into `table` values(\''.$id.'\',\''.$_POST['fname'].'\',\''.$_POST['age'].));
خطای Parse error: syntax error, unexpected ')' رو داد
که به

$result=mysql_query('insert into `table` values(\''.$id.'\',\''.$_POST['fname'].'\',\''.$_POST['age'].')');
تغییر دادم و درست شد.
و یک فایل با نام output.php با محتویات زیر ساختم:

<?PHP
mysql_connect('localhost','form','form');
mysql_select_db('form');
$result=mysql_query('select * from `table` order by `id` desc limit 1');
if(mysql_num_rows($result)>1)
{
$fname=mysql_result($result,0,1);
$age=mysql_result($result,0,2);
echo("Welcome $fname!<BR/>\n");
echo("You are $age years old.<BR/>\n");
}
else
{
echo("ERROR : No data exist.<BR/>\n");
}
?>
و فایل دیگری هم با نام archive.php و محتویات زیر ساختم:

<?PHP
mysql_connect('localhost','form','form');
mysql_select_db('form');
$result=mysql_query('select * from `table` order by `id`');
if(mysql_num_rows($result)>0)
{
echo('<TABLE border="1" width="100%">'."\n");
echo('<TR align="center" valign="middle">');
echo('<TH width="10%">ID</TH>');
echo('<TH width="80%">FName</TH>');
echo('<TH width="10%">Age</TH>');
echo('</TR>'."\n");
while($row=mysql_fetch_assoc($result))
{
echo('<TR align="center" valign="middle">');
echo('<TD>'.$row['id'].'</TD>');
echo('<TD>'.$row['fname'].'</TD>');
echo('<TD>'.$row['age'].'</TD>');
echo('</TR>'."\n");
}
echo('</TABLE>'."\n");
}
else
{
echo("ERROR : No data found.<BR/>\n");
}
?>

وقتی صفحه 1.php رو فراخوانی کردم هیچی نمایش نداد
مشکل کجاست؟
اون دیتابیس نیاز به اسکیوال نداره؟
همینجوری مقدار میره توش؟

vimax65
شنبه 16 بهمن 1389, 09:11 صبح
یکی دریابه منو