PDO DB Insert işleminde hata

David M. Boren

Hectopat
Katılım
12 Haziran 2016
Mesajlar
61
Daha fazla  
Cinsiyet
Erkek
Merhabalar,
Anket modülü geliştiriyorum, IP numaralarını anketin seçeneğine göre kaydedeceğim. Atıyorum sitede 3 tane anket varsa, kullanııcı sadece 1. ankete oy verdiyse 1. anket için IP tabloma veri eklenmeli ki. Kullanıcı isterse 2 ve 3. anketlere de oy verebilsin diye. Amacım tam olarak bu yani. Ama eklemeyi yaparken nedense bir kere ekleyince 2 ve 3. anketlere de oy verilmiş gözüküyor. Bu sorunu nasıl çözerim? Yardımcı olabilir misiniz?

Anketin listelendiği ve IP'leri kaydettiğim sayfanın kaynak kodları ve IP tablosunun yapısına dair bir ekran görüntüsünü POST'un sonuna bıraktım:


PHP:
<?php include("config.php"); ?>
<?php

 
 
 
    $current_date = date("d-m-Y");     // Bugünün tarihini al
 
    $del = $db->prepare("DELETE FROM survey_ip WHERE surveyip_tarih != ?");
            $del->execute(array(
                $current_date
            ));
 
 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
 
    if ($_POST["anket-submit"]) {
 
 
                $cevap_id =$_POST["anket"];
 
        $option = $db->prepare("SELECT options_kategori FROM options WHERE options_id = ?");
        $option->execute(array($cevap_id));
        $satir=$option->fetch(PDO::FETCH_ASSOC);
 
 
        $altKategori = $satir["options_kategori"];
 
 
        $option = $db->prepare("SELECT * FROM survey WHERE survey_id = ?");
        $option->execute(array($altKategori));
        $satir=$option->fetchALL(PDO::FETCH_ASSOC);
 
    $anaKat = $satir["survey_id"];
 
 
 
         $sql = $db->prepare("SELECT surveyip_ip FROM survey_ip");
                $sql->execute(array());
                $row=$sql->fetch(PDO::FETCH_ASSOC);
  
 
            if ($row["surveyip_ip"] != $ip) {

           /*
                INSERT işlemini yapmaya çalışıyoruz, aşağıda insert başarılı mı? diye sorguluyoruz ama else kısmı çalışıyor, yani INSERT başarısız oluyor...
           */
            $query = $db->prepare("INSERT INTO survey_ip SET
            surveyip_ip = ?,
            surveyip_tarih = ?,
            surveyip_options = ?");
            $insert = $query->execute(array(
                $ip,$current_date,$anaKat
            ));
  
            if ($isnert) {
                echo "başarılı!";
            } else {
                echo "başarısız!";
            }
  
  
                $sql2 = $db->prepare("SELECT * FROM options WHERE options_id = ?");
                $sql2->execute(array($cevap_id));
                $row2=$sql2->fetch(PDO::FETCH_ASSOC);
      
                 $cevap_toplam = $row2["options_toplam"] + 1;
          
              
                $guncelle = $db->prepare("UPDATE options SET options_toplam=? WHERE options_id = ?");
                $guncelle->execute(array($cevap_toplam,$cevap_id));
      
      
                $sql2 = $db->prepare("SELECT * FROM options WHERE options_id = ?");
                $sql2->execute(array($cevap_id));
                $row2=$sql2->fetch(PDO::FETCH_ASSOC);
              
                    echo $row2["options_toplam"];
          
          
      
  
  
  
            } else {
      
                echo "Zaten daha önce bu ankete oy verdiniz! Ankate günde sadece 1 kere oy verebilirsiniz...";
      
            }
 
      
  
        }

 
 

?>


<?php

$sql = $db->prepare("SELECT * FROM survey");
$sql->execute(array());
$query=$sql->fetchALL(PDO::FETCH_ASSOC);
foreach( $query as $row ) {
$soru_id = $row["survey_id"];
 ?>
<form action="" method="POST">
    Soru: <strong><?php echo $row['survey_baslik'];  ?></strong><br />
 
 
 
    <?php

$sql1 = $db->prepare("SELECT * FROM options WHERE options_kategori = ?");
$sql1->execute(array($soru_id));
$query1=$sql1->fetchALL(PDO::FETCH_ASSOC);



foreach( $query1 as $row1 ) {
 

 ?>
 
    <input type="radio" name="anket" value="<?php echo $row1["options_id"];  ?>" />
    <?php echo $row1["options_baslik"]; ?><br />
 
    <?php
}
    ?>
    <input type="hidden" value="<?php echo $soru_id; ?>" />
    <button type="submit" name="anket-submit" value="1">Kaydet</button>
</form>
<?php } ?>

IP Tablosunun Yapısı:

Ekran Alıntısı.PNG
 
Son düzenleme:
Uyarı! Bu konu 9 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı