দুটি একটি ফর্ম বোতাম জমা দিন


534

একটি ফর্মে আমার কাছে দুটি জমা বোতাম রয়েছে। কোনটি সার্ভারসাইড হিট হয়েছিল তা আমি কীভাবে নির্ধারণ করব?


তোতার উত্তরগুলির স্বীকৃত উত্তরটি পরিবর্তন করার বিষয়ে বিবেচনা করুন ।
পিটার মর্টেনসেন

2
@ পিটারমোরটেনসেন - গৃহীত উত্তর বা তোতার তো উত্তরই আজ সেরা নয়। বৈশিষ্ট্য ব্যবহার করে নতুন HTML5 সমাধানের জন্য লিওর উত্তর দেখুন formaction। অথবা ব্রাউজারে প্রেরিত মান থেকে কীভাবে এইচটিএমএল এইচটিএমএল ব্যবহারকারীদের কাছে দৃশ্যমান থাকতে পারে তার জন্য কিরিলের উত্তর দেখুন - আন্তর্জাতিককরণের সমস্যাটি গ্রেগ বা তোতাড়কের জবাবের চেয়ে সহজতর কোনও কোড পদ্ধতিতে সমাধান করা যায়।
টুলমেকারস্টেভ

উত্তর:


446

আপনি যদি প্রত্যেককে একটি নাম দেন, ক্লিক করা অন্য কোনও ইনপুট হিসাবে পাঠানো হবে।

<input type="submit" name="button_1" value="Click me">

101
বাটনটির নামটি সঠিক নাম আছে কিনা তাও নিশ্চিত করুন! উদাহরণস্বরূপ "বোতাম -১" কাজ করবে না। কাউকে প্রচুর ঝামেলা বাঁচাতে পারে তাই এটি মনে রাখবেন।
pdolinaj

22
সাধারণত, ফর্মের সমস্ত ইনপুট ফর্মের সাথে প্রেরণ করা হয়। যেহেতু একটি বোতামের মান কেবল ক্লিক করা হলে জমা দেওয়া হয়, আপনাকে এই পূর্বনির্ধারিত নামের জন্য ফর্মের মানগুলি সন্ধান করতে হবে। আমি মনে করি যে অন্যান্য উত্তর ( স্ট্যাকওভারফ্লো.com / a / 21778226 / 88409 ) এর সাথে বিভিন্ন মান সহ তাদের একই নাম দেওয়া জড়িত, আরও অর্থবোধ করে। তারপরে আপনি কেবল একটি একক পরিচিত ফর্ম ফিল্ড নামের অধীনে মানটি ধরবেন। এটি আরও স্পষ্ট করে তোলে যে প্রদত্ত ইনপুট নামের জন্য কেবলমাত্র একটি মান (ক্লিক করা একটি) প্রেরণ করা হবে, যেমনটি রেডিও বোতাম কীভাবে কাজ করে (একই নাম, বিভিন্ন মান)।
ট্রায়ঙ্কো

6
@ ট্রাইঙ্কো যেমন রবিন গ্রীন সেই উত্তরের মন্তব্যে বলেছিলেন, এটি আন্তর্জাতিকীকরণের পক্ষে ভাল। উদাহরণস্বরূপ, পৃষ্ঠাটি যদি স্প্যানিশ ভাষায় রেন্ডার করা হয় তবে বোতামগুলির পাঠ্য সম্ভবত পৃথক হবে। সুতরাং আপনার কোডটির লজিক থাকা সেই বোতামের পাঠ্যের উপর নির্ভর করে সেই ক্ষেত্রে ব্রেক হয়ে যাবে। নামটি দেওয়া নিরাপদ, কারণ এটি এমন একটি মান যা ব্যবহারকারীর কাছে প্রদর্শিত হয় না এবং তাই "ব্যক্তিগত" ভেরিয়েবল হিসাবে বেশি বিবেচনা করা যেতে পারে এবং ব্যবহারকারীদের কাছে একটি বার্তা হিসাবে কম less
sfarbota

@ এসফারবোটার মন্তব্যটি স্পষ্ট করতে: তোতাবীর উত্তরে প্রদর্শিত প্রথম সমাধানটি সমস্যাযুক্ত, কারণ এটি ব্যবহারকারীর দ্বারা দৃশ্যমান মানের পরীক্ষার উপর নির্ভর করে । এটি সন্দেহজনক - কোড যা ব্যবহারকারী-দৃশ্যমান শব্দের পরিবর্তন করার সময় ভঙ্গ করে "ভঙ্গুর" হিসাবে বিবেচিত হয়। দ্বিতীয় তোতাপাখি এর উত্তর দেখানো সমাধান উত্তম - এই এক হিসাবে একই। তোতার দ্বিতীয় সমাধানটিও অনুরূপ কোডটি লেখার জন্য দেখায়, সুতরাং এটির চেয়ে এটি আরও কার্যকর উত্তর।
টুলমেকারস্টেভ

2
বৈশিষ্ট্য ব্যবহার করে নতুন HTML5 সমাধানের জন্য লিওর উত্তর দেখুন formaction। বা কীভাবে এইচটিএমএল ব্যবহারকারীকে ব্রাউজারে প্রেরিত মান থেকে স্বতন্ত্র থাকতে হবে - আন্তর্জাতিকীকরণ সমস্যা সমাধানের জন্য কীরিলের উত্তর দেখুন ।
টুলমেকারস্টেভ

875

সমাধান 1:
প্রতিটি ইনপুটকে আলাদা আলাদা মান দিন এবং একই নামটি রাখুন:

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

তারপরে কোডটি পরীক্ষা করে দেখুন যেটি ট্রিগার হয়েছিল:

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

সমস্যাটি হ'ল ইনপুটটির মধ্যে ব্যবহারকারী-দৃশ্যমান পাঠ্যের সাথে আপনার যুক্তিটি যুক্ত করুন।


সমাধান 2:
প্রত্যেককে একটি আলাদা নাম দিন এবং সেই ইনপুটটির অস্তিত্বের জন্য _P _POST টি পরীক্ষা করুন:

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

এবং কোডে:

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}

37
আই 18 এন উদ্দেশ্যে নির্বাচিত উত্তরটি ব্যবহার করা ভাল।
রবিন গ্রিন

11
@ লাস্লোপ্লাপ যেমন উত্তরটি বলেছে, আপনি যদি উপরে বর্ণিত উত্তরটি ব্যবহার করেন তবে আপনি যুক্তিকে প্রভাবিত না করে ফর্মটি (অর্থাত্ বিভিন্ন ভাষায় বা উপভাষায় অনুবাদ) করতে পারেন। আপনি যদি এই উত্তরের প্রথম বিকল্পটি ব্যবহার করেন তবে যুক্তিটি ফর্মটি আসলে উপস্থাপিত ভাষাটির উপর নির্ভর করে
রবিন গ্রীন

1
@ রবিনগ্রিন: আমি মনে করি বেশিরভাগ মানুষ দ্বিতীয় যুক্তি ব্যবহার করবে, তাই না?
lpapp

5
i18n = i [nternationalizatio] n, এবং 18 টি প্রথম এবং শেষের মধ্যে 18 টি অক্ষরের জন্য দাঁড়ায়।
বাটাল বুট্কাস

18
ওপি পিএইচপি চেয়েছিল না।
রুডি

110

একটি আরও ভাল সমাধান ফর্ম জমা দেওয়ার জন্য বোতাম ট্যাগ ব্যবহার করে গঠিত:

<form>
    ...
    <button type="submit" name="action" value="update">Update</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

বোতামের ভিতরে এইচটিএমএল (উদাঃ)..>Update<.. এটি ব্যবহারকারীর দ্বারা দেখা যায়; কারণ এইচটিএমএল সরবরাহ করা থাকে, এটি valueব্যবহারকারী দ্বারা দৃশ্যমান নয়; এটি কেবল সার্ভারে প্রেরণ করা হয় This এইভাবে আন্তর্জাতিকীকরণ এবং একাধিক ডিসপ্লে ল্যাঙ্গুয়েজে কোনও অসুবিধা নেই) পূর্ববর্তী সমাধান, বোতামের লেবেলটি সার্ভারে প্রেরিত মানও)।


13
স্পষ্টতই ব্রাউজারের আচরণের পার্থক্য রয়েছে; কেউ মান বৈশিষ্ট্য জমা দেয়, অন্যদের ট্যাগের মধ্যে স্ট্রিং ... সুতরাং এটির সাথে সতর্ক থাকুন।
জেরোইন ডিয়েরাকেক্স

1
আমি প্রদান করা স্নিপেট সম্পূর্ণরূপে সমর্থিত হয় (মনে w3schools.com/tags/att_button_type.asp )
kiril

2
এই লিঙ্কটি থেকে @ কিরিল স্নিপেট দুটি ভিন্ন ধরণের <button>: submitএবং ব্যবহার করে reset। নোট যা resetকিছু জমা দেয় না, এটি কেবল ফর্মটি পুনরায় সেট করে। সুতরাং জেরোইনের যুক্তি রয়ে গেছে।
fizruk

7
ঠিক আছে, আপনার অধিকার। তারপরে, আমি HTML5 ডাব্লু 3 সি ওয়ার্কিং ড্রাফ্টটি চেক করেছি। উদ্ধৃতি: >> মান বৈশিষ্ট্যটি ফর্ম জমা দেওয়ার উদ্দেশ্যে উপাদানটির মান দেয়। উপাদানটির মান হ'ল উপাদানটির মান বৈশিষ্ট্যের মান, যদি সেখানে একটি থাকে, বা অন্যথায় খালি স্ট্রিং থাকে। >> দ্রষ্টব্য: একটি বোতাম (এবং এর মান) কেবলমাত্র ফর্ম জমা দেওয়ার অন্তর্ভুক্ত থাকে যদি বোতামটি নিজেই ফর্ম জমা দেওয়ার জন্য ব্যবহৃত হত।
কিরিল

8
@ জিরোইন বুল কোন ব্রাউজারগুলি ট্যাগগুলির মধ্যে পাঠ্য জমা দেয়? একটি ইনপুট বা বোতামটি কেবল 'মান' বৈশিষ্ট্যটি জমা দিতে হবে। ছবি বা অন্যান্য এইচটিএমএল ট্যাগ সহ একটি বোতামটিতে আক্ষরিক অর্থে এটি ট্যাগগুলির মধ্যে কিছু থাকতে পারে। এটি কোনও ইনপুট উপাদানটির উপর একটি বোতাম ব্যবহার করার পুরো বিষয়, এবং আপনি ব্রাউজারটি সেই সমস্ত সামগ্রীকে মূল্য হিসাবে ফেলে দেওয়ার পরামর্শ দেওয়ার চেষ্টা করছেন? কোনভাবেই না.
ট্রায়ঙ্কো

93

formactionবৈশিষ্ট্যটি: এটিতে একটি নতুন এইচটিএমএল 5 পদ্ধতি রয়েছে

<button type="submit" formaction="/action_one">First action</button>
<button type="submit" formaction="/action_two">Second action</button>

স্পষ্টতই এটি আই 9 এবং এর আগেরটিতে কাজ করে না, তবে অন্যান্য ব্রাউজারগুলির জন্য আপনার ভাল হওয়া উচিত (দেখুন: w3schools.com HTML <বাটন> ফর্মেশন অ্যাট্রিবিউট )।

ব্যক্তিগতভাবে, আমি ব্যাকআপ হিসাবে এই পদ্ধতির সাথে দূরবর্তী (দ্রুত অনুভূত প্রতিক্রিয়ার জন্য) ফর্মগুলি জমা দিতে জাভাস্ক্রিপ্ট ব্যবহার করি। দু'জনের মধ্যেই জাভাস্ক্রিপ্ট অক্ষম থাকা একমাত্র লোকগুলি আইই <9।

অবশ্যই এটি অনুপযুক্ত হতে পারে যদি আপনি মূলত একই বোতামটি ধাক্কা দেওয়া হয় না তা নির্ধারণ করে একই সার্ভার-সাইডটি গ্রহণ করছেন তবে প্রায়শই যদি দুটি ব্যবহারকারী-পক্ষের ক্রিয়া উপলব্ধ থাকে তবে তারা দুটি সার্ভার-সাইড ক্রিয়াকলাপেও ম্যাপ করে।

সম্পাদনা: মন্তব্যে পাস্কেল_ধর দ্বারা উল্লিখিত হিসাবে, এই বৈশিষ্ট্যটি <input>ট্যাগটিতেও পাওয়া যায় ।


1
"ইনপুট" ট্যাগের জন্যও উপলব্ধ।
ডাব্লু 3 স্কুলগুলিতে অ্যাকোডিং

3
আমি 12 বছর ধরে ওয়েব ডেভেলপার হয়েছি এবং এটি আমার কাছে নতুন এবং আসলে আমার যা প্রয়োজন তা ছিল। ধন্যবাদ!
কাইলফারিস

1
আপনি কাইলফারিসকে স্বাগতম! আমি বিশ্বাস করি এটি কেবলমাত্র তুলনামূলকভাবে সাম্প্রতিক সময়ে সম্ভব হয়েছে, সুতরাং আপনি যদি এখনও এটির আগমন না করে অবাক হন।
লিও

2
রেল ব্যবহারকারীদের জন্য নোট: আপনার ফর্মটি ব্যবহার করে তৈরি করা হলে এই বৈশিষ্ট্যটি যুক্ত করা কার্যকর হবে না form_tag। আমি এটি কাজ করার একমাত্র উপায় হ'ল স্যুইচ form_forএবং ব্যবহার f.submit formaction: 'your_path'
fgblomqvist


27

এটি পরীক্ষা করা অত্যন্ত সহজ

<form action="" method="get">

<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">

</form>

এটি কেবল একটি HTML পৃষ্ঠায় রাখুন, বোতামগুলিতে ক্লিক করুন এবং URL টি দেখুন


5
এখানে জিইটি ব্যবহার করা কিছুটা খারাপ অনুশীলন, সম্ভব হলে একজনকে পোষ্ট ব্যবহার করা উচিত।
সিনক্রোসাস

6
@ সাইনক্রসাস এটি পরীক্ষার উদ্দেশ্যে।
এতিয়েন মার্টিন

22

ব্যবহার করুন formactionএইচটিএমএল অ্যাট্রিবিউট (5 ম লাইন):

<form action="/action_page.php" method="get">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <button type="submit">Submit</button><br>
    <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>


@ToolmakerSteve - কিন্তু ব্যবহারকারীদের আছে upvoted । তোমারটা নাও!!
ব্যবহারকারী 12379095

21
<form>
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">    
</form>

এইচটিএমএল 5 বৈশিষ্ট্য। সাম্প্রতিক ওয়েব ব্রাউজারগুলিতে পুরোপুরি কাজ করে, ধন্যবাদ!
স্টিফেন লাললেম্যাগনে

1
দ্রষ্টব্য: এটি লিওর আগের উত্তর হিসাবে একই বলে মনে হচ্ছে , এটি inputট্যাগের পরিবর্তে ট্যাগটির ব্যবহার দেখায় button
টুলমেকারস্টেভ

11

একাধিক জমা বোতামটি মোকাবেলার সেরা উপায় হ'ল সার্ভার স্ক্রিপ্টে স্যুইচ কেস ব্যবহার করা

<form action="demo_form.php" method="get">

Choose your favorite subject:

<button name="subject" type="submit" value="html">HTML</button>
<button name="subject" type="submit" value="css">CSS</button>
<button name="subject" type="submit" value="javascript">Java Script</button>
<button name="subject" type="submit" value="jquery">jQuery</button>

</form>

সার্ভার কোড / সার্ভার স্ক্রিপ্ট - যেখানে আপনি ফর্মটি জমা দিচ্ছেন:

demo_form.php

<?php

switch($_REQUEST['subject']) {

    case 'html': //action for html here
                break;

    case 'css': //action for css here
                break;

    case 'javascript': //action for javascript here
                        break;

    case 'jquery': //action for jquery here
                    break;
}

?>

সূত্র: ডাব্লু 3 স্কুলস ডটকম


হ্যাঁ এটি অবশ্যই আপনার অ্যাকশন স্ক্রিপ্টগুলি সম্পর্কে ধারণা থাকতে হবে (সার্ভার সাইড স্ক্রিপ্টিং প্রযুক্তি) আপনি জমা দেওয়া ডেটা যেমন পিএইচপি, এসপি, জেএসপি ইত্যাদি প্রক্রিয়াকরণের জন্য যে কোনও স্ক্রিপ্ট / ফাইল ব্যবহার করতে পারেন <form action="demo_form.php" method="get">
শৈলেশ সোনারে

