lostyazilim
tr.link

Php Soru-Cevap DB Kayıt İşlemi(?)

10 Mesajlar 1.396 Okunma
acebozum
tr.link

fatihsalman fatihsalman WM Aracı Kullanıcı
  • Üyelik 19.07.2019
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar
  • Konum Afyon
  • Ad Soyad F** S**
  • Mesajlar 16
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)
merhaba arkadaşlar php'de bir soru cevap sistemi yapmaya çalışıyorum. Tek cevaplı soruları toplu olarak tek seferde kayıt etme işlemini yaptım ancak Çoğul Cevapları soruları bir türlü halledemedim. Formu epey karıştırdım son halini ve array çıktısını atacağım yapmak istediğim her cevabı soru id'sini alarak veri tabanında yeni bir satıra kaydetmesini sağlamak veya veri tabanına virgüllerle şıkların adını kayıt etsemde olur yeterki şu işi halledeyim artık.

Formda checkbox kullandım çoklu işaret yapabilmek için.






1. Soru Adı Burada Yazacak




























2. Soru Adı Burada Yazacak































buda array çıktısı, baya kurcaladım iyice karıştı :(

Array
(
[soru_id_1] => Array
(
[0] => 1
)

[coklu_cevap_1] => Array
(
[0] => A
[1] => B
)

[soru_id_2] => Array
(
[0] => 2
)

[coklu_cevap_2] => Array
(
[0] => C
[1] => D
)

[submit] => submit
)





Düzelme:


Özet geçecek Olursak;

Sayısı belli olmayan sorularım var Örnek kodlarda iki adet sorum var mesela.

Bu soruların her birinin id'si var ve bu soruların birden fazla cevabı olabilir. Örneğin

1. Soru(id=1)
Cevaplar: A ve B şıkları olsun

2. Soru(id=2)
Cevaplar : B , C ve D şıkları olsun.

Bunlar işaretlenip post edildiğinde veri tabanına

Sutünlar

soru_id - cevap

Satır 1 => 1- A
Satır 2 => 1- B
Satır 3 => 2- B
Satır 4 => 2- C
Satır 5 => 2- D

şeklinde kayıt yapmak istiyorum ancak bir türlü soru_id ve cevapları doğru olarak kayıt edemedim. Formdanda düzgün gönderemiyorum muhtemelen.

illa yukardaki şekilde olacak diye bir şey yok şöylede olabilir.


Sütunlar
soru_id-cevap

Satır 1 => 1- A,B
Satır 2 => 2- B,C,D

böylede yapsam olur ama bir türlü hem soru_id'yi hem şıkları kayıt edemedim.
 

 

wmaraci
reklam

Adalente Adalente IT MANAGER Kullanıcı
  • Üyelik 27.01.2015
  • Yaş/Cinsiyet 43 / E
  • Meslek IT Maneger
  • Konum İstanbul Avrupa
  • Ad Soyad A** H**
  • Mesajlar 388
  • Beğeniler 59 / 26
  • Ticaret 0, (%0)
anlamadım hocam tam ne istediğini.
 

 

E-evcil.com

fatihsalman fatihsalman WM Aracı Kullanıcı
  • Üyelik 19.07.2019
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar
  • Konum Afyon
  • Ad Soyad F** S**
  • Mesajlar 16
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)

Adalente adlı üyeden alıntı

anlamadım hocam tam ne istediğini.


Hocam kusura bakmayın gece gece o yorgunlukla biraz cümleler düşük olmuş anlaşılır olmamış.

Özet geçecek Olursak;

Sayısı belli olmayan sorularım var Örnek kodlarda iki adet sorum var mesela.

Bu soruların her birinin id'si var ve bu soruların birden fazla cevabı olabilir. Örneğin

1. Soru(id=1)
Cevaplar: A ve B şıkları olsun

2. Soru(id=2)
Cevaplar : B , C ve D şıkları olsun.

Bunlar işaretlenip post edildiğinde veri tabanına

Sutünlar

soru_id - cevap

Satır 1 => 1- A
Satır 2 => 1- B
Satır 3 => 2- B
Satır 4 => 2- C
Satır 5 => 2- D

şeklinde kayıt yapmak istiyorum ancak bir türlü soru_id ve cevapları doğru olarak kayıt edemedim. Formdanda düzgün gönderemiyorum muhtemelen.

illa yukardaki şekilde olacak diye bir şey yok şöylede olabilir.


Sütunlar
soru_id-cevap

Satır 1 => 1- A,B
Satır 2 => 2- B,C,D

