v2.5.2
Giriş yap

Php güncelleme işleminde checkbox ve selectbox seçili gelmiyor?

yazilimyolcusu
293 defa görüntülendi ve 3 kişi tarafından değerlendirildi

Arkadaşlar merhaba. Text, checkbox, select karışık bir form var. Veritabanına kayıt yapabiliyorum. Text'te bir sorun yok ama select ve checkbox'ları düzenlemek istediğimde veriler checkbox'ta tik'li, selectbox'ta seçili gelmiyor. Nasıl yapılır acaba, bir örnek koyabilir misiniz?

Cevap yaz
Cevaplar (9)
yazilimyolcusu
230 gün önce

Şimdi sorunun çözümüne bir adım kaldı şu kodlarla. Aşağıdaki kodlarla il alanı seçili geliyor. İl alanı seçili olduğu için, o il'e ait bütün ilçeler geliyor. Tek sorun, veritabanındaki ilçe seçili gelmiyor. O il'in ilk ilçesi ne ise o geliyor. Mesela "Ankara" il'inin ilçeleri "Altındağ", "Ayaş" vs. Veritabanındaki ilçe "Ayaş" olmasına rağmen, ilk ilçe seçili geliyor, yani "Altındağ".

var ilceler = {
"Ankara": [
    "Altındağ",
    "Ayaş",
    "Bala"
    ]
};

function updateIlceler() {
    var ilSelect = document.getElementById('il');
    var ilceSelect = document.getElementById('ilce');
    var selectedIl = ilSelect.value;
    
    ilceSelect.innerHTML = '';
  
    if (selectedIl in ilceler) {
        for (var i = 0; i < ilceler[selectedIl].length; i++) {
            var option = document.createElement('option');
            option.text = ilceler[selectedIl][i];
            option.value = ilceler[selectedIl][i];
            ilceSelect.add(option);
        }
    }
}

document.getElementById('il').addEventListener('change', updateIlceler);

updateIlceler();
yazilimyolcusu
236 gün önce

Update yapmak istediğim sayfaya gittiğimde il ve ilçe kısmını "selected='selected'" şeklinde çekebiliyorum ama il'i çektiğimde ilçe alanında sadece çektiğim veri gözüküyor. Diğer ilçeler görünmüyor.
Mesela, Veritabanına insert ettiğim veri il:İstanbul, ilçe:Kadıköy olsun.
Update sayfasında il alanı: İstanbul, ilçe alanı:Kadıköy görünüyor. İlçe alanında sadece çektiğim veri görünüyor. Diğer illerin de görünmesi lazım ki, kullanıcı diğer ilçeleri de seçebilsin.
İlçeler şu şekilde görünüyor. İl ve ilçeyi çektim diyelim. İl kısmını değiştiriyorum, mesela "Ankara" yapıyorum. Tekrar il kısmını İstanbul yaptığımda ilçeler görünüyor.
Bir resim koyayım daha iyi olur.
https://hizliresim.com/t6i0vpd

<option>.....</option>
yazilimyolcusu
238 gün önce

Şimdi benim buradaki sorunum şu: Insert işleminde bir problem yok ama düzenleme işleminde var. Düzenle linkine yani

<a href="digersayfa.php=idgonder<?php echo $sorgu['id']; ?>"></a>

bu şekilde id gönderdiğimde, düzenleme sayfasına gittiğinde value'su "text" olan verileri alabiliyorum. İl seçimini de aşağıdaki şekilde yapabiliyorum

<Option Value="Samsun"
<?php if($vericek['yenieklenenler_il'] === "Samsun") { ?> 
        <?php 
        echo 'selected="selected"'; 
        } 
    ?> 
>Samsun
</Option>

ama ilçe alanı boş. Yani ne veritabanındaki ilçeyi çekebiliyorum ne de veritabanındaki il'e ait diğer ilçeleri görüntüleyebiliyorum. Eğer il seçeneğini değiştirirsem ve tekrar o il'i seçersem, veriler geliyor. Veritabanındaki ilçe yine seçili değil tabiki.