ঠিক আছে. এটি বিভ্রান্তিকর কারণ এখানে অ্যাকশনস্ক্রিপ্ট নামে একটি ভাষাও রয়েছে। আপনার বলা উচিত: পরিবর্তে "সার্ভার কোড" বা "সার্ভার স্ক্রিপ্ট"।
নাগরিক

আপনি কী করতে পারেন তা আমার কোনও ধারণা ছিল না বোতামগুলি দিয়ে
উইলিয়াম ইস্ট

10

সম্ভবত এখানে প্রস্তাবিত সমাধানগুলি ২০০৯ সালে কাজ করেছে, তবে ive এই সমস্ত উত্তরের উত্তরগুলি পরীক্ষা করেছে এবং কেউ কোনও ব্রাউজারে কাজ করছে না।

আমি যে সমস্যার সমাধান পেয়েছি তা হ'ল: (তবে এটি মনে করার জন্য এটি কিছুটা কুৎসিত)

<form method="post" name="form">
<input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
<input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>


2
শুধু ব্যবহার formaction="actionurl1"করবেন না কেন ? আপনার জাভাস্ক্রিপ্টের দরকার নেই।
rybo111

3
@ rybo111 আইই9 ব্রাউজার (ডাইনী তুলনামূলকভাবে এখনও ব্যাপকভাবে ব্যবহৃত হয়) সমর্থন করে নাformaction
ক্লুলেস007

1
@ বিনালিয়াঘলে সত্য, এর প্রায় 1% ব্যবহারকারী - প্রকল্পটি কার দিকে লক্ষ্য করা যায় তা নির্ভর করে। প্রায় 1% ব্যবহারকারী জাভাস্ক্রিপ্ট ব্যবহার করেন না।
rybo111

1
ভবিষ্যতের পাঠকদের জন্য: জাভাস্ক্রিপ্ট ব্যবহার করে কোনও উত্তর নেই, যেমন এই উত্তরে। এটি জানতে একটি দরকারী দক্ষতা। OTOH, আরও উচ্চতর উত্তোলিত উত্তরগুলিও সূক্ষ্মভাবে কাজ করে - এই উত্তরের প্রধান বাক্যটি উপেক্ষা করুন। যদি কোনও কারণে আপনি সেই অন্যান্য উত্তরগুলি কাজটিতে পেতে না পারেন, তবে আপনার সম্পূর্ণ কোডটি একটি এসও প্রশ্ন হিসাবে পোস্ট করুন, কী ঘটবে (বা ঘটবে না) ব্যাখ্যা করুন এবং আপনি কী ভুল করছেন তা জিজ্ঞাসা করুন।
টুলমেকারস্টেভ

6

nameহিসাবে সংজ্ঞায়িত করুন array

<form action='' method=POST>
    (...) some input fields (...)
    <input type=submit name=submit[save] value=Save>
    <input type=submit name=submit[delete] value=Delete>
</form>

সার্ভার কোড উদাহরণ (পিএইচপি):

if (isset($_POST["submit"])) {
    $sub = $_POST["submit"];

    if (isset($sub["save"])) {
        // save something;
    } elseif (isset($sub["delete"])) {
        // delete something
    }
}

elseifখুব গুরুত্বপূর্ণ, কারণ উভয় পার্স করা হবে যদি না। উপভোগ করুন।


এখন এটি একটি দুর্দান্ত পরামর্শ - বেশিরভাগ কারণে আপনি খুব সহজেই আরও কেসগুলির সাথে আরও বেশি বোতাম যুক্ত করতে পারেন এবং switchযদি কেউ কোনও বোতাম যুক্ত করে এবং switch(এবং / অথবা কোনও ভুল বানান ইত্যাদি) যুক্ত করতে ভুলে যায় তবে ডিফল্ট ক্রিয়া সহ একটি ব্যবহার করতে পারেন
গুইনেথ ল্লেওলিন

এছাড়াও, @ পাতো একটি অনুরূপ উত্তর যুক্ত করেছেন যা সম্ভবত আরও বুদ্ধিমান, তবে আপনার কাজটি ভাল কাজ করে!
গুইনেথ ল্লেওলিন

1
@ গ্যুইনথলেওলিন আমি অন্য উত্তরগুলি দেখতে পাইনি বা আমার নিজের লেখার সময় লক্ষ্য করিনি। এটি আসলে একইরকম, তবে বেশিরভাগ লোকেরা কীভাবে এই যুক্তিটিকে পছন্দ করে তা কেবল সহজভাবে জোর দেয়। পার্থক্য হ'ল নামগত কারণে, অর্থহীনদের জন্য ভাল বোঝার জন্য বা যার সাথে এটি শুরু করতে পছন্দ করে names
থিলিসিয়াস

5

যেহেতু আপনি কোন সার্ভার-সাইড স্ক্রিপ্টিং পদ্ধতিটি ব্যবহার করছেন তা নির্দিষ্ট না করে আমি চেরিপি ব্যবহার করে পাইথনের পক্ষে কাজ করে এমন একটি উদাহরণ দেব (যদিও এটি অন্যান্য বিষয়গুলির জন্যও কার্যকর হতে পারে):

<button type="submit" name="register">Create a new account</button>
<button type="submit" name="login">Log into your account</button>

কোন বোতামটি চাপছিল তা নির্ধারণের জন্য মানটি ব্যবহার না করে আপনি নামটি ব্যবহার করতে পারেন ( <button>পরিবর্তে ট্যাগ সহ <input>)। এইভাবে, যদি আপনার বোতামগুলির একই পাঠ্য থাকে তবে এটি সমস্যার কারণ হবে না। বোতাম সহ সমস্ত ফর্ম আইটেমের নাম URL এর অংশ হিসাবে প্রেরণ করা হয়। চেরিপাইতে, সেগুলির প্রত্যেকটি একটি পদ্ধতির পক্ষে যুক্তি যা সার্ভার-সাইড কোড করে। সুতরাং, যদি আপনার পদ্ধতিটির কেবলমাত্র **kwargsপ্যারামিটার তালিকার জন্য রয়েছে (প্রতিটি ফর্ম আইটেমের প্রতিটি নামই টেস্টিংয়ের পরিবর্তে টাইপ করার পরিবর্তে) তবে আপনি কোন বোতামটি এইভাবে চাপছিল তা পরীক্ষা করে দেখতে পারেন:

if "register" in kwargs:
    pass #Do the register code
elif "login" in kwargs:
    pass #Do the login code

3
<form method="post">
<input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; //any value to post PHP
<input type='submit' name='update' value='update' formAction='updateCars.php'/>
<input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>

2

আমি মনে করি আপনার জিইটি অ্যারেতে নাম / মানটি পড়তে পারা উচিত। আমি মনে করি যে বোতামটি ক্লিক করা হয়নি তা সেই তালিকায় উপস্থিত হবে।


আপনি সম্ভবত পোষ্ট অ্যারে বোঝাচ্ছেন।
ypnos

3
অগত্যা নয়, যদি ফর্মটির পদ্ধতিটি "পোস্ট" হয় তবে এটি জিইটি অ্যারেতে প্রদর্শিত হবে না। বেশিরভাগ ফরম পোস্টের মাধ্যমে জমা দেওয়া হয়।
তোতারা

2
হয় / অথবা প্রযুক্তিগতভাবে সঠিক, এবং তবুও ভুল। আপনি পদ্ধতি = "জিইটি" সহ একটি ফর্ম জমা দিতে পারেন তবে এটি ক্রিংজেবল।
বিল করুন

4
এটি কেবল "ক্রিংজেবল" যখন অনুপযুক্তভাবে ব্যবহার করা হয়: w3.org/2001/tag/doc/whenToUseGet.html
মার্টারে

2
হ্যাঁ আমি জিইটি প্রস্তাব দেওয়ার চেষ্টা করছিলাম না, আমি কেবল জিনিসগুলি সাধারণ করার চেষ্টা করছিলাম।
জন বুব্রিস্কি

1

আপনি এটি এর মতো করেও করতে পারেন (আমার মনে হয় আপনার যদি এন ইনপুট থাকে তবে এটি খুব সুবিধাজনক)।

<input type="submit" name="row[456]" value="something">
<input type="submit" name="row[123]" value="something">
<input type="submit" name="row[789]" value="something">

একটি সাধারণ ব্যবহারের ক্ষেত্রে প্রতিটি বোতামের জন্য একটি ডাটাবেস থেকে বিভিন্ন আইডি ব্যবহার করা হবে, যাতে আপনি পরে সার্ভারে জানতে পারবেন যে সারিটি ক্লিক করা হয়েছিল।

