• 31-07-2009, 17:29:06
    #1
    arkadaşlar phpye yeni başladım kendimi geliştirmek için denemler yapıyorum, neyse sorunuma geleyim.

    mesajlar adlı tablom 3 stundan oluşuyor; sehir, cinsiyet ve mesaj bu tablodan verileri çekip listelediğimde 4 sayfa veri oluyo ve sayfalar arasında rahatlıkla gezebiliyorum.

    Post ile aldığım değişkenlere göre mesela istanbuldan erkek olan kullanıcıların mesajlarını çekiyorum 2 sayfa oluşuyor ve 1. sayfayı görüyorum. Ancak 2. sayfaya tıklayınca tüm kriterler kayboluyo ve veritabanında olan bütün kayıtlar 4 sayfa halinde geliyo. Bu krierleri kaybetmeden 2. 2. sayfayı nasıl görebilirim? aşağıda kodu veriyorum,yardımlarınızı bekliyorum arkadaşlar.

    <div id="sayfa">
    <?php
    include('header.php');
    include('ayar.php');
    error_reporting(E_ALL ^ E_NOTICE);
    ini_set('error_reporting', E_ALL ^ E_NOTICE);
    ?>
    <div id="icerik">
    <?php
    
    $baglanti=mysql_connect("localhost","root","");
    mysql_query("SET NAMES 'latin'");
    mysql_query("SET CHARACTER SET latin5");
    mysql_query("SET collation_connection='latin5_turkish_ci'");
    mysql_select_db("site",$baglanti);
    
    $sayfa=$_GET['sayfa'];
    $sehir=$_POST['sehir'];
    $cinsiyet=$_POST['cinsiyet'];
    
    if ($sayfa=="" || !is_numeric($sayfa)){
    $sayfa=1;
    }
    
    $onceki=$sayfa-1;
    $sonraki=$sayfa+1;
    $kacar=3;
    
    if ((($sehir=="") or ($sehir=="farketmez")) and (($cinsiyet=="") or ($cinsiyet=="farketmez"))){
    	$kayit_sayisi=mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mesajlar"));
    }elseif((($sehir=="") or ($sehir=="farketmez"))){
    	$kayit_sayisi=mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mesajlar WHERE cinsiyet='$cinsiyet'"));
    }elseif ((($cinsiyet=="") or ($cinsiyet=="farketmez"))){
    	$kayit_sayisi=mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mesajlar WHERE sehir='$sehir'"));
    }
    else{
    	$kayit_sayisi=mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mesajlar WHERE sehir='$sehir' and cinsiyet='$cinsiyet'"));
    }
    
    $sayfa_sayisi=$kayit_sayisi['0']/$kacar;
    $sayfa_sayisi=ceil($sayfa_sayisi);
    $nerden=($sayfa-1)*$kacar;
    
    if ((($sehir=="") or ($sehir=="farketmez")) and (($cinsiyet=="") or ($cinsiyet=="farketmez"))){
    	$sorgu=mysql_query("SELECT * FROM mesajlar LIMIT $nerden,$kacar");
    }elseif((($sehir=="") or ($sehir=="farketmez"))){
    	$sorgu=mysql_query("SELECT * FROM mesajlar WHERE cinsiyet='$cinsiyet' LIMIT $nerden,$kacar");
    }elseif ((($cinsiyet=="") or ($cinsiyet=="farketmez"))){
    	$sorgu=mysql_query("SELECT * FROM mesajlar WHERE sehir='$sehir' LIMIT $nerden,$kacar");
    }
    else{
    	$sorgu=mysql_query("SELECT * FROM mesajlar WHERE sehir='$sehir' and cinsiyet='$cinsiyet' LIMIT $nerden,$kacar");
    }
    
    
    while ($veri=mysql_fetch_array($sorgu)){
    	echo '<strong>isim:</strong> '.$veri['ad'].'<br><strong>Şehir:</strong> '.$veri['sehir'] .'<br><strong>Cinsiyet:</strong> '.$veri['cinsiyet']
    	.'<br><strong>Mesajı:</strong> '.$veri['mesaj']. "<br><br>";
    }
    echo "<br>";
    if ($onceki<=0){
    	$onceki=1;
    }else{
    	echo "<a href=mesaj_oku.php?sayfa=$onceki>Önceki</a> ";
    }
    
    for ($i=1; $i<=$sayfa_sayisi; $i++){
    if ($i==$sayfa){
    	echo "<a href=mesaj_oku.php?sayfa=$i><strong>$i</strong></a> ";
    }else{
    	echo "<a href=mesaj_oku.php?sayfa=$i>$i</a> ";
    }
    	
    }
    if ($sonraki>$sayfa_sayisi){
    	$sonraki=$sayfa_sayisi;
    }else{
    	echo "<a href=mesaj_oku.php?sayfa=$sonraki>Sonraki</a> ";
    }
    
    ?>
    </div>
    
    <?php
    include('sol_blok.php');
    include('footer.php');
    ?>
    </div>
  • 31-07-2009, 17:49:10
    #2
    THR
    Üyeliği durduruldu
    ben boyle birsey kullanıyorum belki işine yarar

    	  // Kategori bossa hepsini sec
    	  if($cat == '') {
    	  $sorgu = "SELECT * FROM video";
    	  } else {
    	  $sorgu = "SELECT * FROM video WHERE catid = '$cat'";
    	  }
    	  	
    		// Siralama
    		if($siralama == '') {
    		$order = 'ORDER BY id DESC'; }
    		elseif($siralama == 'pop') {
    		$order = 'ORDER BY hit DESC'; }
    		
    		
    // ICERIK CEKME
    $satirsayisi = mysql_num_rows(mysql_query($sorgu));
    $toplamsayfa = ceil($satirsayisi / $limit);
    $baslangic= ($sayfa-1) * $limit;
    $son = $sayfa * $limit;
    $sorgu = mysql_query($sorgu . " " . $order . " LIMIT $baslangic,$limit");
  • 31-07-2009, 17:57:22
    #3
    thr senin kodlar daha sadeymiş akşam eve gidince denerim artık aslında bim kodlarım da çalışıyo hatta sonurun ne olduğunu da biliyorum ama çözümü bulamadım. Sorun şu 2. sayfanın linkine tıklandığında aşağıdaki değişkenlerim boş geliyo
     $sehir=$_POST['sehir'];
    $cinsiyet=$_POST['cinsiyet'];
    bu değişkenlerdeki veriyi kaybeymeden ikinci sayfaya taşırsam sorun kamayacak ama nasıl yapabieceğimi bilmiyorum.
  • 31-07-2009, 18:18:45
    #4
    echo "<a href=mesaj_oku.php?sayfa=$onceki&cinsiyet=$cinsiye t&sehir=$sehir>Önceki</a> ";
    Şeklinde yaparsan kod nereye gideceğini anlar ama bu tarz değişkenleri GET ile alabilirsin. Eğer ben POST ile bunları halledicem dersen, aramayı ilk yaptığı anda POST'tan gelen verileri cookie'ye yada session'a yazman gerekir. Yukarda verdiğim linkin benzerini FOR döngünde de kullanırsın. Sadece $onceki yerine $i yazarsın. Dediğim gibi yaparsan her hangi bir sorun çıkacağını düşünmüyorum.
  • 31-07-2009, 19:33:47
    #5
    ChaoticThundeR çok teşekkürler, söylediğin gibi verileri get ile çekip linkleri söylediğin şekilde değiştirdim sorun kalmadı. Bu arada php öğrenmek çok hoş oluyo
  • 01-08-2009, 11:07:51
    #6

    Eğer php'yi sağlam öğrenmek istiyosan ve kursa falanda gitmiyeceksen sana bir tavsiyem var. Local'de üyelik sistemi, mini forumu olan bir oyun scripti yaz. Direk bunları yapmana gerek yok. İlk önce oyun scriptini bitir, sonra üyeliği ekle, sonra da forumu ekle. Emin ol kendini çok çok geliştirirsin. Bu dediklerimin kodlamaları o kadar zor değil.

    İyi çalışmalar...
  • 01-08-2009, 17:56:24
    #7
    oyun scripti derken bu konuda pek bilgim yok, oyun scriptinde ne gibi özellikler olması lazım? şimdi yaptığım scripte üyelik sistemi var, mesajları herkes görebiliyo ancak ,ye olmadan mesaj yazılamıyor böyle script ne işe yarayacak bende bilmiyorum öylesine yaptım.

    Aslında bir sorunum daha var kriter seçmek için select kullanıyorum, seçim yapıldıktan sonra gönder tuşuna basınca sonuçlar ekrana geliyor ancak seçilen kriterler select boxta eski haline geliyor yani seçilen kriterlerin select boxta sabit olmasını sağlayamadım, kod aşağıda yardımcı olursanız sevinirim.

    <?php
    error_reporting(E_ALL ^ E_NOTICE);
    ini_set('error_reporting', E_ALL ^ E_NOTICE);
    $ver=$_GET['sehir'];
    $cinsiyet=$_GET['cinsiyet'];
    if ($ver=="ankara"){
    	$ankara="selected";
    }else{
    	$ankara="";
    }
    if ($ver=="farketmez"){
    	$farketmez="selected";
    }else{
    	$farketmez="";
    }
    if ($ver=="istanbul"){
    	$istanbul="selected";
    }else{
    	$istanbul="";
    }
    if ($ver=="izmir"){
    	$izmir="selected";
    }else{
    	$izmir="";
    }
    if ($ver=="bursa"){
    	$bursa="selected";
    }else{
    	$bursa="";
    	}
    $sayfa = "/deneme/site/mesaj_oku.php";
    $currentpage = $_SERVER['REQUEST_URI'];
    if(substr($sayfa, 0, 20)==substr($currentpage, 0, 20)) {
    echo '<fieldset class="sol">
    <legend>Okuma Seçenekleri</legend>
    <dl>
    <form action="mesaj_oku.php" method="get"> 
    <dt><label>Şehir Seçiniz</label></dt>
    <dd><select name="sehir">
    <option value="farketmez" $farketmez>Farketmez</option>
    <option value="ankara" $ankara>Ankara</option>
    <option value="istanbul" $istanbul>İstanbul</option>
    <option value="izmir" $izmir>İzmir</option>
    <option value="bursa" $bursa>Bursa</option>
    </select></dd>
    <dt><label>Cinsiyet Seçiniz</label></dt>
    <dd><select name="cinsiyet">
    <option value="farketmez">Farketmez</option>
    <option value="erkek">Erkek</option>
    <option value="kadin">Kadın</option>
    </select></dd>
    <dt><input type="submit" class="gonder" value="Mesaj Oku"></dt>
    </form>
    </dl>
    </fieldset>';
    }
    
    ?>
  • 01-08-2009, 20:12:47
    #8
    o kodun selected="selected" olması gerekiyor diye biliyorumdum ama burada checked yazıyor. birde bu verdiğim örnekteki gibi dene. değişkenlerine checked="checked" değerlerini ver.

    Edit : oyun scriptinden kastım onArcade benzeri birşey yazman. Geçen sene php'ye ilk başladığımda onArcade benzeri bir script yazmıştım. Php'yi öğrenmemdeki en önemli faktör bence buydu. Oyun scriptlerinde genel olarak kullanılan çoğu kod, fonksiyon vs. var. Eğer sen sıfırdan bir oyun scripti yazarsan kendini epey geliştireceğini düşünüyorum. Ne özellikleri olduğunu, her hangi bir oyun scriptinin özelliklerinden bulabilirsin.
  • 01-08-2009, 23:39:10
    #9
    select box sorunumu hallettim echo da çift tırnak kullanmam nedeniyle kod doğru çalışmıyormuş.

    söylediğin gibi bir oyun scripti yaparsam gerçekten çok şey öğrenirim. zaten kodlara bakarak bişey öğrenemiyorum, öğrenmek için mutlaka bir script yapmaya çalışmam ve bu sırada karşıma çıkan sorunların çözümünü öğrenerek kendimi geliştirmem gerekiyor.