পিএইচপি পিওএসটির মাধ্যমে একই নামের একাধিক ইনপুট


119

একই নামের একাধিক ইনপুটগুলি পোস্ট করতে এবং তারপরে পিএইচপি থেকে অ্যাক্সেস করা সম্ভব? ধারণাটি হ'ল: আমার একটি ফর্ম রয়েছে যা অন্যান্য তথ্যের সাথে অনির্দিষ্ট দৈহিক ঠিকানার প্রবেশের অনুমতি দেয়। আমি যদি কেবল সেই ক্ষেত্রগুলির প্রত্যেককে একাধিক এন্ট্রি জুড়ে একই নাম দিয়েছি এবং পোস্টের মাধ্যমে সেই ডেটা জমা দিই, পিএইচপি কি এটি অ্যাক্সেস করতে সক্ষম হবে?

বলুন, উদাহরণস্বরূপ, "xyz" নামে একটি পৃষ্ঠায় আমার পাঁচটি ইনপুট রয়েছে এবং আমি পিএইচপি ব্যবহার করে সেগুলি অ্যাক্সেস করতে চাই। আমি কি কিছু করতে পারি:

    $_POST['xyz'][0]

যদি তা হয়, তবে এটি আমার জীবনকে দশগুণ সহজ করে তুলবে, কারণ আমি কোনও ফর্মের মাধ্যমে একটি অনির্দিষ্ট পরিমাণের তথ্য প্রেরণ করতে এবং সার্ভারের দ্বারা কেবল "xyz" নামের আইটেমের অ্যারের মাধ্যমে লুপিংয়ের মাধ্যমে প্রক্রিয়াটি করতে পারি।

উত্তর:


216

আপনার ইনপুটগুলির নাম পরিবর্তন করুন:

<input name="xyz[]" value="Lorem" />
<input name="xyz[]" value="ipsum"  />
<input name="xyz[]" value="dolor" />
<input name="xyz[]" value="sit" />
<input name="xyz[]" value="amet" />

তারপর:

$_POST['xyz'][0] == 'Lorem'
$_POST['xyz'][4] == 'amet'

যদি তা হয়, তবে এটি আমার জীবনকে দশগুণ সহজ করে তুলবে, কারণ আমি কোনও ফর্মের মাধ্যমে একটি অনির্দিষ্ট পরিমাণের তথ্য প্রেরণ করতে এবং সার্ভারের দ্বারা কেবল "xyz" নামের আইটেমের অ্যারের মাধ্যমে লুপিংয়ের মাধ্যমে প্রক্রিয়াটি করতে পারি।

মনে রাখবেন এটি সম্ভবত ভুল সমাধান। স্পষ্টতই, এটি আপনি যে ডেটা পাঠাচ্ছেন তার উপর নির্ভর করে।


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

10
@ অ্যাডাম: আপনার প্রশ্নটি পুনরায় পড়ার পরে, এটি একটি নিখুঁতভাবে অ্যাক্সিটযোগ্য পদ্ধতি। আপনি এক পর্যায়ে যেতে আরও, এবং চাইতে পারেন address[0][street] address[0][city] address[0][zip], address[1][street] address[1][city] address[1][zip]... আপনার সাথে এসব পড়তে পারেন $_POST['address'][0]['city'], উদাহরণস্বরূপ
এরিক

কীভাবে এটি এইচটিএমএল এর ভিতরে নামকরণ করা হবে? এটি সম্ভবত সম্ভাবনাটি অনেকটা কমিয়ে আনবে। আমি যে পদ্ধতিটি গ্রহণ করতে যাচ্ছি তার বেশ কয়েকটি ক্ষেত্র রয়েছে যার নাম রয়েছে: l1 [], l2 [], শহর [], রাষ্ট্র [], জিপ [], জিপ 4 []। তারপরে, প্রথম ঠিকানার জন্য আমি প্রতিটি ক্ষেত্রে সহজভাবে $ i == 0 ব্যবহার করি। সুতরাং আমি যদি আপনার পদ্ধতির বিষয়টি সঠিকভাবে বুঝতে পারি তবে আমি সম্ভবত আমার উপাদানগুলির নাম রাখব: একটি নগরক্ষেত্রের জন্য নাম = "ঠিকানা [] [শহর]"। এটা কি ঠিক?
আদম

@ অ্যাডাম: সম্ভবত আমি মনে করি আপনার প্রথমদিকে সূচক স্থাপন করার প্রয়োজন হতে পারে []যেমন [0]। এটি এইচটিএমএল উত্পাদন করা আরও শক্ত করে তোলে, তবে পিএইচপি-সাইড পড়ার জন্য ডেটাগুলি আরও কঠিন নয়
এরিক

আমার মনে প্রশ্ন এখানে আসছে: ক্ষেত্রটি অ্যারের ভিতরে এলোমেলোভাবে যাবে কিনা? অথবা সেগুলি যাতে তারা আকারে স্থাপন করা হবে (কিছু ক্ষেত্র খালি রেখে দেওয়া থাকলেও)?
রাজীব

38

আপনার এইচটিএমএলে আপনি নামের জন্য একটি অ্যারে পাস করতে পারেন

<input type="text" name="address[]" /> 

এইভাবে পিএইচপি ঠিকানাগুলির একটি অ্যারে পাবেন।


3
ভাল এবং সঠিক উত্তর, যে কারণে আমি এটিকে ভোট দিয়েছি। আপনি যদিও এটি সম্পর্কে খুব বেশি ব্যাখ্যা করেননি, এ কারণেই আমি আমার প্রশ্নের উত্তর হিসাবে এটি নির্বাচন করি নি। এটি আমার একটি টনকে সহায়তা করে, কারণ আমি এটির জন্য কিছুক্ষণ চেষ্টা করার চেষ্টা করেছি (যেমন আপনি আমার আগের প্রশ্নগুলির মধ্যে লক্ষ্য করতে পারেন)। আমার পূর্ববর্তী পদ্ধতিটি ছিল * আলাদা করা মানগুলির সাথে লুকিয়ে থাকা ক্ষেত্রগুলিতে সমস্ত ইনপুট যুক্ত করা এবং ইনপুট ক্ষেত্রগুলি পুনরায় সেট করা, তবে এই পদ্ধতির দশগুণ ভাল কারণ আমি যদি যুক্ত করা ঠিকানাগুলি সন্ধান করা হয় তবে এটি মুছে ফেলার অনুমতি দিতে সক্ষম হবো ত্রুটিপূর্ণ.
আদম 16

কেবল মনে রাখতে সাবধান হন যে একটি শূন্য অ্যারেতে '0' সূচীতে কোনও কিছুই পোস্ট করা হয়নি এমন একটি গণনা থাকবে। ! // কিছু করুন}
ফাই হোরান ২ '

10

এরিক উত্তর সঠিক, তবে সমস্যাটি ক্ষেত্রগুলি গোষ্ঠীভুক্ত নয়। কল্পনা করুন যে আপনার একাধিক রাস্তাগুলি এবং শহরগুলি একত্রে রয়েছে:

<h1>First Address</h1>
<input name="street[]" value="Hauptstr" />
<input name="city[]" value="Berlin"  />

<h2>Second Address</h2>
<input name="street[]" value="Wallstreet" />
<input name="city[]" value="New York" />

ফলাফল হবে

$POST = [ 'street' => [ 'Hauptstr', 'Wallstreet'], 
          'city' => [ 'Berlin' , 'New York'] ];

ঠিকানায় তাদের গোষ্ঠীভুক্ত করার জন্য, আমি বরং এরিক মন্তব্য বিভাগে উল্লিখিত যা ব্যবহার করার পরামর্শ দিচ্ছি:

<h1>First Address</h1>
<input name="address[1][street]" value="Hauptstr" />
<input name="address[1][city]" value="Berlin"  />

<h2>Second Address</h2>
<input name="address[2][street]" value="Wallstreet" />
<input name="address[2][city]" value="New York" />

ফলাফল হবে

$POST = [ 'address' => [ 
                 1 => ['street' => 'Hauptstr', 'city' => 'Berlin'],
                 2 => ['street' => 'Wallstreet', 'city' => 'New York'],
              ]
        ]

0

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

উত্তরগুলি ধরে নেওয়া হয় যে পিএইচপি-র জন্য ফিরে আসা মূল মানটি আপনি আপত্তি করেন না তবে আপনি সেট করতে পারেন name=[yourval](স্ট্রিং বা ইনট) যা আপনাকে একটি বিদ্যমান রেকর্ডে উল্লেখ করার অনুমতি দেয়।


এটি নিজের বিশ্লেষণ করার জন্য এটি আজেবাজে কথা। এটির প্রয়োজন হবে এমন কোনও দৃশ্য নেই।
জাভিদ

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