Belki de basit bir şey ama nedense dünden beri bir şeyleri atlıyorum ve başarılı çalıştıramıyorum.
Şimdi şöyle, bir ayarlar sayfamız var. Bu ayarlar sayfasında mail adresi ad soyad telefon numarası düzenleme vs var. Bunlar başarılı bir şekilde update ediliyor. Aynı formda sosyal medya hesap bölümü de var.
İlerleyen zamanlarda yeni platform eklenebilir diye sosyal medya platformlarını "platforms" isimli bir veritabanı tablosunda tutuyorum. Tablo aşağıdaki şekilde:

Kullanıcıların girdiği sosyal medya platform linklerini de "userSocial" isimli tabloda tutuyorum. "userSocial.platform" ile "platforms.id" birbiri ile ilişkili. "userSocial" tablosu:

Ayarlar sayfasında, platforms tablosundaki her şeyi çekip input şeklinde yazdırıyorum. Inputların name değeri platforms.inpname değeri ile eşit.

Bu şekilde görünüyor.

- Eğer input value boş geldiyse, o platform değeriyle veritabanına bak, satır varsa sil. yoksa boş geç.
- Eğer input dolu geldiyse, veritabanında o platformun değerini kontrol et; yoksa ekle, varsa güncelle.
https://paste.ubuntu.com/p/j57jvRWpmZ/
$sosyalGetir = $baglan->query("SELECT * FROM platforms");
foreach ($sosyalGetir as $sosyal) {
$sosyalid = $sosyal["id"];
$sosyalName = $sosyal["inpname"];
$sosyalNameVal = $_POST[$sosyalName];
echo "---------ust kısım ----------v <br>";
echo $sosyalid."<br>";
echo $sosyalName."<br>";
echo $sosyalNameVal."<br>";
echo "---------ust kısım ----------v <br>";
if ($sosyalNameVal != "") {
$userKontrolEt = 1;
$userSosyalKontrol = $baglan->query("SELECT * FROM userSocial WHERE type = 1 AND platform = '$sosyalid' AND userid = '$userid'")->fetch(PDO::FETCH_ASSOC);
if ($userSosyalKontrol["id"] != 0){
echo $sosyalid."<br>";
echo $sosyalName."<br>";
echo $sosyalNameVal."<br>";
echo "update yapılacak <br>";
$sosyalUpdateSorgu = $baglan->prepare("UPDATE userSocial SET
platform = ?,
type = ?,
url = ?
WHERE type = 1 AND userid = ?");
$sosyalUpdate = $sosyalUpdateSorgu->execute(array(
$sosyalid, 1, $sosyalNameVal, $userid
));
if ( $sosyalUpdate ){
echo "update yapıldı";
continue;
}
}else{
echo $sosyalid."<br>";
echo $sosyalName."<br>";
echo $sosyalNameVal."<br>";
echo "insert yapılacak <br>";
$sosyalInsertSorgu = $baglan->prepare("INSERT INTO userSocial SET
platform = ?,
url = ?,
type = 1,
userid = ?");
$sosyalInsert = $sosyalInsertSorgu->execute(array(
$sosyalid, $sosyalNameVal, $userid
));
if ( $sosyalInsert ){
echo "$sosyalNameVal";
echo "insert yapıldı";
continue;
}
}
}else{
$userSosyalKontrol = $baglan->query("SELECT * FROM userSocial WHERE type = 1 AND platform = '$sosyalid' AND userid = '$userid'")->fetch(PDO::FETCH_ASSOC);
if ($userSosyalKontrol["id"] != 0){
echo $sosyalid."<br>";
echo $sosyalName."<br>";
echo $sosyalNameVal."<br>";
echo "silinecek";
continue;
}else{
echo "boş geçilecek";
continue;
}
}
echo "<br>---<br>";
}userSocial tablosunda hiç veri yoksa formda hepsi doldurulup gönderildiğinde başarıyla hepsine kayıt ekliyor. Fakat güncelleme işlemi yapmaya çalıştığımda nedense ilk atılan 3'ü twitter olarak güncelliyor, formda güncellenmiş gönderdiklerimi tekrar insert ediyor.

Form sayfasındaki log: (foreach'in altındaki echo ile yazdırılanlar)


