PDA

View Full Version : کد دسترسی به مقدار یک textbox با یک باتن



aserfg
جمعه 17 مهر 1388, 07:00 صبح
اساتید مهترم این تالار اگه کمک کنند ممنون می شم
من می خوام فرم استفاده شده که حاوی یک یا دو textbox و یک باتن هست بعد ازکلیک روی باتن اطلاعات نشون بدم من کدها رو به این شکل نوشتم :
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
Welcome <?php echo $_POST["fname"]; ?>!<br />
You are <?php echo $_POST["age"]; ?> years old.
</body>
</html>

که خطای زیر رو میده :

Notice: Undefined index: fname in D:\wamp\www\wellcome.php on line 9


Notice: Undefined index: age in D:\wamp\www\wellcome.php on line 10

و در واقع متغیرهای مورد نظر رو نمی شناسه لطفا راهنمایی فرمایید . ممنون

امیـرحسین
جمعه 17 مهر 1388, 13:42 عصر
وقتی فرم submit نشده، اون متغیرها وجود ندارند و خطا هم همینه که میگه عنصرهای تعریف نشده استفاده شده.
اینجوری تغییر بدید درست میشه:
<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
Welcome <?php if(isset($_POST["fname"])) echo $_POST["fname"]; ?>!<br />
You are <?php if(isset($_POST["age"])) echo $_POST["age"]; ?> years old.
</body>
</html>
تابع isset وجود متغیر (اینجا عنصر آرایه) رو چک می کنه.

aserfg
جمعه 17 مهر 1388, 20:36 عصر
با تشکر فراوان از شما آقا امیر حسین عزیز ، شاید مشکل کار اینه که من تو پی اچ پی خیلی مبتدیم . خدمتتون عرض کنم مشکل خطایی که گفتم با راه حل شما درست شد ولی من می خوام بدونم چه جوری می شه بعد از ارسال (submit) کردن فرم (با کلیک روی دکمه ) مشخصات وارد شده توی textbox ها رو نشون داد .
قبلا از راهنمایی شما دوستان گرامی خصوصا آقا امیر حسین عزیز تشکر می کنم .

kavoshgar63
شنبه 18 مهر 1388, 10:55 صبح
یک روش اینه که با جاوااسکریپت کار کنی من دقیقا متوجه سئوالتون نشدم ولی تا اندازه ای که درک کردم این طوری باید باشه.


<form action="welcome.php" name="myform">
<input type="text" id="fname" name="fname">
<input type="button" onclick="alert(document.getElementById("fname").value);window.myform.submit();">
</form>

این دستورات بالا یک پنجره هشدار باز می کنه و محتویات داخل تکست باکس رو نشون میده بعد هم فرم رو ارسال می کنه.نمی دونم اگر سئوالتون چیز دیگه ای هست شفافتر توضیح بدین

امیـرحسین
شنبه 18 مهر 1388, 11:45 صبح
منظورتون از "مشخصات وارد شده توی textbox ها" چیه؟
textbox یه name داره و یه مقدار که دو تاش وارد php میشه....
بیشتر توضیح بدید

aserfg
یک شنبه 19 مهر 1388, 12:56 عصر
سئوال من كه خيلي واضحه يه تكست باكس و يك باتن داريم كاربر مثلا نام خودش رو داخل تكست باكس تايپ مي كنه مثلا ali بعد از كليك روي باتن مي خوام نوشته بشه wellcame ali

امیـرحسین
یک شنبه 19 مهر 1388, 13:19 عصر
اگه منظورتون اینه که wellcome اینا فقط وقتی دکمه زده شد نشون داده باشه. کافیه قبل از چاپ اونها، وجود مقادیر POST رو چک کنید. همون کاری که من توی پست اول گذاشتم. IF رو برای کل متن بذارید...

fafa_2000
یک شنبه 19 مهر 1388, 15:37 عصر
سلام
action فرم اشتباه گذاشتی بگذارش wellcome.php یا اسم فایلتو بگذار welcome.php

aserfg
چهارشنبه 22 مهر 1388, 07:17 صبح
از همه عزیزان متشکرم ، حالا کد به صورت
<html>
<form action="wellcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
Welcome <?php if(isset($_POST["fname"])) echo $_POST["fname"]; ?>!
You are <?php if(isset($_POST["age"])) echo $_POST["age"]; ?> years old.
</body>
</html>
است . چه جوری می شه کد زمان رفرش شدن صفحه دیگه اجرا نشه . یعنی اگه مثلا fname=ali و age=29 بود خروجی بعد از کلیک روی submit query به شکل

Welcome ali! You are 29 years old.
خواهد بود . حالا من می خوام اگه کاربر دکمه رفرش رو زد . دیگه ali, 29 تو خروجی نوشته نشه .

aserfg
پنج شنبه 30 مهر 1388, 23:01 عصر
کسی نیست جواب بده