সার্ভার সাইডে (এই উদাহরণে পিএইচপি) আপনি আইডি পেতে অ্যারে হিসাবে "সারি" পড়তে পারেন। $_POST['row']আকারে [ id => value ](উদাহরণস্বরূপ [ '123' => 'something' ]) একটি মাত্র উপাদান সহ একটি অ্যারে হবে ।

সুতরাং, ক্লিক করা আইডি পেতে, আপনি করুন:

$index = key($_POST['row']);

http://php.net/manual/en/function.key.php


এটি @ তিলেলিশ পোস্ট করা উত্তরের মতো , তবে সম্ভবত আপনারা আরও বুদ্ধিমান । ব্যক্তিগতভাবে আমি পাঠ্যতার জন্য সূচকের জন্য (সংখ্যার বিপরীতে) আলফানিউমেরিক ট্যাগগুলি ব্যবহার করতে পছন্দ করি (প্রতিটি বোতামের কী করা উচিত তা মনে রাখা সহজ) তবে ওয়াইএমএমভি। কিন্তু $_POST['row']সহযোগী অ্যারে হওয়ার সুবিধা নেওয়া চতুর!
গ্যুইনেথ লেলেলিন

1
আমি সম্মত হই যে, আপনি যদি স্থির বোতামগুলির সাথে কাজ করে থাকেন তবে আপনার নামযুক্ত কীগুলি ব্যবহার করা উচিত। তবে কিছু ক্ষেত্রে আপনি পারবেন না। কখনও কখনও আপনি গতিশীল এই ইনপুট উত্পাদন। এর সর্বাধিক সাধারণ কেস হ'ল সারিগুলির একটি তালিকা, প্রতিটি আইডি দ্বারা চিহ্নিত। আমি অনুমান করি যে আমি যখন এই উত্তরটি লিখেছিলাম (4 বছর আগে)! আমি এটি সম্পাদনা করেছি তাই এটি আরও স্পষ্ট যে সংখ্যাটি একটি আইডি, কোনও সূচক নয়।
প্যাটো

সাবাশ! হ্যাঁ, আমি একমত, এখন এটি আরও স্পষ্ট; আমি এখনও বিশ্বাস করি যে আপনার উত্তর @ থিলিউসিয়াসের চেয়ে কিছুটা ভাল (এবং সম্ভবত আরও কিছুটা দক্ষ, বিশেষত যদি অনেকগুলি বোতাম থাকে তবে)।
গুইনেথ ল্লেওলিন

1

আপনি এক ফর্ম উদাহরণে একাধিক জমা বোতাম জন্য গঠন

 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="Add Address" title="" formaction="/addAddress"> 
 <input type="submit" name="" class="btn action_bg btn-sm loadGif" value="update Address" title="" formaction="/updateAddress"> 

0

সহজ আপনি বিভিন্ন জমা বোতাম ক্লিক করে ফর্ম ক্রিয়া পরিবর্তন করতে পারেন।

এটি নথিতে চেষ্টা করুন e রেডি

$(".acceptOffer").click(function () {
       $("form").attr("action", "/Managers/SubdomainTransactions");
});

$(".declineOffer").click(function () {
       $("form").attr("action", "/Sales/SubdomainTransactions");
});

0

আপনি একটি href অ্যাট্রিবিউট ব্যবহার করতে পারেন এবং প্রতিটি বোতামের জন্য সংযুক্ত মান সহ একটি গেট পাঠাতে পারেন। তবে ফর্মটির প্রয়োজন হবে না

href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"

এটি POSTরুটের অধীনে নিয়ন্ত্রকদের পক্ষে কাজ করবে না ।
জাভি মন্টেরো

অতএব, "একটি পাঠান"
জোনাথন লালিবার্তে

