2016-03-30 12 views
-1

Veritabanından INSERT çalışıyorum ve aynı zamanda DELETE veri çalışıyorum. Bir üyenin kimliğiyle ilgili kimliğini her URL'de görüntülediğimde, bu üyeyi KABUL ETTİĞİ bilgisi ile birlikte bir buttom/link olacaktır. Ve eğer yönetici KABUL düğmesine/bağlantısına tıklarsa, bu üye artık requests (ve burada DELETE yapılması gereken yer) tablosunda olacaktır ve aynı zamanda onun detayları veya verileri "üyeler" denilen başka bir tabloya eklenir. ". Ama KABUL'e tıkladığımda, yalnızca onay için javascript'i onaylar ve "Evet" i tıkladığımda hiçbir şey olmuyor, sadece beni pendingRequests.php'ye götürür. Kodumu burada paylaşırım. Veritabanından INSERT ve DELETE veriyi kullanarak bir bağlantıyı/düğmeyi tıklayarak ID ile MYSQLI

Bu

görünümde gelen üyesi ayrıntıları için pendingRequests.php

<a href="/test/admin/view_request.php?view_id=<?php echo $row['id']; ?>" >VIEW</a> 

tıklanma link Ve üyesinin verileri görüntüler budur: view_requests.php

<?php 
    include ('dbcontroller.php'); 
    if(isset($_GET['view_id'])) 
    { 
     $id=$_GET['view_id']; 
     $sql = mysqli_query($conn, "SELECT * from requests where id='$id'"); 
     $row = mysqli_fetch_array($sql); 
    ?> 

    ID:  <?php echo $row['id']; ?> 

    <div class=" col-md-9 col-lg-9 "> 
     <table class="table table-user-information"> 
      <tbody> 
       <tr> 
        <td><h4><b>Profile Info</b></h4></td> 

       </tr> 
       <tr> 
        <td>Name:</td> 
        <td><?php echo $row['firstname']; ?> <?php echo $row['MI']; ?> <?php echo $row['lastname']; ?></td> 

       </tr> 
       <tr> 
        <td>Email-address:</td> 
        <td><?php echo $row['email']; ?></td> 

       </tr> 
<tr> 
       <td>Gender:</td> 
       <td><?php echo $row['gender']; ?></td> 

      </tr> 
      <tr> 
       <td>Status:</td> 
       <td><?php echo $row['status']; ?></td> 

      </tr> 
      <tr> 
       <td>Date of Birth:</td> 
       <td><?php echo $row['bday']; ?></td> 

      </tr> 
      <tr> 
       <td>Contact Number:</td> 
       <td><?php echo $row['contactno']; ?></td> 

      </tr> 

      <tr> 
       <td><a href="javascript:view_id(<?php echo $row['id']; ?>) ">ACCEPT</a></td> 
       <td>DECLINE</td> 
      </tr> 
<?php 
} 
$conn->close(); 
?> 
</tbody> 
    </table>   

</div> 
<script type="text/javascript"> 
    function view_id(id) 
    { 
     if(confirm('Are you sure you want to accept this member request? ')) 
     { 
     window.location='acceptRequest.php?view_id=='+view_id; 

     } 
    } 
</script> 

Bu, yöneticinin "ACCEPT" u tıklattığı ve "istekleri" tablosundan o kimliğe sahip olan üyenin sileceği bağlantısı/düğmesi kodudur ve üyenin bilgileri "üyeler" e eklenir. tablo.

<a href="javascript:view_id(<?php echo $row['id']; ?>) ">ACCEPT</a> 

Ve bu benim acceptRequest.php olduğunu kod

<?php 
include('dbcontroller.php'); 
if(isset($_GET['view_id'])) 
{ 
    $sql = "SELECT * FROM requests WHERE id=".$_GET['view_id']; 

    $firstname = $row['firstname']; 
    $MI = $row['MI'];  
    $lastname = $row['lastname']; 
    $gender = $row['gender']; 
    $status = $row['status']; 
    $maiden = $row['maiden']; 
    $bday = $row['bday']; 
    $contactno = $row['contactno']; 
    $email = $row['email']; 

    mysqli_query($conn, "INSERT INTO members(id,'$firstname','$MI','$lastname','$gender','$status','$bday','$contactno','$email')"); 

    mysqli_query($conn, "DELETE FROM requests WHERE id=".$_GET['view_id']); 
    header("Location: pendingrequests.php"); 
} 
?> 
+0

+ VIEW_ID;' 'view_id' 'acceptRequest.php VIEW_ID ==?' Parametre her zaman boş olacak – slash197

+0

işlevinizde "view_id" yerine "id" kullanın. –

+0

Üzgünüm, ama neden her zaman boş olacak? @ = 'AcceptRequest.php VIEW_ID =?' + VIEW_ID slash197 – louie

cevap

0

İşlevin view_id yerine id parametre geçmesi gerekiyor. Ayrıca, URL'niz == adresinde bir yazım hatası var. Kişisel kod aşağıdaki gibi görünmelidir:

function view_id(id) 
    { 
     if(confirm('Are you sure you want to accept this member request? ')) 
     { 
     window.location='acceptRequest.php?view_id='+id; 

     } 
    } 

Sen members(id, yakın SQL bir yazım hatası var gibi. SQL'inizde gerekli olan sütunlardan da bahsetmek iyi bir uygulamadır. Kimlik yuvasını bırakabilir ve MySQL'in artımı kendi başına yapmasına izin verebilirsiniz. Ayrıca, güvenli tarafta kalmak için eğer açıklamada PHP kodu koymak gerekir: bu `window.location = göre

$firstname = $row['firstname']; 
$MI = $row['MI'];  
$lastname = $row['lastname']; 
$gender = $row['gender']; 
$status = $row['status']; 
$maiden = $row['maiden']; 
$bday = $row['bday']; 
$contactno = $row['contactno']; 
$email = $row['email'];  

$insert_sql=mysqli_query($conn, "INSERT INTO members (firstname, MI, lastname, gender, status, bday, contactno, email) 
             VALUES ('$firstname','$MI','$lastname','$gender','$status','$bday','$contactno','$email')"); 

if($insert_sql){ 
    mysqli_query($conn, "DELETE FROM requests WHERE id=".$_GET['view_id']); 
    header("Location: pendingrequests.php"); 
} 
+1

, oradaki diğer akıllı kişi ile aynı fikri vardı. Sizler deha! teşekkür ederim! :) – louie

+0

Merhaba efendim, yine ben. idk ne olur, ancak isim, iletişim no, vb. gibi veriler üye tablosuna eklenmez. Sanırım bir süre önce yaptım ama yanılmışım, sadece bu tablodaki ib id olarak arttırılıyor ama isim alanlarının değerleri eklenmiyor. Seninle aynı şifreye sahibim. – louie

+0

@louie Cevaplarımı güncelledim – user3284463

0

Bu javascript kodudur:

<script type="text/javascript"> 
    function view_id(id) 
    { 
     if(confirm('Are you sure you want to accept this member request? ')) 
     { 
     window.location='acceptRequest.php?view_id=='+view_id; 

     } 
    } 
</script> 

Bu işlevin içine parametre geçirmek ve onu id denir ama Bu betiğin gövdesinde, view_id

olarak adlandırılan değişken olmayan bir değişken kullanırsınız

Değişim

window.location='acceptRequest.php?view_id=='+view_id; 

için

window.location='acceptRequest.php?view_id='+id; 

Ayrıca ben bu çizgide = için == değişti dikkat

Ayrıca bu ifade yanlış

mysqli_query($conn, "INSERT INTO members 
        (id,'$firstname','$MI','$lastname','$gender', 
        '$status','$bday','$contactno','$email')"); 
Gidiyorum öneririm

id, bir auto increment sütunu gibi çıkacaktır, otomatik olarak oluşturulacak ve bir değer iletmeniz gerekmez. Eğer $id değil id kullanmak sorgu sözdizimi $id adında bir değişken oluşturmak ve değiştirmek gerekecektir bir auto increment sütun değildir Alternatif eğer

mysqli_query($conn, "INSERT INTO members VALUES 
        ('$firstname','$MI','$lastname','$gender', 
        '$status','$bday','$contactno','$email')"); 

.Hala çalışmıyorsa

Tamam böyle mysqli bir erro mesajı almak gerekir. Aslında her zaman mysqli api'ye yapılan tüm aramaların durumunu kontrol etmelisiniz.

$result = mysqli_query($conn, "INSERT INTO members VALUES 
        ('$firstname','$MI','$lastname','$gender', 
        '$status','$bday','$contactno','$email')"); 

if ($result === FALSE) { 
    echo 'Insert ERROR: ' . mysqli_error($conn); 
    exit; 
} 

Bu, sorgunuzda hatanın ne olduğunu sayfaya geri bildirmelidir.

Sana $maiden = $row['maiden']; yakalamak fark ancak sorguda kullanan yok! Bu sütun bir değer gerektirecek şekilde ayarlanmış olabilir ve bu nedenle sorgu başarısız oluyor? Ya da bu sütunun eksik olması, maiden'u takip eden sütunların, şimdi aldıkları verilerle uyumlu olmayan sütunlara yüklenmekte olduğu anlamına gelir. Bence

en azından her zaman doğru sütun adının yüklenen doğru verileri almak için gidiyoruz bu uzun ama daha kesin sözdizimini Sonra

$result = mysqli_query($conn, "INSERT INTO members     
           (colname,colname,colname,colname, 
           colname,colname,colname,colname,) 
           VALUES 
          ('$firstname','$MI','$lastname','$gender', 
           '$status','$bday','$contactno','$email')"); 

kullanmak daha iyidir.

+0

Zaten bunu çözdüm efendim, ama yine de teşekkür ederim :) Sonunda isteklerim tablosundan siler ama Üyelerim tablosuna girmedi. – louie

+0

INSERT sorgunuz için ek çözüme bakın – RiggsFolly

+0

Evet efendim, id bir otomatik artış. Kimliği, insert sorgumdan zaten kaldırdım, ancak hala çalışmıyor. – louie