mahmood3d
جمعه 01 آبان 1388, 00:01 صبح
سلام
دوباره سؤالتون گنگه و من دقیقا متوجه نشدم شما چی می خواین. ولی اگه منظورتون اینه که وقتی صفحه رفرش شد اطلاعات صفحه مثل زمانی باشه که تازه صفحه رو باز کردین این امکان نداره چون شما به مرورگر می گین کارهایی که اخیرا با باز کردن صفحه انجام دادی رو دوباره تکرار کن. مگر اینکه بعد از نشون دادن مقادیر صفحه رو ریدایرکت کنی و صفحت رو دوباره نشون بدی که با این کار اطلاعاتی که توی صفحه نشون داده بودی دوباره غیب میشن. این کار زمانی خوبه که بخوای اطلاعاتت رو وارد دیتا بیس کنی که بعد از عمل Insert بهتره عمل ریدایرکت رو انجام بدی تا کاربر با رفرش کردن صفحه اطلاعات رو چندین بار به دیتا بیس وارد نکنه

aserfg
جمعه 01 آبان 1388, 08:02 صبح
دست گلت درد نکنه اتفاقا من منظورم دقیقا همین دیتا بیس بود که هر بار رفرش می شه دوباره اطلاعات ذخیره می شن ولی من چون تو پی اچ پی تازه کارم در مورد ریدایرکت چیزی نمی دونم اگه یه توضیح کوچلو البته با کد بدین خیلی کمک کردین .

mahmood3d
جمعه 01 آبان 1388, 09:23 صبح
برای انجام این کار راه های مختلفی وجود داره از جمله اینکه:
تو کدهای پی اچ پی header رو مقدار دهی کنی
عمل ریدایرکت رو با کدهای جاوا اسکریپت انجام بدی
یا اینکه این کار رو با استفاده از تگ های Meta صفحه انجام بدی
البته من مورد سوم رو بیشتر ترجیح می دم که راحت تر و آسون تره. :لبخند: ولی باید یک مورد رو هم بهتون بگم که برای استفاده از این گزینه باید صفحه وارد کردن اطلاعات و ذخیره اطلاعاتتون جدا از هم باشه که ضفحتون همیشه رفرش نشه در غیر این صورت باید از دو مورد اول استفاده کنید.
برای استفاده از تگ meta به این صورت عمل کنید:


<meta http-equiv="refresh" content="3;URL=form.php" />

که در اینجا گفته شده بعد از اینکه صفحه باز شد بعد از 3 ثانیه به صفحه form.php برگرد.

navidlog
جمعه 01 آبان 1388, 10:56 صبح
html>
<body>
<?php
if (isset($_GET[actio])
if (_GET[action]=="show")
{
echo "Welcome $_POST['fname']!<br />";
echo "You are $_POST['age'] years old.";
}else{
?>
<form action="welcome.php?action=show" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
<?php } ?>
</body>
</html>

mahmood3d
جمعه 01 آبان 1388, 12:10 عصر
اگه می خواین که عمل ریدایرکت تو همین صفحه انجام بشه کدتون رو به این صورت تغییر بدین:



<html>
<body>
<?php
if (isset($_GET['action'])
if ($_GET['action']=="show")
{
// کدهای وارد کردن اطلاعات به دیتا بیس
header('location:wellcome.php')
}else{
?>
<form action="welcome.php?action=show" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
<?php } ?>
</body>
</html>

hueman
شنبه 02 آبان 1388, 11:02 صبح
کسی نیست جواب بده
اینکه بخاین یه فرم فقط یک بار ارسال بشه کار غیرمعمولی هست ولی پیچیده نیست
یه روشش استفاده از جاوا اسکریپته، یه روش دیگه استفاده از سژنه، یه روش دیگه اینه که بعد از نمایش اطلاعات تو یه فایل بنویسی که فرم یه بار ارسال شده و دفعه بعدی چک کنی که تو اون فایل چی نوشتین ، یه روش دیگه نوشتن در بانک اطلاعاتیه و...
اینکه دوستان جوابی به این خواسته شما ندادن من فکر می کنم به خاطر غیر معمول بودن خواسته شماست، اگه بگین که چرا میخاین این فرم یک بار ارسال بشه مطمئن باشین بهتر میشه کمکتون کرد
موفق باشی

aserfg
جمعه 08 آبان 1388, 12:16 عصر
جناب آقا محمود اگه کد تون رو یه توضیح کوچلو بدین ممنون می شم همراه با کار متا تگها به عبارتی
1-
if (isset($_GET['action'])
if ($_GET['action']=="show")
{
// کدهای وارد کردن اطلاعات به دیتا بیس
header('location:wellcome.php')
}else{2-وظیفه متا تگها در پی اچ پی

در ضمن کد شما رو به این شکل (زیر) استفاده کردم ولی هیچ مقداری برگشت داده نشد .

<html>
<body>
<?php
if (isset($_GET['action'])) {
if ($_GET['action']="show")
{
$name=$_POST["fname"];
print("wellcome $name");
header('location:f.php');
}}
?>
<form action="f.php" action="show" method="post">
Name: <input type="text" name="fname" >
Age: <input type="text" name="age" >
<input type="submit">
</form>

</body>
</html>

با تشکر