رفتن به مطلب

یک مشکل ساده در php


پست های پیشنهاد شده

سلام

اول بابت عنوان عذرخواهی میکنم چون واقعا نمیدونستم باید چی بنویسم

من کدهای زیر روی توی فایل index.php مینویسم و با ارور مواجه میشم


<form action="index.php" method="POST">
<input type="text" name="num1"/>
<input type="text" name="num2"/>
<input type="submit" value="calculate"/>
</form>
<?php
echo $_POST['num1'] + $_POST['num2'];
?>

اروری هم که میده اینه :

Notice: Undefined index: num1 in C:\wamp\www\index.php on line 7

Notice: Undefined index: num2 in C:\wamp\www\index.php on line 7

اما اگر توی اکشن فرم یه صفحه ی دیگه رو وارد کنم و کدهای پی اچ پی رو توی اون صفحه وارد کنم مشکل حل میشه و جمع دوتا تکس باکس رو چاپ میکنه

ممنون میشم راهنمایی کنید.

  • امتیاز 1
لینک به ارسال

سلام

این پیغام به خاطر این هست که $_POST هنوز مقدار دهی نشده و خالیه.

شما میتونید با این کد این پیغام رو حذف کنید.


error_reporting(E_ERROR | E_WARNING | E_PARSE);

یا


error_reporting(E_ALL & ~E_NOTICE);

اما بهترین کار اینه که چک کنید مقدار شده یا نه :


if(isset($_POST['num1']) && isset($_POST['num2']))
echo $_POST['num1'] + $_POST['num2'];

یا


if(!empty($_POST['num1']) && !empty($_POST['num2']))
echo $_POST['num1'] + $_POST['num2'];

  • امتیاز 1
لینک به ارسال

سلام

اول بابت عنوان عذرخواهی میکنم چون واقعا نمیدونستم باید چی بنویسم

من کدهای زیر روی توی فایل index.php مینویسم و با ارور مواجه میشم


<form action="index.php" method="POST">
<input type="text" name="num1"/>
<input type="text" name="num2"/>
<input type="submit" value="calculate"/>
</form>
<?php
echo $_POST['num1'] + $_POST['num2'];
?>

اروری هم که میده اینه :

Notice: Undefined index: num1 in C:\wamp\www\index.php on line 7

Notice: Undefined index: num2 in C:\wamp\www\index.php on line 7

اما اگر توی اکشن فرم یه صفحه ی دیگه رو وارد کنم و کدهای پی اچ پی رو توی اون صفحه وارد کنم مشکل حل میشه و جمع دوتا تکس باکس رو چاپ میکنه

ممنون میشم راهنمایی کنید.

سلام

این کد رو تست کنید


<form action="index.php" method="POST">
<input type="text" name="num1"/>
<input type="text" name="num2"/>
<input type="submit" value="calculate"/>
</form>
<?php
echo $_POST['num1'] . $_POST['num2'];
?>

  • امتیاز 1
لینک به ارسال

سلام

این پیغام به خاطر این هست که $_POST هنوز مقدار دهی نشده و خالیه.

شما میتونید با این کد این پیغام رو حذف کنید.


error_reporting(E_ERROR | E_WARNING | E_PARSE);

یا


error_reporting(E_ALL & ~E_NOTICE);

اما بهترین کار اینه که چک کنید مقدار شده یا نه :


if(isset($_POST['num1']) && isset($_POST['num2']))
echo $_POST['num1'] + $_POST['num2'];

یا


if(!empty($_POST['num1']) && !empty($_POST['num2']))
echo $_POST['num1'] + $_POST['num2'];

خوب اگر مقدار دهی نشده پس چرا وقتی کد پی اچ پی رو منتقل میکنم به صفحه ی دیگه و توی اکشن فرم اون صفحه رو معرفی میکنم مشکل حل میشه؟

سلام

این کد رو تست کنید


<form action="index.php" method="POST">
<input type="text" name="num1"/>
<input type="text" name="num2"/>
<input type="submit" value="calculate"/>
</form>
<?php
echo $_POST['num1'] . $_POST['num2'];
?>

آقا حمید این که همون کدیه که خودم توی پست اول گفتم

  • امتیاز 1
لینک به ارسال

خوب اگر مقدار دهی نشده پس چرا وقتی کد پی اچ پی رو منتقل میکنم به صفحه ی دیگه و توی اکشن فرم اون صفحه رو معرفی میکنم مشکل حل میشه؟

چون شما که اون صفحه رو نمیبینید که بخواد پیغام بهتون نشون بده.

