lostyazilim
tr.link

Aynı İnput Name'den Çekilen Verileri Veritabanına Yazdırma

6 Mesajlar 1.362 Okunma
lstbozum
tr.link

PrestijSolution PrestijSolution SEO and DEVELOPER Kullanıcı
  • Üyelik 03.09.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek Seo ve Web Tasarım Uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad M** G**
  • Mesajlar 606
  • Beğeniler 30 / 139
  • Ticaret 29, (%93)
Merhaba Arkadaşlar.

aynı input name lere sahip üç farklı textbox ım var. ben bu 3 textbox için verileri çekiyorum ama bu verileri veritabanına yazdırma işlemini bir türlü yapamadım. iç içe döngü yaptıgımda yüzlerce aynı şeyi yazdırıyor veritabanına acil olarak bir yardımcı olabilir misiniz. kodlarım aşağıdadır.

if($_POST) {
$aToUpdate = [];

for($i=0; $i < count($_POST['ilktarih']); $i++) {

$tumilktarihler = $aToUpdate[$i] = $_POST['ilktarih'][$i];


}

$aToUpdate2 = [];

for($i=0; $i < count($_POST['sontarih']); $i++) {

$tumsontarihler = $aToUpdate2[$i] = $_POST['sontarih'][$i];



}

$aToUpdate3 = [];

for($i=0; $i < count($_POST['tarihlifiyati']); $i++) {

$tumsonfiyatlar = $aToUpdate3[$i] = $_POST['tarihlifiyati'][$i];

/*$kaydet3 = mysql_query("insert into tarihler (tarihfiyati) values ('$tumsonfiyatlar')");*/



}

}
 

 

www.mucahitguner.com
wmaraci
reklam

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Birbirini tekrar eden şeyler, çoklu seçim gerektiren durumlarda (listbox, option vs) dizi kavramı bizi sonuca daha net bir şekilde götürür. Zaten javascript'e baktığımızda dizi kavramın içinde barındırdığı için HTML'de de buna benzer bir yapıyı arayabiliriz.

Dizisiz post edilen içerik (aynı name değerine sahip olsada) aslında bir içerik gibi görülür. Bu durum PHP tarafında böyle yorumlanıyor, yani;


$_SESSION["user"] = ben;
ve hemen sonrasında
$_SESSION["user"] = sen;
dersem çıktı sen olacaktır çünkü en son aynı değişkene o değer atandı.


Muhtemelen bu şekilde bir post örneğin var:


echo '
';
print_r($_POST);
// clear previous post
unset($_POST);
?>




Tekrarlı Form - Varsayılan


method="post">
ilktarih:

ilktarih:

ilktarih:


sontarih:

sontarih:

sontarih:


tarihlifiyati:

tarihlifiyati:

tarihlifiyati:








Çıktısı şu olur:


Array
(
[ilktarih] => 1.2
[sontarih] => 2.2
[tarihlifiyati] => 3.2
)



Ama name değerinin sonuna dizi işareti getirirsek PHP bunları dizi elemanı gibi görecektir, yani döngülere bu işlem için gerek yok kendisi yapıyor.


echo '
';
print_r($_POST);
// clear previous post
unset($_POST);
?>




Tekrarlı Form - Varsayılan


method="post">
ilktarih:

ilktarih:

ilktarih:


sontarih:

sontarih:

sontarih:


tarihlifiyati:

tarihlifiyati:

tarihlifiyati:








Çıktısı şöyle olacak:


Array
(
[ilktarih] => Array
(
[0] => 1.0
[1] => 1.1
[2] => 1.2
)

[sontarih] => Array
(
[0] => 2.0
[1] => 2.1
[2] => 2.2
)

[tarihlifiyati] => Array
(
[0] => 3.0
[1] => 3.1
[2] => 3.2
)

)


Gerisi senin işin, kolay gelsin. Ha bu arada hala mysql fonksiyonları gözüme çarpıyor, uyarayım güvenli değil, ufak tefek değişikliklerle PDO'ya geçmelisin.
 

 

no time for caution

PrestijSolution PrestijSolution SEO and DEVELOPER Kullanıcı
  • Üyelik 03.09.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek Seo ve Web Tasarım Uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad M** G**
  • Mesajlar 606
  • Beğeniler 30 / 139
  • Ticaret 29, (%93)
hocam json ile halletmeye calıstım aldım verileri ama yine verıtabanına yazdıramadım kodlarım aşağıda nerde yanlıslık var ?

$ilktarihcevir = json_encode($ilktarih);

$ilktarihcevirdi = json_decode($ilktarihcevir,true);

$sontarihcevir = json_encode($sontarih);

$sontarihcevirdi = json_decode($sontarihcevir,true);

$tarihlifiyaticevir = json_encode($tarihlifiyati);

$tarihlifiyaticevirdi = json_decode($tarihlifiyaticevir,true);


foreach($ilktarihcevirdi as $ilktarihim)
{

foreach ($sontarihcevirdi as $sontarihim) {

foreach ($tarihlifiyaticevirdi as $sontarihlifiyatim) {

$ekle=mysql_query("insert into tarihler (ilktarih,sontarih,tarihfiyati) values ('$ilktarihim','$sontarihim','$sontarihlifiyatim')");

if ($ekle) {
echo "eklendi";
}else { echo "eklenemedi."; }

}


}

}
 

 

www.mucahitguner.com

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)
Json'a falan gerek yok yahu. Bir önceki arkadaş detaylıca anlatmış zaten mantık hatasının nerde olduğunu.

Input'lara birebir aynı ismi verirsen, hiyerarşik olarak en son, en alttaki input değeri gönderilir. Örneği 3 tane "adsoyad" inputun varsa, sadece 3. sıradakinin değeri gönderilir.

Eğer sen name="adsoyad" değil de name="adsoyad[]" yaparsan o inputların değerlerinin hepsi bir array değeri olarak gönderilir.

Mesela formun methodu POST ise $_POST['adsoyad'][0] = 1. sıradaki inputun içeriği, $_POST['adsoyad'][1] = 2. sıradaki etc.

Tek yapman gereken 3 farklı kişi kaydetmek olacağı için



// aynı şekilde 3 tane de name="yas[]" inputu olsun
// ilk sıradaki adsoyad inputuyla, ilk sıradaki yas inputunun değerleri birbiriyle eşleşsin
// örneğin adsoyad inputları sırasıyla: Ali Atakan, Mahmut Çelebi, Faruk Öztürk
// .......... yas inputları: 13, 21, 38
// Bu durumda $_POST['adsoyad'][0] = Ali Atakan
// Bu durumda $_POST['yas'][0] = 13
// Ali Atakan ve 13 değerleri veritabanında aynı satıra kaydedilecek
// Güvenlik, boş satır vs. kontrollerini atlıyorum
foreach($_POST['adsoyad'] as $index => $icerik)
{
// veritabanına kayıt
// $db->save('Uyeler', ['ad' => $adsoyad, 'yas' => $_POST['yas'][$index]])
}
 

 

Murat Alabacak <http://muratalabacak.net>
wmaraci
wmaraci

alabacaknet alabacaknet Developer Kullanıcı
  • Üyelik 14.09.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım geliştirme
  • Konum Ankara
  • Ad Soyad M** A**
  • Mesajlar 217
  • Beğeniler 55 / 48
  • Ticaret 0, (%0)
Sen döngülerini öyle bir açmışsın ki, her "adsoyad[]" (3 tane değer) input değeri için 1 tur döngü açıyosun, üst döngünün altında da "yas[]" (3 değer) için 1 tur döngü açıyosun iç-içe, onun altında da başka bir döngü açıyosun (yine 3 olsun) toplamda veritabanına 3 tane satır kaydetmen gerekirken, 3*3*3 = 27 satır kaydetiyorsun.
 

 

Murat Alabacak <http://muratalabacak.net>

PrestijSolution PrestijSolution SEO and DEVELOPER Kullanıcı
  • Üyelik 03.09.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek Seo ve Web Tasarım Uzmanı
  • Konum İstanbul Anadolu
  • Ad Soyad M** G**
  • Mesajlar 606
  • Beğeniler 30 / 139
  • Ticaret 29, (%93)
Yardımcı oldugunuz için hepinize teşekkürler, aşağıdaki şekilde hallettım, ihtiyacı olan olursa kodlara bakabilir.

$ilktarihcevir = json_encode($ilktarih);

$ilktarihcevirdi = json_decode($ilktarihcevir,true);

$sontarihcevir = json_encode($sontarih);

$sontarihcevirdi = json_decode($sontarihcevir,true);

$tarihlifiyaticevir = json_encode($tarihlifiyati);

$tarihlifiyaticevirdi = json_decode($tarihlifiyaticevir,true);

$musaitlikcevir = json_encode($musaitlik);

$musaitlikcevirdi = json_decode($musaitlikcevir,true);



foreach($ilktarihcevirdi as $ilktarihim)
{

foreach ($sontarihcevirdi as $sontarihim) {

foreach ($tarihlifiyaticevirdi as $sontarihlifiyatim) {

foreach ($musaitlikcevirdi as $musaitmisin) {

$sorgu = mysql_query("SELECT * FROM tarihler WHERE ilktarih='$ilktarihim' or sontarih='$sontarihim' or tarihfiyati='$sontarihlifiyatim'");

if(mysql_num_rows($sorgu) > 0){

}else {

$ekle=mysql_query("insert into tarihler (ilktarih,sontarih,tarihfiyati,aracadi,musaitlik) values ('$ilktarihim','$sontarihim','$sontarihlifiyatim','$aracadi','$musaitmisin')");


}


}
}
}}
 

 

www.mucahitguner.com
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al