راکت
حل شده

ارسال اطلاعات فرم با ورودی های با نام یکسان

8 پاسخ

سلام فرض کنید من یک همچین فرمی دارم :

<form action="" method="post">
  <input type="text" name="name">
  <input type="text" name="age">
</form>

فک کنید در دیتابیسم اینطوری ساختاری دارم :

User Table :
id - integer
name - string
age - integer

حالا یک دکمه دارم که با زدنش اون دو اینپوت توی فرم به صفحه اضافه می کنه
یعنی اگه اول صفحه لود میشه دو اینپوت دارم بعد زدنش میشه 4 اینپوت یعنی اینطوری میشه :

<form action="" method="post">
  <input type="text" name="name">
  <input type="text" name="age">
<!--  بعد زدن دکمه دو خط بعدی اضافه میشه به صفحه -->
  <input type="text" name="name">
  <input type="text" name="age">
</form>

و الی آخر
حالا میخوام وقتی دکمه ارسال فرم زده شد چطوری مثلا اطلاعات اینپوت ها با نام یکسان که معلوم نیست چند بار باشه رو بگیرم
بعد نام اولی با سن اولی رو در یک ردیف دیتابیس ثبت کنم
نام دومی رو با سن دومی توی ردیف بعدی
نام سومی با سن سومی و ...

این کار چطوری باید انجام بشه همین گرفتم تمام نام ها و سن ها از اینپوت ها وقتی که اینپوت های هم نام وجود داره

با تشکر

ثبت پرسش جدید

پاسخ‌ها

8
احسان قربانی
احسان قربانی
@TimeRunner2359

تخصص: PHP ، در حال یادگیری لاراول ، MidLevel درفرانت اند

بهترین پاسخ

@mojtaba.kh
سلام و وقت بخیر
اگر منظورتون منم که محسن بستان نیستم 😅
بهتره با حلقه for بزنید :

for($i=0;$i< count($names);$i++)
{
$names[$i];
$ages[$i];
}

و کوئری رو می‌سازید
موفق و سلامت باشید
یا حق

وحید
وحید
@forughi.vahid

تخصص: Fullstack

@mojtaba.kh

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

اینجوری نام ها توی آرایه ذخیره میشن. توجه کنید که سمت سرور هم آرایه دریافت میکنید.

احسان قربانی
احسان قربانی
@TimeRunner2359

تخصص: PHP ، در حال یادگیری لاراول ، MidLevel درفرانت اند

@mojtaba.kh
سلام و وقت بخیر
اسم های input هاتون رو به این صورت تغییر بدید :

Name -->Name[] , Age-->Age[] 

یعنی تو فرم اینجوری باشه :

<input type="text" name="name[]">
  <input type="text" name="age[]">

اینطوری میتونید توی PHP اینطوری فرم رو هندل کنید :

$_POST['name'][0]=مقدار اول
$_POST['name'][1]=مقدار دوم
$_POST['name'][2]=مقدار سوم 

$_POST['age'][0]=مقدار اول
$_POST['age'][1]=مقدار دوم
$_POST['age'][2]=مقدار سوم 

و الی آخر ....
اینطوری میتونید با یه حلقه for each ,هر ریکورد رو جداگانه ثبت کنید
موفق و سلامت باشید
یا حق

شاید پاسخ شما همین‌جا باشد

مجتبی
مجتبی
@mojtaba.kh

تخصص: توسعه وب

@forughi.vahid
مرسی جناب فروغی عزیز 🌷

@mohsenbostan
اقا محسن ممنون از کمکتون
الان برام یک سوال پیش اومد من سمت سرور بیام با یه حلقه مثلا اول نام ها رو بگیرم از ارایه ثبت کنم توی دیتابیس بعد بیام باز با یه حلقه سن ها رو بگیرم باز هر رکورد رو اپدیت کنم سنش رو ثبت کنم؟؟؟؟
نمیشه یه کاری کرد یک دفعه درخواست بزنیم به دیتابیس و یک دفعه ثبت بشه؟
چیزی که به ذهنم رسید این بود که مثلا بیام وقتی اسم رو میگیرم توی حلقه مثلا یه متغیر بزارم یه شماره رو ذخیره کنه

$i = 0;

وقتی مثلا دفعه اول حلقه اجرا شد اسم اول که میگیره
بعد بیام اینطوری مثلا بعد بیام بگم

$age[$i]

اینطوری همزمان سن اون فیلد رو هم میگیرم که متناسب با اسمه
بعد ثبت می کنه اخرم یکی به متغیر i اضافه کنم درسته؟

یا راه دیگه ای داره؟

احسان قربانی
احسان قربانی
@TimeRunner2359

تخصص: PHP ، در حال یادگیری لاراول ، MidLevel درفرانت اند

@mojtaba.kh
سلام و وقت بخیر
همین چیزی که گفتید خوبه ، چرا دوباره کاری کنیم؟
وقتی ایندکس هر سن و اسم یکسان هست برای هر رکورد (ایندکس 0 برای نام و سن اول ‌و ....) دیگه هر دو رو با یک حلقه وارد میکنیم .
کوئری نوشتنش دیگه با خودتون با گوشی نمیتونم بنویسم 😅🙏
موفق و سلامت باشید
یا حق

مجتبی
مجتبی
@mojtaba.kh

تخصص: توسعه وب

@mohsenbostan

$i = 0;
        foreach ($names as $name) {
//            گرفتن مثلا اولین اسم و سن بعد میتونیم ثبتش کنیم
            $age[$i];
            $i++;
        }

همچین چیزی اوکیه؟ 😀

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@mojtaba.kh
فکر کنم اشتباه اشاره کردید 😂

مجتبی
مجتبی
@mojtaba.kh

تخصص: توسعه وب

@TimeRunner2359
ممنون از شما :)
@mohsenbostan
بله اشتباه اشاره کردم شرمنده از جفتتون

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام