lostyazilim
tr.link

Php Update Sorunu! (Dikkatle Okuyun Derim!)

8 Mesajlar 1.207 Okunma
acebozum
tr.link

64552 64552 WM Aracı Anonim Üyelik
  • Üyelik 31.05.2016
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 173
  • Beğeniler 1 / 21
  • Ticaret 2, (%100)
Arkadaşlar, farzedelim ki veritabanında kayıtlı 2 ürün var;

1. ürün == no: 100 - adı: deneme1
2. ürün == no: 101 - adı: deneme2

sorun şu...

1-) diyelimki no su 100 olan ürünü güncellemek istiyorum. ve no sunu 101 yapıyorum. burada çok iyi uyarı veriyor. (101 no lu ürün var diye). burada sıkıntı yok. yani madde 1-) de sıkıntı yok.

2-) fakat yine diyelim ki 100 no lu ürünü güncellemek istedim, bu sefer de hiç bir değişiklik yapmadan kaydetmeye çalıştım yada ürün adını değiştirdim de kaydete bastım hiç farketmez. işte SORUN YİNE BURADA.. KARDEŞ 100 NOLU ÜRÜN VAR DİYOR VE KAYDETMİYOR. :d 1. MADDE İLE 2. MADDE ARADASINDAKİ FARKI ANLAYAN VARSA BANA DÖNSÜN :d
 

 

wmaraci
reklam

hozcelik hozcelik i was here Kullanıcı
  • Üyelik 21.06.2016
  • Yaş/Cinsiyet 26 / E
  • Meslek Web Developer
  • Konum İstanbul Anadolu
  • Ad Soyad H** Ö**
  • Mesajlar 1778
  • Beğeniler 776 / 777
  • Ticaret 23, (%100)
Kodları atın bakalım
 

 

💯 Jenerik ve Projelik Domainler | Tıkla Tüm Domainleri İncele

🥳 Yandex Kurumsal Mail Hizmeti | Sınırsız Süre Kullanım | Tıkla Detayları Öğren

 

"Bu dünya öyle ki karanlığı aydınlığından fazla,
Herkes daha fazla ister, azla yetinmez asla."

64552 64552 WM Aracı Anonim Üyelik
  • Üyelik 31.05.2016
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 173
  • Beğeniler 1 / 21
  • Ticaret 2, (%100)

if($_POST) {

$id = $_POST["id"];
$urun_numarasi = $_POST["urun_numarasi"];
$urun_adi = $_POST["urun_adi"];
$koridor_adi = $_POST["koridor_adi"];
$koridor_numarasi = $_POST["koridor_numarasi"];

$sorgula = $db->query("SELECT * FROM urunler where urun_numarasi = '$urun_numarasi'", PDO::FETCH_ASSOC);
if ( $sorgula->rowCount() ){

echo "Girdiğiniz ürün numarası daha önce kaydedilmiş!";

} else {

$gncll = $db->prepare("Update urunler SET urun_numarasi = ?, urun_adi = ?, koridor_adi = ?, koridor_numarasi = ? WHERE id = ?");
$gncll->execute(array($urun_numarasi, $urun_adi, $koridor_adi, $koridor_numarasi, $id));
echo " Ürün güncellendi...";

} }
 

 

64552 64552 WM Aracı Anonim Üyelik
  • Üyelik 31.05.2016
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 173
  • Beğeniler 1 / 21
  • Ticaret 2, (%100)
post edilen değer ile veritabanındakini karşılaştırıyorum fakat arada çok ince bir durum var... yani bu kodun öyle bir yazılması lazım ki iki ucu ***** değnek diyebilirim :(
 

 

wmaraci
wmaraci

64552 64552 WM Aracı Anonim Üyelik
  • Üyelik 31.05.2016
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 173
  • Beğeniler 1 / 21
  • Ticaret 2, (%100)
arkadaşlar size bir kolaylık önereyim. aklıma bu geldi:

eğer numara inputu hiç dokunulmadan kaydete basılmışsa kaydetsin. yani bu id zaten var demesin. fakat post yaparken inputta jquery ile değişiklik yapılmışmı yani change. işte bunu algılatırsak aradaki farktan sıyrılırız. anlayan anlasın gari :D
 

 

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)


$sorgula = $db->query("SELECT * FROM urunler where urun_numarasi = '$urun_numarasi'", PDO::FETCH_ASSOC);
if ( $sorgula->rowCount() ){

echo "Girdiğiniz ürün numarası daha önce kaydedilmiş!";

}


Hatanız bu kısımda. 100 numaralı ürün zaten veri tabanında olduğu için hiçbir zaman else bölümüne girmez.

Güncelleme işleminde ürün numarasını veritabanında kayıtlı mı diye neden sorguluyorsunuz ? Tam olarak yapmaya çalıştığınız şey nedir ?
 

 

64552 64552 WM Aracı Anonim Üyelik
  • Üyelik 31.05.2016
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 173
  • Beğeniler 1 / 21
  • Ticaret 2, (%100)
ürün numarasını değiştirmek istediğimde, eğer başka bir üründe o numara varsa çakışmasın diye hocam.
 

 

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)
Şöyle bir yöntem uygulayabilirsiniz. Forma eski ürün nosunu hidden input olarak koyun ve value değerini ürün no olarak verin. Ve yeni verilen input var mı diye kontrol edin.

Örnek olarak :










hidden olarak verdiğiniz ürün no ile normal inputtaki ürün no yu php bölümünde kıyaslayıp ona göre işlem yapın.


if ($_POST) {

$id = $_POST["id"];
$gercek_urun_numarasi = $_POST["gercek_urun_no"];
$urun_numarasi = $_POST["urun_numarasi"];
$urun_adi = $_POST["urun_adi"];
$koridor_adi = $_POST["koridor_adi"];
$koridor_numarasi = $_POST["koridor_numarasi"];

if ($gercek_urun_numarasi == $urun_numarasi) {
$gncll = $db->prepare("Update urunler SET urun_numarasi = ?, urun_adi = ?, koridor_adi = ?, koridor_numarasi = ? WHERE id = ?");
$gncll->execute(array($urun_numarasi, $urun_adi, $koridor_adi, $koridor_numarasi, $id));
echo " Ürün güncellendi...";
} else {
$sorgula = $db->query("SELECT * FROM urunler where urun_numarasi = '$urun_numarasi'", PDO::FETCH_ASSOC);
if ($sorgula->rowCount()) {

echo "Girdiğiniz ürün numarası daha önce kaydedilmiş!";

} else {

$gncll = $db->prepare("Update urunler SET urun_numarasi = ?, urun_adi = ?, koridor_adi = ?, koridor_numarasi = ? WHERE id = ?");
$gncll->execute(array($urun_numarasi, $urun_adi, $koridor_adi, $koridor_numarasi, $id));
echo " Ürün güncellendi...";

}
}
}


$gercek_urun_numarasi ile $urun_numarası aynı ise direkt olarak güncelleme yapacaktır. Eğer aynı değil ise ilk olarak yeni verilen ürün numarası sistemde var mı diye bakacak ardından eğer yok ise güncelleme yapacaktır.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Yok ben hidden input ile uğraşamam derseniz. post olarak id'yi aldığınız için önce id ile select atar sonrasında selectden gelen urun_numarası ile post üzerinden gelen ürün numarasını karşılaştırıp aynı işlemi yapabilirsiniz.

Tavsiyem ekstra mysql sorgusu çalıştırmak yerine hidden input koymak olacaktır. :)
64552

kişi bu mesajı beğendi.

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