Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

php mysql veri yazma sorunu

yakamoz01

0
Onaylı Üye
Üye
Katılım
7 Haziran 2005
Mesajlar
359
Açılan Konu
30
Tepki puanı
0
PHP:
$q = mysql_query("SELECT `a`, `b` FROM `tablo` ORDER BY `a` DESC LIMIT 0,1") or die(mysql_error());

$row = mysql_fetch_assoc($q);

foreach($row as $k => v)
{
  $$k = $v;
}

$a = !empty($a) ? $a : 1; // Boşsa 1 olsun
$b = !empty($b) ? $b : 1; // Boşsa 1 olsun
$c = !empty($c) ? $c : 1; // Boşsa 1 olsun

$yeni_a = $a + 1; // a'nın yeni değeri a + 1
$yeni_b = ($b < 5) ? $b + 1 : 1; // b'nin yeni değeri 5'ten küçükse b + 1, değilse 1
$yeni_c = ($b == 5) ? $c + 1 : $c; // c'nin yeni değeri b 5'ten küçükse c + 1, değilse kendisi

$q = mysql_query("INSERT INTo `tablo` (`a`, `b`, `c`) VALUES ('$yeni_a', '$yeni_b', '$yeni_c')") or die(mysql_error());

kodunda b değeri 5 olunca c değirinin de 1 artmasını istiyorum ancak çalışmıyor. b değeri 5 olunca c 1 oluyor, sonra c 0 a geri dönüyor. istediğim b tekrar 5 olunca c 2 olsun. nerde hata var?
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
$a = !empty($a) ? $a : 1; // Boşsa 1 olsun

Bu boşsa değil, boş değilse demek. Database'den gelen değerleri var_dump ile ekrana basın. empty() fonksiyonunu kaç senelik programcılar bile yanlış kullanıyor çoğu zaman. String 0, Integer 0, boş array, bunların hepsi empty() TRUE döndürür. Değer olup olmadığını 0'a, lisanssız'a ya da boş stringe eşit olup olmadığına göre kontrol etmek daha iyidir her zaman.
 

yakamoz01

0
Onaylı Üye
Üye
Katılım
7 Haziran 2005
Mesajlar
359
Açılan Konu
30
Tepki puanı
0
$a = !empty($a) ? $a : 1; // Boşsa 1 olsun

Bu boşsa değil, boş değilse demek. Database'den gelen değerleri var_dump ile ekrana basın. empty() fonksiyonunu kaç senelik programcılar bile yanlış kullanıyor çoğu zaman. String 0, Integer 0, boş array, bunların hepsi empty() TRUE döndürür. Değer olup olmadığını 0'a, lisanssız'a ya da boş stringe eşit olup olmadığına göre kontrol etmek daha iyidir her zaman.

olaya tam hakim değilim açıkcası. yeni yeni öğreniyorum. burda c yi arttıracak kodu yazabilir misiniz?
 

Vi.ncent

0
Onaylı Üye
Üye
Katılım
9 Ağustos 2010
Mesajlar
12
Açılan Konu
0
Tepki puanı
1
Kısa if-else kullanmak yerine if(){}else{} kullanmanız daha yerinde olacak. Her satırı yorumlama yapmanıza gerek yok. İşlerinizi daha çok karıştıracaktır.

İlk SQL sorgusunda 'c' belirtilmemiş. Sorun büyük ihtimalle bundan kaynaklandı.
 

yakamoz01

0
Onaylı Üye
Üye
Katılım
7 Haziran 2005
Mesajlar
359
Açılan Konu
30
Tepki puanı
0
sorunu hallettim arkadaşlar teşekkür ederim
 
Üst