Eski değişmeyen değer veritabanına boş gidiyor.

fatihmertFatih Mert Doğancan
1 haftadır uyuz oldum çözemedim,, stackoverflowdaki arkadaşlarda Türk olduğunuzu anlayınca dalga geçiyorlar.

Şimdi bir profil sayfası düşünün, kullanıcı sayfasındaki bilgileri düzenlemek istediği zaman tüm bilgilerini değiştirebileceği bir sayfaya(profilDuzenle.php) yönleniyor. Profil resmini değiştirmediği zaman(yani resim seçmediği) düzenlemeyi bitirmesine rağmen resim boş gönderiliyor. Bunun önlemini sayfanın başında eski profil resminin yolunu(path) veritabanından çekerek bir değişkene aktardım. Eski fotoğraf yolu değişkende var ama yinede boş gidiyor.

HTML form yoluyla POST edilen bilgiler şöyle bir kontrolden geçiyor;

if(isset($_POST['duzenlemeBitir']) && (array_key_exists("degistir",$_GET) && $_GET['degistir'] == "dogru") && (array_key_exists('uyeId',$_GET) && $_GET['uyeId'] == md5($_SESSION['uyeGiris_skype'])))
Profil resim kontrolünü özellikle uzun yoldan yaptım ki hataları kestireyim ama yok hata mata boş gidiyor ama değeri alert ettiğimde görebiliyorum;

İlk denediğim kontroller şu şekilde;

if(!isset($_FILES['profilResim']['value']) or (empty($_FILES['profilResim']['value']))) if(!isset($_FILES['profilResim']['name']) or (empty($_FILES['profilResim']['name'])))

$W = " WHERE e_posta = '".$_SESSION['uyeGiris_ePosta']."' AND sifre='".$_SESSION['uyeGiris_sifre']."'";
Kontrollerin içeriği;

mysql_query("UPDATE uye SET profil_resim='".$profilEski."'".$W) or die(mysql_error());

İkinci denediğim kontroller şu şekilde;

if(isset($_FILES['profilResim']['name'])){ $profilResim = $uyeUrl_."/".$_FILES['profilResim']['name']; move_uploaded_file($_FILES['profilResim']['tmp_name'],$profilResim); mysql_query("UPDATE uye SET profil_resim='".$profilResim."'".$W) or die(mysql_error()); }else{ mysql_query("UPDATE uye SET profil_resim='".$profilEski."'".$W) or die(mysql_error()); }
Eski bilgileri veritabanında çekmeden önce;

error_reporting(E_ALL ^ E_NOTICE);

Kullandım çünkü yeni kayıt olanlar için NULL dönen değerler var, bunları engelliyor..

Yardımlarınızı dört gözle bekliyorum..
İyi çalışmalar..
2013-09-13 20:38:43

Php

kullandıgın islem icin  mysqli_affected_rows();  ile  veri tabanını kontrol et

2013-09-13 22:25:36

Php

yada en garantisi  transaction kullanman ama  transaction kullanman icin olusturdugun   veritabanı  motorunun myisam olmaması gerekmektedir bu sekilde eger herhangi bir  hata donerse  veritabanındaki islemleri geri alır

ornek kullanım

<?php

mysql_query("BEGIN"); //  transaction baslattik

$sorgu=mysql_query("sorgu cumlesi"); //  sorgumuzu gonderdik

if(!$sorgu) mysql_query("ROLLBACK"); // eger sorgu basarısız ise yapılan degisiklikleri geri aldık

mysql_query("COMMIT"); // transaction bitirdik

?>

2013-09-13 22:32:02

Php

fatihmertFatih Mert Doğancan

Denediğim ikinci kontrol kısmında; ilk if kontrolünde resim sunucuya yükleniyor;

Warning: mysql_affected_rows() expects parameter 1 to be resource, string given in C:\xampp\htdocs\profilDuzenle.php on line 110

else kısmında da aynı hata; yine boş dönüyor :/

Warning: mysql_affected_rows() expects parameter 1 to be resource, string given in C:\xampp\htdocs\profilDuzenle.php on line 111

2013-09-13 22:32:38

Php

mysqli ile kullanıyorsan   method olarak bulunmakta 

2013-09-13 22:34:43

Php

affected rows kullanımları icin phpnet  bakabilirsin ama orada sen  affected rows kullanabilmen icin  affected rowsu yazdıgın yere queryi de yazman  gerekmekte

2013-09-13 22:40:39

fatihmertFatih Mert Doğancan

zaten öyle yapmıştım ama yanlış kullanmışım,, bu problem net olarak xampp dan mı kaynaklanıyor olabilir.

2013-09-14 16:28:11

Php

hata cıktısını paylassana mysqlin

2013-09-13 22:42:05

Edit:

Php

fatihmertFatih Mert Doğancan

if(isset($_FILES['profilResim']['name'])){
                    $profilResim = $uyeUrl_."/".$_FILES['profilResim']['name'];
                    move_uploaded_file($_FILES['profilResim']['tmp_name'],$profilResim);
                    mysql_query("UPDATE uye SET profil_resim='".$profilResim."'".$W) or die(mysql_error());
                    printf("\tIF: %d\n",mysql_affected_rows());
}else{
                    mysql_query("UPDATE uye SET profil_resim='".$profilEski."'".$W) or die(mysql_error());
                    printf("\tELSE: %d\n",mysql_affected_rows());
}

Profil resmi boş iken, resim yüklediğimde;

IF: 1

Profil resmi varken, sorguyu boş gönderdiğimde;(boş gönderdiğim ile aynı hatayı alıyorum)

IF: 1

----

MySQL hatası yok ki, acaba error_reporting(E_ALL ^ E_NOTICE); bu ifade engelliyor mu? Ama bu ifadeyi kullanmadığımda null değerler olabileceğinden kullanmama gerekiyor yoksa;

Notice: Undefined index: galeri1 in C:\xampp\htdocs\rus\profilDuzenle.php on line xx

NULL değerlerin tanımlanmadığını söylüyor doğal olarak.. Başkada bir hata yok.. profil_resim boş olduğu için NULL dönmüyor. Yani sadece galeriler NULL gönderildiği için hata alıyorum..

PHP ve MySQL de yeniyim uğraştırıyorum sizleri kusura bakmayın :/

Yardımlarınız için teşekkür ederim..

İyi çalışmalar..

2013-09-14 19:41:17

Php

fatihmertFatih Mert Doğancan

Çözdüm oni!! Bu ne biçim mantık diycem de her şey sayı olduğu için programlamada mantıklı oluyor. Tek if kontrolü ile çözdüm..

if(strlen($_FILES['profilResim']['name']) != 0){
                    alert("Resim Seçtiniz: ".$_FILES['profilResim']['name']."\nEski Resim: ".$profilEski);
                    $profilResim = $uyeUrl_."/".$_FILES['profilResim']['name'];
                    move_uploaded_file($_FILES['profilResim']['tmp_name'],$profilResim);
                    mysql_query("UPDATE uye SET profil_resim='".$profilResim."'".$W) or die(mysql_error());
                }

2013-09-16 20:08:32

phpkodlari.com © 2009 Herkes Php öğrenecek
Eglence ve Oyun: Gamikro