وقتی هم submit میکنید و به اون صفحه میرید ، متغییر ها مقدر دهی شدند دیگه !!!

  • امتیاز 1
لینک به ارسال

چون شما که اون صفحه رو نمیبینید که بخواد پیغام بهتون نشون بده.

وقتی هم submit میکنید و به اون صفحه میرید ، متغییر ها مقدر دهی شدند دیگه !!!

آهان درسته

اما من توی فیلم آموزشی که دیدم دقیقا همینکار رو انجام داده بود و هیچ مشکلی هم نداشت

  • امتیاز 1
لینک به ارسال

آهان درسته

اما من توی فیلم آموزشی که دیدم دقیقا همینکار رو انجام داده بود و هیچ مشکلی هم نداشت

حتما داخل فایل php.ini تنظیم کرده که این پیغام رو نشون نده.


http://www.phpknowhow.com/configuration/php-ini-error-settings/

  • امتیاز 1
لینک به ارسال

آهان درسته

اما من توی فیلم آموزشی که دیدم دقیقا همینکار رو انجام داده بود و هیچ مشکلی هم نداشت

حالا که ارورتون حذف شده

به احتمال زیاد وقتی sumbit میکنید فقط 0 رو نشون بده

چون علامت جمع تو php بعلاوه نیست و از نقطه استفاده میکنند. مثل این


echo $_POST['num1'] . $_POST['num2'];

  • امتیاز 1
لینک به ارسال

حتما داخل فایل php.ini تنظیم کرده که این پیغام رو نشون نده.


http://www.phpknowhow.com/configuration/php-ini-error-settings/

آهان شاید همین باشه

در هر صورت من که بیخیالش شدم همون توی یک فایل دیگه میزارمشون که دردسری هم نباشه

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

حالا که ارورتون حذف شده

به احتمال زیاد وقتی sumbit میکنید فقط 0 رو نشون بده

چون علامت جمع تو php بعلاوه نیست و از نقطه استفاده میکنند. مثل این


echo $_POST['num1'] . $_POST['num2'];

نه ارور حذف نشده مشکل هنوز پا برجاست

ولی فکر میکنم که . برای جمع نباشه بلکه برای کنار هم قرار دادن متن ها باشه یعنی یه جوری چسبوندنشون به هم ، ولی برای جمع دو عدد از همون + استفاده میشه (البته من فقط چند روزه شروع کردم به یادگیری و خیلی مطمئن نیستم)

  • امتیاز 1
لینک به ارسال

آهان شاید همین باشه

در هر صورت من که بیخیالش شدم همون توی یک فایل دیگه میزارمشون که دردسری هم نباشه

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

نه ارور حذف نشده مشکل هنوز پا برجاست

ولی فکر میکنم که . برای جمع نباشه بلکه برای کنار هم قرار دادن متن ها باشه یعنی یه جوری چسبوندنشون به هم ، ولی برای جمع دو عدد از همون + استفاده میشه (البته من فقط چند روزه شروع کردم به یادگیری و خیلی مطمئن نیستم)

منم مثل شما یک هفتست شروع کردم

الان اینوو تست کنید ارور نمیده


<form action="index.php" method="POST">
<input type="text" name="num1"/>
<input type="text" name="num2"/>
<input type="submit" value="calculate"/>
</form>
<?php
if(isset($_POST['num1']) && isset($_POST['num2'])) {
echo $_POST['num1'] . ' ' . $_POST['num2'];
}
?>

  • امتیاز 1
لینک به ارسال

بله مشکل رفع شد اما من میخواستم بدونم چطوری توی اون فیلم بدون شرط اجرا شد فایل که دوستمون بالاتر توضیح دادن دلیلشو

در مورد isset هم ممنون میشم اگر توضیح بدید که کارش چی هست

لینک به ارسال

isset مشخص میکنه که آیا در آرایه، آیتم موردنظر قرار داره یانه. بیشترین استفاده از اون برای validateکردن فرم‌ها (یعنی ببینیم کاربر مقادیر فرم رو درست وارد کرده یا نه) استفاده میشه. مثلا اگه توی فرممون المنتی به نام test_input داشته باشیم، به روش زیر میشه چک کرد که آیا کاربر مقداری وارد کرده یا نه:


<?php

if ( ! isset( $_REQUEST['test_input'] ) {
// User didn't fill it.Let's Tell him!
}

  • امتیاز 1
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید



ورود به حساب کاربری
×
×
  • اضافه کردن...