• 01-06-2021, 23:34:18
    #1
    Arkadaşlar tekrardan merhabalar. PHP de biraz yeniyim. PDO ile mysql den aşağıdaki kodla tüm verileri çekebiliyorum ama ben siteadi.com/sorgu.php?id=1 linkine gittiğimde sadece id si 1 olan satırın verilerin gelmesini istiyorum. Bunu bu kodlarda nasıl bir değişiklik yaparak yapabilirim acaba?

    Aslında dışarıdan qr kodla id ye göre siteye yönlendireceğim kişiler direk o id sayesinde kendilerine ait bilgileri görebilsinler istiyorum.

    Şu anki kodlar şu şekilde;
    <?php
    include("databaseconnection.php");
    
    $sorgu=$vt->prepare('SELECT *FROM sorgu');
    $sorgu->execute();
    $sorgulist=$sorgu-> fetchAll(PDO::FETCH_OBJ);
    
    ?>
    
    <!doctype html>
    <html lang="tr">
    <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
    <title>Teknik Servis Dökümü</title>
    </head>
    <body>
    
    <div class="container">
    <div class="row justify-content-center">
    <div class="col">
    <table class="table table-bordered table-striped table-dark">
    <tr>
    <td>ID</td>
    <td>Ad</td>
    <td>Şehir</td>
    <td>E-Posta</td>
    <td>Sil</td>
    <td>Düzenle</td>
    </tr>
    
    <?php
    foreach($sorgulist as $sonuclar){?>
    
    <tr>
    <td><?= $sonuclar->id ?></td>
    <td><?= $sonuclar->adisoyadi ?></td>
    <td><?= $sonuclar->gelis-tarihi ?></td>
    <td><?= $sonuclar->teslim-tarihi ?></td>
    <td><a href="#" class="btn btn-danger">Sil</a></td>
    <td><a href="#" class="btn btn-primary">Güncelle</a></td>
    </tr>
    
    <?php } ?>
    
    </table>
    </div>
    </div>
    </div>
    
    
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    </body>
    </html>
  • 01-06-2021, 23:35:42
    #2
    $cek = $db->query("SELECT * FROM uye WHERE id = 1 LIMIT 1")->fetch(PDO::FETCH_ASSOC);
  • 01-06-2021, 23:39:27
    #3
    Sayim adlı üyeden alıntı: mesajı görüntüle
    $cek = $db->query("SELECT * FROM uye WHERE id = 1 LIMIT 1")->fetch(PDO::FETCH_ASSOC);
    hocam öncelikle ilginiz için teşekkür ederim ama bu direkt id si 1 olan satırı çekmeyecekmi? yoksa siteadi.com/sorgu.php?id=2 sorgusu geldiğide id si 2 olan satırı çeker mi? Bir de bu kodla birlike benim kodlarımı düzenlememde de yardımcı olabilir misiniz?
  • 01-06-2021, 23:40:48
    #4
    $cek = $vt->query("SELECT * FROM uye WHERE id = '{$_GET['id']}' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
  • 01-06-2021, 23:41:59
    #5
    En başta veritabanı sorgusu yaptığın yer ile aşağıdaki kodları değiştir.
    $sorgu=$vt->prepare("SELECT * from sorgu where id=:id");
    $sorgu->execute(array(
      'id' => $_GET['id']
      ));
    $sorgucek=$sorgu->fetch(PDO::FETCH_ASSOC);
    Sonra çekmek istediğin veriyi "" echo $sorucek['çekilecek verinin veritabanı ismi'} "" ile çekebilirsin. Foreach kullanmana gerek yok.
  • 01-06-2021, 23:42:42
    #6
    [COLOR=#D9DAE9][FONT=consolas]include("databaseconnection.php");[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas] $gelenid = $_GET['id'];[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]$sorgu=$vt->prepare('SELECT *FROM sorgu [COLOR=#D9DAE9][FONT=Open Sans]WHERE id=:idm[/FONT][/COLOR]');[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]$sorgu->execute(array([/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]'[COLOR=#D9DAE9][FONT=Open Sans]idm[/FONT][/COLOR] '=>[COLOR=#D9DAE9][FONT=consolas]$gelenid[/FONT][/COLOR] [/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]));[/FONT][/COLOR]
    
    [COLOR=#D9DAE9][FONT=consolas]$sorgulist=$sorgu-> fetchAll(PDO::FETCH_OBJ);[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=Open Sans][/FONT][/COLOR]


    Eğer GET ile bir ID gelmezse kullanıcıyı yönlendirmek için de şu kodları kullanabilirsiniz;

    if(isset($_GET['id'])){
    [COLOR=#D9DAE9][FONT=consolas]include("databaseconnection.php");[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas] $gelenid = $_GET['id'];[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]$sorgu=$vt->prepare('SELECT *FROM sorgu [COLOR=#D9DAE9][FONT=Open Sans]WHERE id=:idm[/FONT][/COLOR]');[/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]$sorgu->execute(array([/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]'[COLOR=#D9DAE9][FONT=Open Sans]idm[/FONT][/COLOR] '=>[COLOR=#D9DAE9][FONT=consolas]$gelenid[/FONT][/COLOR] [/FONT][/COLOR]
    [COLOR=#D9DAE9][FONT=consolas]));[/FONT][/COLOR]
    
    [COLOR=#D9DAE9][FONT=consolas]$sorgulist=$sorgu-> fetchAll(PDO::FETCH_OBJ);[/FONT][/COLOR]
    }
    else{
    header("location: index.php");
    }
    [COLOR=#D9DAE9][FONT=Open Sans][/FONT][/COLOR]
  • 01-06-2021, 23:45:20
    #7
    bu şekilde yaparsanız güvenlik açığı oluşur, adres satırından id manuel olarak değiştirilirse farklı kişilere ait bilgilere ulaşırlar, id değerini şifreleyin
  • 01-06-2021, 23:49:18
    #8
    Bknz: PDO Dersleri
  • 02-06-2021, 00:00:26
    #9
    kizilsn adlı üyeden alıntı: mesajı görüntüle
    En başta veritabanı sorgusu yaptığın yer ile aşağıdaki kodları değiştir.
    $sorgu=$vt->prepare("SELECT * from sorgu where id=:id");
    $sorgu->execute(array(
      'id' => $_GET['id']
      ));
    $sorgucek=$sorgu->fetch(PDO::FETCH_ASSOC);
    Sonra çekmek istediğin veriyi "" echo $sorucek['çekilecek verinin veritabanı ismi'} "" ile çekebilirsin. Foreach kullanmana gerek yok.
    hocam dediğinizi şu şekilde uyguladım doğrumu ama çalıştıramadığım kesin )
    <?php
    include("databaseconnection.php");
    ?>
    <?php
    $sorgu=$vt->prepare("SELECT * from sorgu where id=:id");
    $sorgu->execute(array('id' => $_GET['id']));
    $sorgucek=$sorgu->fetch(PDO::FETCH_ASSOC);
    
    ?>
    
    <!doctype html>
    <html lang="tr">
    <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
    <title>Teknik Servis Dökümü</title>
    </head>
    <body>
    
    <div class="container">
    <div class="row justify-content-center">
    <div class="col">
    <table class="table table-bordered table-striped table-dark">
    <tr>
    <td>ID</td>
    <td>Müşteri Adı Soyadı</td>
    <td>İşlem No</td>
    <td>Cihaz Geliş Tarihi</td>
    <td>Tahmini Teslimat Tarihi</td>
    <td>Cihazın Markası</td>
    <td>Cihazın Modeli</td>
    <td>Cihaz Imei No</td>
    <td>Müşteri Şikayeti</td>
    <td>Öngörülen Tahmini Ücret</td>
    <td>Ödeme Durumu</td>
    <td>İşlem Durumu</td>
    </tr>
    
    
    
    <tr>
    <td><? echo $sorgucek['id'] ?></td>
    <td><? echo $sorgucek['adisoyadi'] ?></td>
    <td><? echo $sorgucek['islemno'] ?></td>
    <td><? echo $sorgucek['gelistarihi'] ?></td>
    <td><? echo $sorgucek['teslimtarihi'] ?></td>
    <td><? echo $sorgucek['cihazmarka'] ?></td>
    <td><? echo $sorgucek['cihazmodel'] ?></td>
    <td><? echo $sorgucek['imei'] ?></td>
    <td><? echo $sorgucek['sikayet'] ?></td>
    <td><? echo $sorgucek['ucret'] ?></td>
    <td><? echo $sorgucek['odemedurumu'] ?></td>
    <td><? echo $sorgucek['islemdurumu'] ?></td>
    </tr>
    
    <?php } ?>
    
    </table>
    </div>
    </div>
    </div>
    
    
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    </body>
    </html>