خطا در ارسال فرم

PHP

توسط maynoush در 4 سال پیش
0 1.6k 9 4 سال پیش
maynoushrezamaxc0derbannerlordmahbobe-progcomodo
0

سلام دوستان من 1 فرم ساده نوشتم که ظاهرا ایرادی نداره.ولی وقتی دکمه submit رو میزنم خطا میده که Undefined index: gender in ...
نمیفهمم چرا gender رو تعریف نشده میدونه.

<html>
<head>
    <title>What be ye laddie? </title>
</head>
<body>
    <form action="submit_form.php" method="post">
        <input type="radio" name="gender" value="Male"/>Male<br />
        <input type="radio" name="gender" value="Female"/>Female<br />
        <input type="radio" name="gender" value="Other"/>None of your business<br />
        <input type="submit" value="submit">
    </form>
</body>
</html>

اینم کد صفحه submit :

<html>
    <head>
        <title>What be ye laddie?</title>
    </head>
<body>
    <?php
    $gender = $_POST['gender'];
    switch($gender){
        case "Male":
        case "Female":
        case "Other":
            echo "<p>congradulations! You are:" .$gender. "</p>";
            break;
        default:
            echo "<p> WARRNING :<br /> Invalid input value for gendre specified. </p>";
            break;
    }
    ?>
</body>
</html>

مرسی

0

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

0

تا قبل از ظهر جواب نمیداد، چرا خود به خود درست شده؟؟؟ همیشه با فرما این مشکل و دارم :13: ولی هنوز 1 مشکلی داره.اگه یکی از دکمه های Radio انتخاب بشه پیام congradulations رو میده ولی اگه هیچ دکمه ای انتخاب نشه علاوه بر Warrning همون ارور Undefined index رو برای gender میده. مگه نه اینکه فقط باید Warrning رو چاپ کنه؟

0

با سلام علتش اینه که اگه هیچ گزینه ای انتخاب نشه اصلا gender ارسال نمیشه تا بخواد تو متغیر ذخیره بشه. باید با تابع isset بررسی کنید که gender ارسال شده.

<html>
    <head>
        <title>What be ye laddie?</title>
    </head>
<body>
    <?php
	if(isset( $_POST['gender'])){
		$gender = $_POST['gender'];
		switch($gender){
			case "Male":
			case "Female":
			case "Other":
				echo "<p>congradulations! You are:" .$gender. "</p>";
				break;
			default:
				echo "<p> WARRNING :<br /> Invalid input value for gendre specified. </p>";
				break;
		}
	}
    ?>
</body>
</html>
0

> با سلام علتش اینه که اگه هیچ گزینه ای انتخاب نشه اصلا gender ارسال نمیشه تا بخواد تو متغیر ذخیره بشه. باید با تابع isset بررسی کنید که gender ارسال شده. ``` <html> <head> <title>What be ye laddie?</title> </head> <body> <?php if(isset( $_POST['gender'])){ $gender = $_POST['gender']; switch($gender){ case "Male": case "Female": case "Other": echo "<p>congradulations! You are:" .$gender. "</p>"; break; default: echo "<p> WARRNING :
Invalid input value for gendre specified. </p>"; break; } } ?> </body> </html> ```

ممنونم. یعنی من هرجایی که فرم گذاشتم باید چک کنم که آیا فرمم مقداری گرفته یا نه؟ مشکل errorها حل شد ولی هنوز وقتی هیچکدام از دکمه ها انتخاب نمیشن WARRNING رو چاپ نمیکنه؟؟

0

> ممنونم. یعنی من هرجایی که فرم گذاشتم باید چک کنم که آیا فرمم مقداری گرفته یا نه؟ مشکل errorها حل شد ولی هنوز وقتی هیچکدام از دکمه ها انتخاب نمیشن WARRNING رو چاپ نمیکنه؟؟

بله

ولی هنوز وقتی هیچکدام از دکمه ها انتخاب نمیشن WARRNING رو چاپ نمیکنه؟؟


چون شرط برقرار نمیشه و به سویچ نمیرشه تا پیامو نشون بده میتونید به این شکل تغییر بدید چون دستور سویچ در اینجا لازم نیست
<html>
    <head>
        <title>What be ye laddie?</title>
    </head>
<body>
    <?php
    if(isset( $_POST['gender'])){
        $gender = $_POST['gender'];
		echo "<p>congradulations! You are:" .$gender. "</p>"
    }
	else{
			echo "<p> WARRNING :<br /> Invalid input value for gendre specified. </p>";
	}
    ?>
</body>
</html>
0

سلام فکر میکنم دلیل WARRNING واسه این باشه که اومدین از switch استفاده کردین ولی برای هر case عملیاتی تعریف نکردین- اگه میخاین برا همشون یک عملیات انجام بشه پس از switch استفاده نکنین .

0

> سلام فکر میکنم دلیل WARRNING واسه این باشه که اومدین از switch استفاده کردین ولی برای هر case عملیاتی تعریف نکردین- اگه میخاین برا همشون یک عملیات انجام بشه پس از switch استفاده نکنین .
فکر کنم در اشتباهید :smilingsmiley:
0

ممنونم دوستان.درست شد ولی بالاخره اشکالم به خاطر case های پشت سر هم بود؟؟یا اینکه شرط هام رو اشتباه تعریف کردم که به default نمیرسید؟

آخرین ویرایش: 30-05-2014 ساعت 01:06، توسط maynoush
0

> ممنونم دوستان.درست شد ولی بالاخره اشکالم به خاطر case های پشت سر هم بود؟؟یا اینکه شرط هام رو اشتباه تعریف کردم که به default نمیرسید؟
case پشت سر هم هیچ اشکالی نداره کد switch هم درست بود اما بعد از کدی که BaNNer LorD گذاشت چون اول شرط موجود بودن gender بررسی میشد اگر وجود نداشت دیگه شرط علط میشد و به سویچ نمیرسید. البته دوستان قبلا توضیح داده بودن.

خوش آمدید

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

لطفا ابتدا لاگین کنید