3
আমি দ্বিমত পোষণের জন্য দুঃখিত, তবে GETসবসময় উপযুক্ত নয়। যদি আপনি "আপনার মডেলের অবস্থা পরিবর্তন করেন" তবে আপনার কখনই একটি ব্যবহার করা উচিত নয়GET , কারণ ব্রাউজারটি সতেজ হয়ে একই অনুরোধের চেয়ে দুইবার স্বচ্ছভাবে প্রেরণ করতে পারে। ব্যবহার করুন GETশুধুমাত্র "দেখুন" কিছু প্রয়োজন এবং POSTরাষ্ট্র পরিবর্তনগুলি (জুড়ুন, সরান, সম্পাদনা, ইত্যাদি) এর অনুরোধ পাঠাতে। তারপরে আপনার POSTনিয়ামক পদক্ষেপে রাজ্যটিকে (ডাটাবেস, সিজন ...) পরিবর্তন করুন এবং একটি পুনর্নির্দেশ-প্রতিক্রিয়া নিক্ষেপ করুন যা তখন GETনতুন পরিবর্তিত রাষ্ট্র state এরকম GETমডেল-রাষ্ট্রীয় নড়চড় জন্য খুব ময়লা হয় এবং কোন ভাল সংকেতপদ্ধতিরচয়িতা তাই এড়িয়ে চলা উচিত। এটা বলার জন্য দুঃখিত। ক্লিন কোড নিয়ম।
জাভি মন্টেরো

সত্য। তবে নোংরা খেলা কখনও কখনও পরিষ্কার হতে পারে। এটি নির্ভর করে আপনি ঠিক কী করছেন depends ব্যক্তিগতভাবে এটি কোনও মুছে ফেলার অনুরোধ মুছে ফেলা এবং সম্পাদনা করতে পারে না, তবে এটি কার্যকর করার বিভিন্ন উপায় রয়েছে .. যেমন এটি ইতিমধ্যে মুছে ফেলা হয়েছে কিনা তা যাচাই করা, বা ব্যবহারকারীর পক্ষে এটি করার অনুমতি রয়েছে কিনা তা
খতিয়ে দেখা

-1

আপনি এই মত বোতাম উপস্থাপন করতে পারেন:

<input type="submit" name="typeBtn" value="BUY">
<input type="submit" name="typeBtn" value="SELL">

এবং তারপরে কোডটিতে আপনি ব্যবহার করে মানটি পেতে পারেন:

if request.method == 'POST':
    #valUnits = request.POST.get('unitsInput','')
    #valPrice = request.POST.get('priceInput','')
    valType = request.POST.get('typeBtn','')

(মানচিত্রের জন্য আমি যে ফর্মটি রেখেছিলাম সেগুলি থেকে আমি ভ্যালুউনেটস এবং ভালপ্রাইসগুলি অন্য কিছু মান বের করি)


-1

যেহেতু আপনি কোন সার্ভার-সাইড স্ক্রিপ্টিং পদ্ধতিটি ব্যবহার করছেন তা নির্দিষ্ট করে নেই, তাই আমি আপনাকে একটি উদাহরণ দেব যা পিএইচপি-র জন্য কাজ করে

<?php
   if(isset($_POST["loginForm"]))
   {
    print_r ($_POST); // FOR Showing POST DATA
   }
   elseif(isset($_POST["registrationForm"]))
   {
    print_r ($_POST);
   }
   elseif(isset($_POST["saveForm"]))
   {
    print_r ($_POST);
   }
   else{

   }
?>
<html>
<head>
</head>
<body>
  
  <fieldset>
    <legend>FORM-1 with 2 buttons</legend>
      <form method="post" >
      <input type="text" name="loginname" value ="ABC" >

     <!--Always use type="password" for password --> 
     <input type="text" name="loginpassword" value ="abc123" >
     
     <input type="submit" name="loginForm" value="Login"><!--SUBMIT Button 1 -->
     <input type="submit" name="saveForm" value="Save">  <!--SUBMIT Button 2 -->
   </form>
  </fieldset>



  <fieldset>
    <legend>FORM-2 with 1 button</legend>
     <form method="post" >
      <input type="text" name="registrationname" value ="XYZ" >
      
     <!--Always use type="password" for password -->
     <input type="text" name="registrationpassword" value ="xyz123" >
     
     <input type="submit" name="registrationForm" value="Register"> <!--SUBMIT Button 3 -->
   </form>
  </fieldset>
  

</body>
</html>

ফরম

লগইন -> লগইনফোর্মে ক্লিক করুন

সংরক্ষণ -> সেভফর্ম ক্লিক করুন

রেজিস্টার -> রেজিস্ট্রেশনফর্ম ক্লিক করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.