böylede yapsam olur ama bir türlü hem soru_id'yi hem şıkları kayıt edemedim.
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)


try {
$con = new PDO("mysql:host=localhost; dbname=db_adi","root","");
$con-> exec("SET NAMES utf8mb4; SET CHARSET utf8mb4");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Bağlanamadı'. $e->getMessage();
}

if ($_POST) {
echo '
';
// print_r($_POST);
$count = count($_POST);
$arr = [];
for ($i = 1; $i <= $count; $i++) {
$arr['cevap_'.$i] = implode(',', $_POST['cevap_'.$i]);

$ekle = $con->prepare("INSERT INTO tablo_adi (soru_id,cevap) VALUES (?,?)");
$ekle->execute([
$i,
implode(',', $_POST['cevap_'.$i])
]);
}
print_r($arr);
echo '
';
}

?>




content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

Document






1. Soru Adı Burada Yazacak



























2. Soru Adı Burada Yazacak





























fatihsalman

kişi bu mesajı beğendi.


wmaraci
wmaraci

fatihsalman fatihsalman WM Aracı Kullanıcı
  • Üyelik 19.07.2019
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar
  • Konum Afyon
  • Ad Soyad F** S**
  • Mesajlar 16
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)
çok teşekkür ederim hocam günlerdir uğraşıyordum. Bu tarz for kullanımlarında ve çoklu kayıtlarda kendimi daha fazla geliştirmek için nelere yoğunlaşmalıyım kendimi nasıl geliştirebilirim.



Abdullahx adlı üyeden alıntı



try {
$con = new PDO("mysql:host=localhost; dbname=db_adi","root","");
$con-> exec("SET NAMES utf8mb4; SET CHARSET utf8mb4");
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Bağlanamadı'. $e->getMessage();
}

if ($_POST) {
echo '
';
// print_r($_POST);
$count = count($_POST);
$arr = [];
for ($i = 1; $i <= $count; $i++) {
$arr['cevap_'.$i] = implode(',', $_POST['cevap_'.$i]);

$ekle = $con->prepare("INSERT INTO tablo_adi (soru_id,cevap) VALUES (?,?)");
$ekle->execute([
$i,
implode(',', $_POST['cevap_'.$i])
]);
}
print_r($arr);
echo '
';
}

?>




content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

Document






1. Soru Adı Burada Yazacak



























2. Soru Adı Burada Yazacak





























 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Rica ederim.
Öncelikle nerelerde for nerelerde foreach kullanmanın gerekli olduğunu kafanızda oluşturmanız gerekir. Daha doğrusu hangisi beni daha kısa yoldan sonuca ulaştırabilir diye düşünmek daha mantıklı sanırım. Sayısı belli olmayan veya sonradan artma ihtimali olan ve aynı aynı zamanda içeriğindeki veriler bir düzene göre olan bilgilerde for kullanmak mantıklı. Mesela burada sorular bir düzene göre, 1,2,3.. diye gidiyor. For bunun için ideal. Tabii ekstrem durumlar olursa yani 1,3,5.. gibi giden soru numaraları orda da ona göre özel kodlar yazmak gerekebilir. Her ihtimali göz önüne almak gerekir hata oluşmaması için. Mesela bu kodda 2 den fazla soru olsa ve kişi 2. soruyu cevaplamadan gönderse hata oluşur. Kendinizi geliştirmenin en iyi yolu hatalar almak ve bunları çözüme kavuşturmaktır bence :)
Nizamulmulk

kişi bu mesajı beğendi.


Nizamulmulk Nizamulmulk WM Aracı Kullanıcı
  • Üyelik 17.02.2018
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılım Mühendisi
  • Konum İzmir
  • Ad Soyad B** E**
  • Mesajlar 56
  • Beğeniler 6 / 22
  • Ticaret 9, (%89)

fatihsalman adlı üyeden alıntı

çok teşekkür ederim hocam günlerdir uğraşıyordum. Bu tarz for kullanımlarında ve çoklu kayıtlarda kendimi daha fazla geliştirmek için nelere yoğunlaşmalıyım kendimi nasıl geliştirebilirim.


Arkadaşımızın dediğine ek olarak, illa çoklu kayıt yaptırmaya gerekte yok. Sonuçta her kayıt veritabanına bir yük bindirir. Özellikle de sql sorgu biçiminiz kötüyse, her seferinde döndürülecek fetch işlemi hem ramlere hem de siteye yük getirecektir.

