khazadum Mesaj tarihi: Mayıs 2, 2017 Paylaş Mesaj tarihi: Mayıs 2, 2017 Selamlar, PHP hakkındaki sorularımı buradan sorayım istedim. Lafı dolandırmadan anlatayım; Şimdi Windows sunucusundan kullanıcıları alıcam. (Active Directory var ama yönetimi yabancı bir firmada. ldap kullanarak bağlanmak sıkıntılı oldu biraz. Bende text dosyasına export etmelerini istiyorum. Düzenli olarak export yapacaklar istediğim şekilde.) Text dosyasına export yapılırken şu şekilde istedim; isim|soyisim|email bu üç sütun yetiyor bana. Şöyle bir şey yaptım; $handle = @fopen("users.txt", "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); list($name,$surname,$email)=explode("|",$buffer); $query = $db->insert('users') ->set(array( 'name' => $name, 'surname' => $surname, 'email' => $email )); } if($query){ echo 'veriler eklendi'; } bu tayfunerbilen 'den basicdb sınıfını kullanıyorum. Verileri ekleme de sıkıntı yok. Lakin script her çalıştığında aynı verileri tekrar tekrar ekliyor. Kontrol kısmını nereye ve nasıl koyacağımı bilemedim. Şimdilik soru bu :D bu script ilerledikçe takıldığım noktaları buradan sorarım artık. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
-Bonesoul- Mesaj tarihi: Mayıs 2, 2017 Paylaş Mesaj tarihi: Mayıs 2, 2017 $db->insert('users') satırından hemen once veritabanını sorgula, olmayan kayıtlar icin insert calıstır sadece. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
khazadum Mesaj tarihi: Mayıs 2, 2017 Konuyu açan Paylaş Mesaj tarihi: Mayıs 2, 2017 işte onun mantığını kuramadım. text'den gelen email 'i database de sorgulayıp if koyabilirim ama lakin nasıl devam edecek? Atıyorum; if($email == $row['email']) { echo 'Bu kayıt mevcut'; } else { // insert kodu } fakat kayıt olduğunda insert etmeyecektir. Çok ahım şahım bir PHP bilgim yok :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Dark_Soul Mesaj tarihi: Mayıs 2, 2017 Paylaş Mesaj tarihi: Mayıs 2, 2017 Ee tamamm db de ayni emaille kayit varsa insert etmemesini istiyorsun zaten? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
khazadum Mesaj tarihi: Mayıs 2, 2017 Konuyu açan Paylaş Mesaj tarihi: Mayıs 2, 2017 Hayır istediğim şey o kaydın atlanıp olmayan kayıtların eklenmesi. Bir register formu olamayacağı için yeni bir kullanıcı eklendiğinde var olan users.txt 'nin en altına eklenecek. Bunun mantığını kuramıyorum bir türlü. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Mayıs 2, 2017 Paylaş Mesaj tarihi: Mayıs 2, 2017 Iki secenegin var; 1 - Once kayit DB'de var mi diye bakmak, calisacak query sayisini ikiye katlamak. 2 - INSERT IGNORE kullanarak tek sorgu yapip, isi MySQL'e devretmek. Ikinci opsiyon icin BasicDB.php'ye asagidaki fonksiyonu ekleyip, $db->insertIgnore(..) olarak kullanabilirsin. /** * Used for insert operation * * @param * $tableName * @return $this */ public function insertIgnore($tableName) { $this->sql = 'INSERT IGNORE INTO ' . $tableName; return $this; } Ha tabi bu degisikligi kendi fork'ladigin repo'da yapip, sonra kutuphanenin yaraticisina PR gondersen de degisiklikler esas repo'da da yerini alsa daha iyi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
jonq Mesaj tarihi: Mayıs 3, 2017 Paylaş Mesaj tarihi: Mayıs 3, 2017 DB'de email unique ise bu kontrolü yapmana gerek yok. Değilse'de unique yap. Di' nin dediği gibi INSERT IGNORE ile çözersin. Eğer Unique yapamıyorsan, diğer bir yol olarak DB'de kayıtlı olanları tek SELECT ile çekip array de tutman daha sonra da insert edeceklerin ile karşılaştırıp ( array_diff ) olmayanları ayıklayarak INSERT sorgusunu ayıklananlara uyarlaman. Tabi bu olay sağ kulağını sol elinle tutmak gibi birşey oluyor ama fikir olsun diye belirteyim dedim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
khazadum Mesaj tarihi: Mayıs 4, 2017 Konuyu açan Paylaş Mesaj tarihi: Mayıs 4, 2017 neyse bunu bir şekilde hallletmeye çalışacağım. Olmazsa sürekli bir veri eklenişi olmayacağı için tableyi truncate edip bir daha çalıştırırım. Şimdi users'a eklemeyi yapıyorum. Kullanıcı AD içinde olduğu için php ile get_current_user() ile userini alıyorum ve karşılaştırma yapıyorum. users tablom; id | isim | soyisim | email 1 Onur Kaya [email protected] 2 Onur2 Kaya [email protected] x.com sabit bir domain. Yukarda dediğim gibi; $logonname = get_current_user() . '@x.com'; $query = $db->prepare("SELECT * FROM users WHERE id=?"); $query->execute(array(1)); $row = $query->fetch(PDO::FETCH_ASSOC); if($logonname == $row['email']) { echo 'test'; } else { echo 'yalnis bi seyler var'; } bu şekilde sorgulama yaptığımda sürekli else kısmı çalışıyor. Ama != operatörü kullandığımda test cevabı geliyor. Ters çalışıyor kısacası merak ettim neden. echo $logonname . ''; echo $row['email'] . ''; iki echo da aynı sonucu veriyor: [email protected] bu arada evet basicdb kullanmaktan vazgeçtim. Elle yazayım hemde pratik yapıp öğrenmiş olurum diye :p -- düzeltme -- if kontrolü hiç çalışmıyormuş. execute'deki array id değiştirdiğimde çıktılar aynı olmasa bile != test sonucunu veriyor. -- düzeltme 2 -- sorunun kaynağını buldum. users.txt 'den veritabanına yazdırırken en sonuna boşluk koyuyormuş. trim ile silip düzelttim :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Mayıs 4, 2017 Paylaş Mesaj tarihi: Mayıs 4, 2017 Kulagi tersten de degil baya baya bacak arasindan tutuyon. 1 - Ilk mesajda bahsettigin DB class'i yerine dumduz PDO kullaniyosun, ikisini karistiriyosun. Bad practice. 2 - Madem DB class'ini kullanmican, direkt sorgu gondericen, once SELECT edip sonra INSERT etmek yerine, direkt INSERT IGNORE kullan, sorgu sayisi da yazdigin kod da yariya dussun, if-else hepsi kaybolsun. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
khazadum Mesaj tarihi: Mayıs 4, 2017 Konuyu açan Paylaş Mesaj tarihi: Mayıs 4, 2017 Yukardaki postta belirtmiştim abi class kullanmadığımı kızma hemen :D başka bir problemim var. Şu aşağıdaki kod; $logonname = get_current_user() . '@x.com'; Ağdaki diğer bilgisayarlarda da benim kullandığım user'i gösteriyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Mayıs 4, 2017 Paylaş Mesaj tarihi: Mayıs 4, 2017 said: bu tayfunerbilen 'den basicdb sınıfını kullanıyorum. e bu? http://php.net/get_current_user get current user cok alakasiz yapmaya calistigin is ile. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
khazadum Mesaj tarihi: Mayıs 5, 2017 Konuyu açan Paylaş Mesaj tarihi: Mayıs 5, 2017 said: bu arada evet basicdb kullanmaktan vazgeçtim. Elle yazayım hemde pratik yapıp öğrenmiş olurum diye :p yanlış yazmışım :) evet get_current_user() çok alakasız ve saçma olmuş. Dünden beri araştırıyorum da bir yol bulamadım internette. Siteye bağlanan kullanıcının bilgisayar adını almayı. Bilgisayar adı, C:/Users/k.adı ya da regedit ten bir şekilde almam lazım oldu :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar