مجتبی
4 سال پیش توسط مجتبی مطرح شد
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>

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

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

با تشکر


ثبت پرسش جدید
احسان قربانی
تخصص : PHP ، در حال یادگیری لاراول ،...
@TimeRunner2359 4 سال پیش آپدیت شد
0

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

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

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


وحید
تخصص : Fullstack
@forughi.vahid 4 سال پیش مطرح شد
1

@mojtaba.kh

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

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


احسان قربانی
تخصص : PHP ، در حال یادگیری لاراول ،...
@TimeRunner2359 4 سال پیش مطرح شد
0

@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 4 سال پیش مطرح شد
0

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

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

$i = 0;

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

$age[$i]

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

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


احسان قربانی
تخصص : PHP ، در حال یادگیری لاراول ،...
@TimeRunner2359 4 سال پیش آپدیت شد
0

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


مجتبی
تخصص : توسعه وب
@mojtaba.kh 4 سال پیش مطرح شد
0

@mohsenbostan

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

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


احسان قربانی
تخصص : PHP ، در حال یادگیری لاراول ،...
@TimeRunner2359 4 سال پیش آپدیت شد
0

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

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

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


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
1

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


مجتبی
تخصص : توسعه وب
@mojtaba.kh 4 سال پیش مطرح شد
0

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


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

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