2016-04-04 8 views
0

MySQL veritabanı kullanan bir sitede çalışıyorum ve PHP ile kodlama yapılıyor. Giriş alanları olan bir yükleme sayfam var. Bu sayfada bir mysqli_query seçimi ile seçenekleri koymak bir açılan giriş alanı listesi var. Aynı sayfada başka bir form var. Burada kullanıcı, açılan giriş alanına da eklenecek MySQL veritabanına yeni bir öğe ekleyebilir.mysql kullanarak açılan mysql giriş sayfalarını yenileyerek aynı sayfaya yeni öğe ekleyen PHP

Benim fikrim MySQL öğelerini bir işleve seçen kodu koymak ve yeni bir öğe eklendikten sonra onu çağırmaktı, ancak işlev içinde tanımlanmamış göründüğü gibi işlev içinde bağlantı parametrelerinde sorun yaşıyorum. Belki de bağlantıyı başka bir işleve sokmalı mıyım?

Başka bir şey, sayfayı yenilemeden yukarıda yazılı olanı (açılır listeden yeni seçeneği görmek) elde etmek istiyorum. Bunu başarmak için AJAX'a ihtiyacım var mı? Şimdi, listeye yeni bir öğe eklemek için gönder düğmesine basıldığında sayfa otomatik olarak yenileniyor.

Herhangi bir yardım için teşekkür ederiz. Teşekkür ederim! sayfasında benim kod parçalarını Sorumlu

şunlardır:

//making the list for the drop down input field 
include "./shortscript/connect_to_mysqli.php"; 
$sql = mysqli_query($dblink, "SELECT DISTINCT * FROM items") or die(mysql_error()); 
$count = mysqli_num_rows($sql); 
$item_list = '<option value=""></option>'; 
if($count > 0) { 
    while ($row = mysqli_fetch_array($sql)){ 
     $item_list .= '<option value="'.$row['item_id'].'">'.$row['brand'] 
        .' '.$row['model'].' '.$row['category'].'</option>'; 
    } 
} 
mysqli_close($dblink); 

//test input function 
function test_input($link, $data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    $data = mysqli_real_escape_string($link, $data); 
    return $data; 
} 

//adding new item on the other form 
    if(isset($_POST['submit_new item'])) { 
     include "./shortscript/connect_to_mysqli.php"; 
     $brand = test_input($dblink, $_POST['brand']); 
     $model = test_input($dblink, $_POST['model']); 
     $category = test_input($dblink, $_POST['category']); 
     if($sqlAddCamera = 
      mysqli_query($dblink, "INSERT INTO items (brand, model, " 
           . "category) VALUES" 
           . "('$brand', '$model', '$category')") 
       or die(mysql_error()));  
    } 

Ve connect_to_mysqli.php dosyası arar (bu akım çalışma gerekli çözüm olmadan versiyonudur) gibi:

<?php 
//msqli connection 

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$dbname = 'xy'; 
$dblink = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) 
     or die(mysql_error()); 
mysqli_set_charset($dblink, 'utf8'); 
?> 
+1

'DISTINCT *' anlamsız bir kavramdır. – Strawberry

+0

'' İşlev içinde tanımlanmamış görünüyorlar ''- Hangi işlevde hangi parametreler var? Bu işlevi nereye çağırıyorsunuz ve parametreleri nasıl sağlıyorsunuz? Spesifik olun, bunu sizin için ayıklayamayız. “Bunu başarmak için AJAX'a ihtiyacım var mı?” - Verileri sayfayı yenilemeden sunucudan almak isterseniz, evet. – David

+1

Bu sayfa db'ye yeni bir öğe eklediğinde, bu sayfayı kendisine yönlendirebilirsiniz. * AJAX kullanmak istemiyorsanız. –

cevap

0

Kodu AJAX işlevine bölerim, böylece açılır menüyü açmak veya bir eylemi tetiklemek için her tıkladığınızda (bir öğe ekle, bir öğeyi sil ..), karşılık gelen ajax işlevini çağırır. eylem (yükle, ekle, sil ..)

+0

Evet, bir şekilde ajax ile yapacağım, teşekkürler! :) – Lumpy79

1

Sayfayı func çağırarak kendine yönlendirebilirsiniz. Böyle header():

if(isset($_POST['submit_new item'])) { 
     include "./shortscript/connect_to_mysqli.php"; 
     $brand = test_input($dblink, $_POST['brand']); 
     $model = test_input($dblink, $_POST['model']); 
     $category = test_input($dblink, $_POST['category']); 
     if($sqlAddCamera = 
      mysqli_query($dblink, "INSERT INTO items (brand, model, " 
           . "category) VALUES" 
           . "('$brand', '$model', '$category')") 
       or die(mysql_error()));  
       header("location:./filename.php"); 
    } 
  • Eğer AJAX kullanmak istemiyorsanız.
+0

Denedim, ama mükemmel bir soult olmayacak! Teşekkürler! Bunu ajax ile yapmalıyım ... – Lumpy79