yazilimyolcusu
239 gün önce

Arkadaşlar javascript ile yapılan bir il-ilçe uygulamasında il kısmını, kodunu koyduğum şekliyle yaptım ama ilçe kısmı farklı. Sayfada düzenleme yapacağımda il'e uygun ilçeyi bu kodlarla nasıl seçtirebiliriz, veritabanından nasıl çektirebiliriz? Bu arada il ve ilçe uymuyor. Örnek olarak koydum.
İl kısmına örnek aşağıda.

<Option Value="Samsun"
<?php if($vericek['yenieklenenler_il'] === "Samsun") { ?> 
        <?php 
        echo 'selected="selected"'; 
        } 
    ?> 
>Samsun
</Option>

İlçe kısmına örnek aşağıda.

<select name="ilce" id="ilce" value="<?php echo $vericek['yenieklenenler_ilce']; ?>" class="validate[required]" required="required">
    <option value=""></option>
</select>
function findObj(n, d) { //v4.01
	var p,i,x;
	if(!d) d = document;
	if((p = n.indexOf("?"))>0&&parent.frames.length) {
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if(!(x = d[n])&&d.all) x = d.all[n];
	for (i = 0; !x&&i<d.forms.length;i++) x = d.forms[i][n];
	for (i = 0; !x&&d.layers&&i<d.layers.length;i++) x = MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x = d.getElementById(n);
	return x;
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
new Array('Zonguldak','Devrek'),
new Array('Zonguldak','Ereğli'),
new Array('Zonguldak','Gökçebey'));
var semtler = new Array();
function set_child_listbox(sSource,sTarget,childArray,sifirla,tip) {
//önce temizlik ;)
	var parentObject = findObj(sSource);
	var childObject = findObj(sTarget);
	var base=0;
	if(sifirla==1)
	{
	base=-1;
	}else
	{
	base=0;
	}

	for(var i=childObject.length;i>base;i--) {
		childObject.options[i] = null;
	}

	//childObject.options[0] = new Option("Seçiniz","");
	//var selIndex = parentObject.options[parentObject.selectedIndex].value;
	var selIndex = parentObject.value;
	if (selIndex == "") {
		//childObject.disabled = true;
	} else {
		childObject.disabled = false;
		var childIndex = base+1;
		for (i = 0; i < childArray.length; i++) {
			if (childArray[i][0+tip] == selIndex) {
				childObject.options[childIndex+1] = new Option(childArray[i][1+tip], childArray[i][1+tip]);
				childIndex++;
			}
		}
	}

	childObject.selectedIndex = 0;
    	if(document.getElementById('nvar_alan_1').value == 'Türkiye' || document.getElementById('nvar_alan_1').value == ''){childObject.focus();}else{document.getElementById('ilce').style.display='none';document.getElementById('nvar_alan_4').style.display='block';document.getElementById('nvar_alan_5').style.display='block';}
}
yazilimyolcusu
239 gün önce

Arkadaşlar cevaplar için teşekkür ediyorum. Şu şekilde hallettim, checkbox'ları. Peki select'ler için nasıl alabiliriz verileri.

value="<?php if($verilericek['yenieklenenler_meyveler'] === "Erik") { ?>" 
<?php 
echo 'checked="checked"'; 
} else { 
    echo 'checked=""'; 
} 
?>
ebykdrms
241 gün önce

1) Nesne yapısına hakim değilim. Php'de "$data" dan sonra kullanılan yapıyı bilmiyorum. Prosedür "mysqli_query" tarzında yazabilirseniz ilerleyebilirim.

Veritabanından size nasıl bir sonuç dönüyor bilemiyorum. Örnek vererek ilerleyebilirim:

$sorgu = "SELECT ekle_ad, ekle_ozellik FROM tablom";
$sonuc = mysqli_query($sorgu);
if (!$sonuc) die("Sorgu çalıştırma hatası: " . mysqli_error());