Yine de çoklu kayıt yaptırmak isteyenlere çok bir lafım yok. Ancak wordpress'in bu konudaki sistemini incelemenizi öneririm. Tek bir satıra yüzlerce veri ekleyerek bunu for döngüsü ile döndürebilirsiniz.

Bunu yapmakta istemiyorsanız, karışık derseniz form verileri üzerinden for döngüsünü kullanabilirsiniz.
 

 

fatihsalman fatihsalman WM Aracı Kullanıcı
  • Üyelik 19.07.2019
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar
  • Konum Afyon
  • Ad Soyad F** S**
  • Mesajlar 16
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)

Abdullahx adlı üyeden alıntı

Rica ederim.
Öncelikle nerelerde for nerelerde foreach kullanmanın gerekli olduğunu kafanızda oluşturmanız gerekir. Daha doğrusu hangisi beni daha kısa yoldan sonuca ulaştırabilir diye düşünmek daha mantıklı sanırım. Sayısı belli olmayan veya sonradan artma ihtimali olan ve aynı aynı zamanda içeriğindeki veriler bir düzene göre olan bilgilerde for kullanmak mantıklı. Mesela burada sorular bir düzene göre, 1,2,3.. diye gidiyor. For bunun için ideal. Tabii ekstrem durumlar olursa yani 1,3,5.. gibi giden soru numaraları orda da ona göre özel kodlar yazmak gerekebilir. Her ihtimali göz önüne almak gerekir hata oluşmaması için. Mesela bu kodda 2 den fazla soru olsa ve kişi 2. soruyu cevaplamadan gönderse hata oluşur. Kendinizi geliştirmenin en iyi yolu hatalar almak ve bunları çözüme kavuşturmaktır bence :)


haklısınız hocam. sonda dediğiniz hatayıda yaşıyorum şuan ben gizli inputlar hainde kullanıcı id felande gönderiyorum sorgunun başında da gelen post'ları sayıyoruz bu kez de boş kayıtlar oluyor. soru_id göndersem her soru ile birlikte sadece bu kezde bir sorunun cevaplarını alabiliyorum. Bunu nasıl aşabilirim.
 

 

fatihsalman fatihsalman WM Aracı Kullanıcı
  • Üyelik 19.07.2019
  • Yaş/Cinsiyet 34 / E
  • Meslek Bilgisayar
  • Konum Afyon
  • Ad Soyad F** S**
  • Mesajlar 16
  • Beğeniler 5 / 0
  • Ticaret 0, (%0)

Nizamülmülk adlı üyeden alıntı

Arkadaşımızın dediğine ek olarak, illa çoklu kayıt yaptırmaya gerekte yok. Sonuçta her kayıt veritabanına bir yük bindirir. Özellikle de sql sorgu biçiminiz kötüyse, her seferinde döndürülecek fetch işlemi hem ramlere hem de siteye yük getirecektir.

Yine de çoklu kayıt yaptırmak isteyenlere çok bir lafım yok. Ancak wordpress'in bu konudaki sistemini incelemenizi öneririm. Tek bir satıra yüzlerce veri ekleyerek bunu for döngüsü ile döndürebilirsiniz.

Bunu yapmakta istemiyorsanız, karışık derseniz form verileri üzerinden for döngüsünü kullanabilirsiniz.


json formatı ile mi saklamamı önerirsiniz. illa çoklu kayıt yapmama gerekde yok ancak hiç bir türlü halledemedim.
 

 

Nizamulmulk Nizamulmulk WM Aracı Kullanıcı
  • Üyelik 17.02.2018
  • Yaş/Cinsiyet 37 / E
  • Meslek Yazılım Mühendisi
  • Konum İzmir
  • Ad Soyad B** E**
  • Mesajlar 56
  • Beğeniler 6 / 22
  • Ticaret 9, (%89)

fatihsalman adlı üyeden alıntı

json formatı ile mi saklamamı önerirsiniz. illa çoklu kayıt yapmama gerekde yok ancak hiç bir türlü halledemedim.


json formatı da olur, sql de olur, mongodb de olur. Ancak bunlarda çoklu kayıt saklayabilmeniz için mantık ve database programlamaya hakim olmanız gerekmektedir. Bunlara hakim iseniz, emin olun bir txt dosyasına bile verileri kayıt edip saklayabilirsiniz.

Mesele burada, algoritma kurmayı ve mantık kurmayı becerebilmenizdir. Eğer bunu yapabilirseniz zaten gerisi çorap söküğü gibi gelecektir.
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al