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
-
Ü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
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
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 :(
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
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
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
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. :)
1 kişi bu mesajı beğendi.