v2.5.2
Giriş yap

Veritabanından PDO ile veri güncelleme hatası

opticbey
2,585 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Veritabanından PDO ile veri güncelleme

  • Merhabalar bu hatayı alıyorum. Değişken tanımlı değil diyor sanırım ama sorunu çözemedim.

  • Kodlarım bu şekilde;

<?php include 'header.php'; ?>
<?php require_once ("baglan.php"); ?>


<?php


$id = $_GET["id"];
$sorgu = $db -> prepare("SELECT * FROM kamerastok WHERE id =:id");
$sorgu -> execute(array(":id" => $id));
$row = $sorgu -> fetch(PDO::FETCH_ASSOC);

?>


    <div class="container">
        
        
    <form action="" method="POST">
        <label>Stok Durumu</label>
        <p><input type="number" name="urunstok" class="form-control" value="<?php echo $row["urunstok"]; ?>"></p>
        <p><button type="submit" class="btn btn-primary">Güncelle</button></p>
    </form>

        
    </div>

<?php

if ($_POST) {
    $urunstok = $_POST["urunstok"];
}

    $guncelle = $db -> prepare("UPDATE kamerastok SET urunstok =:urunstok WHERE id =:id");
    $guncelle -> execute(array(":urunstok" => $urunstok, ":id" => $id));

    if ($guncelle) {
        echo "İşleminiz Başarılı";
        
    } else {
        "Hata Oluştu";
    }

?>
<br>



<?php include 'footer.php'; ?>
Cevap yaz
Cevaplar (11)
elvin
1862 gün önce

tüm session_start() ların üsten ob_start() yazın

myrioos
1862 gün önce

hocam get ile gelen bir id var unutmayalım :)

header("Location:".$_SERVER['HTTP_HOST'].'/sappguvenlik/guncelle.php?id=' . $id);
mrknowitall
1862 gün önce

Merhabalar

Normalde sizin problemin asıl cevabı bu idi ancak neden sizde çalışmıyor anlamadım

header.php de kodlarin en ustune bunuda yazin.

ob_start();


<?php
     header("Location:".$_SERVER['HTTP_HOST'].'/sappguvenlik/guncelle.php');
     exit;
?>

opticbey
1862 gün önce
  • İlginiz için çok teşekkür ederim script ile denedim kendi kendine sayfayı sürekli yeniliyor. Ben bi çaresine bakacağım artık :)
mrknowitall
1862 gün önce

O zaman en basit yontem olarak javascript ti kullanacaz :)


<?php
if (isset($_POST['guncelle'])) {
    
    $urunstok = $_POST["urunstok"];
    $id = $_POST["urun_id"];
    
    $guncelle = $db -> prepare("UPDATE kamerastok SET 
    urunstok =:urunstok 
    WHERE id =:id");
    $result=$guncelle -> execute(array("urunstok" => $urunstok, "id" => $id));

    if ($result) { ?>
        
        <script>
            location.reload(); 
        </script>
        
  <?php  } else {
        "Hata Oluştu";
    }

} ?>


opticbey
1862 gün önce

PHP nin içerisine en başlarına

ob_start();

ekledim.

Ama bu sefer aşağıdaki gibi açıyor;


- Ne yazarsam yazıyım ../ bile yazsam localhost ekliyor.
mrknowitall
1862 gün önce

Bunu deneyin

guncelle.php yi yenileyin sadece



if (isset($_POST['guncelle'])) {
    
    $urunstok = $_POST["urunstok"];
    $id = $_POST["urun_id"];
    
    $guncelle = $db -> prepare("UPDATE kamerastok SET 
    urunstok =:urunstok 
    WHERE id =:id");
    $result=$guncelle -> execute(array("urunstok" => $urunstok, "id" => $id));

    if ($result) {
        
        header("Location:".$_SERVER['HTTP_HOST'].'/sappguvenlik/guncelle.php');
        exit;
        
    } else {
        "Hata Oluştu";
    }

}
?>





opticbey
1862 gün önce
  • Teşekkürler yalnız böyle bir hata aldım :)
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sappguvenlik\header.php:1) in C:\xampp\htdocs\sappguvenlik\guncelle.php on line 26
mrknowitall
1862 gün önce

O zaman bu kodu bu sekilde degistirin :)


if (isset($_POST['guncelle'])) {
    
    $urunstok = $_POST["urunstok"];
    $id = $_POST["urun_id"];
    
    $guncelle = $db -> prepare("UPDATE kamerastok SET 
    urunstok =:urunstok 
    WHERE id =:id");
    $result=$guncelle -> execute(array("urunstok" => $urunstok, "id" => $id));

    if ($result) {
        
        header("Location:".$_SERVER['HTTP_REFERER']);
        exit;
        
    } else {
        "Hata Oluştu";
    }

}
?>


opticbey
1862 gün önce
  • Teşekkürler sorunum çözüldü.
  • Yalnız stok güncellediği zaman ekranda eski stok yazıyor. Sayfayı yenilediğimiz zaman güncel halini gösteriyor.
  • İşlemi yaptıktan sonra sayfayı nasıl yenile diyebiliriz?
mrknowitall
1862 gün önce

Merhabalar bu sekilde yaparsaniz sorun buyuk ihtimal bitmis olacak,

Guncelleme de bazi eksikleriniz olmus.



<?php include 'header.php'; ?>
<?php require_once ("baglan.php"); ?>


<?php


$id = $_GET["id"];
$sorgu = $db -> prepare("SELECT * FROM kamerastok WHERE id =:id");
$sorgu -> execute(array("id" => $id));
$row = $sorgu -> fetch(PDO::FETCH_ASSOC);


if (isset($_POST['guncelle'])) {
    
    $urunstok = $_POST["urunstok"];
    $id = $_POST["urun_id"];
    
    $guncelle = $db -> prepare("UPDATE kamerastok SET 
    urunstok =:urunstok 
    WHERE id =:id");
    $result=$guncelle -> execute(array("urunstok" => $urunstok, "id" => $id));

    if ($result) {
        echo "İşleminiz Başarılı";
        
    } else {
        "Hata Oluştu";
    }

}
?>

    <div class="container">
        
        
    <form action="" method="POST">
        <label>Stok Durumu</label>
        <p><input type="number" name="urunstok" class="form-control" value="<?php echo $row["urunstok"]; ?>"></p>
            <input type="hidden" name="urun_id" class="form-control" value="<?php echo $row["id"]; ?>">
        <p><button type="submit" name="guncelle" value="1" class="btn btn-primary">Güncelle</button></p>
    </form>

        
    </div>

<br>



<?php include 'footer.php'; ?>