$datas = [];
while ($row = mysql_fetch_assoc($sonuc)) $datas[] = $row;

Aldığınız veriyi, benim örnek verdiğim $datas değişkenine bu şekilde doldurabilirsiniz.
Böylece $datas değişkeniniz şöyle bir değer almış olacak:

$datas = [
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 1"],
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 3"]
];

Bu bir object'ler array'i. Object'lerin aslında array'den pek farkı yok.
Array'lerde index no ile seçim yaparsınız. Object'lerde ise key'lerle seçim yaparsınız.

Örn. $datas dizisindeki ilk elemanı almak için: $datas[0]
Örn ilk elemandaki "ekle_ad" key'inin değerini almak için: $datas[0]->ekle_ad

2) Bir sorum olacak. Bu "checkbox_attr" değişkenlerini input'un içinde bu şekilde mi kullanacağız?
Evet. Amacınız, seçili checkbox'a checked özelliği eklemek. Bunu nasıl yapacağınız size kalmış. Benim gösterdiğim bir yol sadece.

qplot
241 gün önce

verileri sqlde kedi,köpek,at gibi tutacaksın virgülle

$hayvanlar = array("kedi", "köpek", "kuş", "at");

if (in_array("kedi", $hayvanlar)) {
    echo "Kedi bulundu!";
} else {
    echo "Kedi bulunamadı!";
}
yazilimyolcusu
242 gün önce
foreach($datas as $data) $aktifOzellikler[] = $data->ekle_ozellik;

Nesne yapısına hakim değilim. Php'de "$data" dan sonra kullanılan yapıyı bilmiyorum. Prosedür "mysqli_query" tarzında yazabilirseniz ilerleyebilirim.
Bir sorum olacak. Bu "checkbox_attr" değişkenlerini input'un içinde bu şekilde mi kullanacağız.

ebykdrms
242 gün önce

Input'lara php ile veri basılıyorsa, input için value özelliği kullanılır ama checkbox için checked özelliği kullanılır.
Veritabanından aldığın veriyi hangi değişkenlerle aldığını bilmediğim için uyduracağım:
Tüm kayıtları çektiysen (örneğimizde Veri 1 ve Veri 3 olm.üz. 2 kayıt var) şöyle bir değişkenin var diye varsayalım:

$datas = [
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 1"],
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 3"]
];

Bu durumda ekle_ad bölümü zaten aynı olduğu için ilk kaydı alabiliriz:

$ad = $datas[0]->ekle_ad;

ekle_ozellik verilerini de düz bir dizi içinde toplarsak html içine gömmek kolaylaşır.

foreach($datas as $data) $aktifOzellikler[] = $data->ekle_ozellik;
// $aktifOzellikler dizisi şöyle oldu: ["Veri 1", "Veri 3"]

$checkbox1_attr = array_search("Veri 1", $aktifOzellikler)===false ? '' : 'checked'; // 'checked'
$checkbox2_attr = array_search("Veri 2", $aktifOzellikler)===false ? '' : 'checked'; // ''
$checkbox3_attr = array_search("Veri 3", $aktifOzellikler)===false ? '' : 'checked'; // 'checked'
<form action="x.php" method="post">
    <input class="x-text" type="text" name="ad" placeholder="Ad" value="<?=$ad?>" ><br>    
    <input class="x-checkbox" type="checkbox" <?=$checkbox1_attr?> name="ozellikler[]" value="Veri 1" placeholder="Veri 1" ><br>
    <input class="x-checkbox" type="checkbox" <?=$checkbox2_attr?> name="ozellikler[]" value="Veri 2" placeholder="Veri 2" ><br>
    <input class="x-checkbox" type="checkbox" <?=$checkbox3_attr?> name="ozellikler[]" value="Veri 3" placeholder="Veri 3" ><br>
</form>

Kodları denemeden direkt buraya yazdığım için syntax hataları veya kurgusal hatalar olabilir.