dj_nuz adlı üyeden alıntı: mesajı görüntüle
Başlığı doğrumu açtım yanlışmı açtım bilemiyorum ancak günlerdir çözemediğim problemle ilgili bir kaç konu açtım foruma. Daha doğrusu denediğim her başarılı olmayan yöntem için diyebilirim.

Sorunum şu aslında, bir sınav formum var. Sorulardan bazıları çoktan seçmeli, bazıları ise klasik diye tabir ettiğimiz manuel doldurulacak.

Ben çoktan seçmeliler için combobox kullandım. bu comboboxların "value" kısmınada kayıt için lazım olacak değerleri atadım. Şöyleki : values="sinav_id,soru_id,cevap_id,cevap_deger" gibi.

Klasik olan sorularda ise textarea koydum. Bunların tamamı dizi ve cevap olduğu için isimler cevap[] şeklinde.

Sorun buradan sonra başlıyor.Formdan gelen bütün verileri kayıt etmek için yönlendirdiğim sayfada şu işlemi yaptırıyorum :

    $results = array();
    foreach ($_POST['cevap'] as $cevaplar)
    {
        $cevap_explode = explode(",", $cevaplar);
        $results[] = array(
            'value' => trim($cevap_explode[1]),
            'id' => trim($cevap_explode[0]),
            'sinav_id' => trim($cevap_explode[2]),
            'bolum_id' => trim($cevap_explode[3]),
            'soru_id' => trim($cevap_explode[4]),
            'birey_id' => trim($cevap_explode[5]),
            'kullanici_id' => trim($cevap_explode[6]),
            'test_no' => trim($cevap_explode[7]),
            'tarih' => trim($cevap_explode[8])
        );
    }
    

    foreach($results as $result)
    {
        mysql_query("insert into CRM9001(CRM9107,CRM9106,CRM9102,CRM9103,CRM9105,CRM9109,CRM9108,CRM9110,CRM9111) values ('".$result['value']."','".$result['id']."','".$result['sinav_id']."','".$result['bolum_id']."','".$result['soru_id']."','".$result['birey_id']."','".$result['kullanici_id']."','".$result['test_no']."','".$result['tarih']."') ");
    }
comboboxta virgül ile ayırdığım bana lazım olan değerleri explode edip foreach ile sorunsuz kayıt ediyorum. İş burdan sonra farklı bir hal alıyor ve içinden çıkamıyorum bir türlü.

Şimdi yukarıdaki kodla comboboxları alıyorum ancak textareaları alamıyorum. Çünkü textareaların değerleri kullanıcı tarafından manuel olarak girilecek, comboboxta olduğu gibi veritabanından çekilmeyecek. Bunun dışında diğer değerler var tabi. İyice karıştı sizin anlayacağınız. Aşağıyada formdaki kodlarımı yazıyorum.

										<select name="cevap[]" id="cevap">
											<option value="x">Lütfen Cevap Seçiniz</option>
<?include('module_includes/sessions.php')?>
<?php
while ($cevap_list = mysql_fetch_array($cevap_sorgu)) {
$birey_bilgi = mysql_query("select * from CRM3001 where CRM3102 LIKE '".$bireytc."'") or die("Hata Olustu!");
$birey_esle = mysql_fetch_array($birey_bilgi);

?>
											<option value="<?PHP echo $cevap_list['CRM7101']; ?>,<?PHP echo $cevap_list['CRM7105']; ?>,<?PHP echo $testadi['CRM4101']; ?>,<?PHP echo $bolum_list['CRM5101']; ?>,<?PHP echo $soru_list['CRM6101']; ?>,<?PHP echo $birey_esle['CRM3101']; ?>,<?PHP echo $session_list['CRM1101']; ?>,<?PHP echo $test_numarasi; ?>,<?PHP echo $tarih; ?>"><?PHP echo $cevap_list['CRM7103']; ?></option>
<? } ?>	
									
										</select>
									</div>		
								</div> <!-- .field-group -->
										<p></p>
										
										
<?php
}
else
{
?>
<?php
while ($cevap_list = mysql_fetch_array($cevap_sorgu)) {
?>

										<textarea name="cevap[]" id="cevap" rows="5" cols="100"></textarea>	
										<input type="text" name="sinavad[]" value="<?PHP echo $testadi['CRM4101']; ?>"><input type="text" name="bolum_name[]" value="<?php echo $bolum_list['CRM5101']; ?>"><input type="text" name="soru_name[]" value="<?php echo $soru_list['CRM6101']; ?>"><input type="text" name="birey_name[]" value="<?PHP echo $birey_esle['CRM3101']; ?>"><input type="text" name="kullanici_name[]" value="<?PHP echo $session_list['CRM1101']; ?>"><input type="text" name="test_no[]" value="<?PHP echo $test_numarasi; ?>"><input type="text" name="tarih[]" value="<?phpP echo $tarih; ?>"><input type="text" name="cevap_adi[]" value="<?PHP echo $cevap_list['CRM7101']; ?>">
<? } ?>
formdaki kodlarda bu şekilde. Bir türlü beceremedim.

Konu biraz uzun oldu farkındayım ama sizden rica gerçekten yardımcı olabilecek arkadaşlardan yardım bekliyorum. Günlerdir uğraşıyorum ancak bi sonuca ulaşamadım. Bu şekilde nasıl yapılacağını bilen yada farklı bir yöntemle de olur diyen arkadaşlardan yardım bekliyorum.
Arkadaşım sen baştan mantığı yanlış kurmuşsun. Bu şekilde hem mantık hatalı , hem de dışarıdan istenmeyen değer eklenebilir. Senin cevap sayın belli olmadığı için ben istediğim sayıda post gönderebilirim ve veritabanına eklersin, çünkü kontrol yok.

Halbu ki yapman gereken çok basit formda gösterirken id ile gösterirsin. Post ettikden sonra tekrar veritabanından sorguyu alıp, döngüye sokarsın:

misal:

formda:
<select name="cevap_<?php echo $cevap_list['cevap_id']; ?>" id="cevap_<?php echo $cevap_list['cevap_id']; ?>"> 
<option value="<?php echo $cevap_list['CRM7103']; ?>"><?php echo $cevap_list['CRM7103']; ?></option> 
</select>

<textarea name="cevap_<?php echo $cevap_list['cevap_id']; ?>" id="cevap_<?php echo $cevap_list['cevap_id']; ?>" rows="5" cols="100"></textarea>
Gibi kullanıp

postta da:

while ($cevap_list = mysql_fetch_array($cevap_sorgu)) {
 $secilen = $_POST[$cevap_list['cevap_id']; //gerekli temizlemeleri yapmayı unutma real_escape_string vs.
  //vb. kendne göre uyarla gerekenleri
}
Bu şekilde hem foreach vs. diye uğraşıp kafan karışmaz, hem de doğrulama yapmış olursun eklemeden.