Drupal içinde özel PHP çağırıyor

2 Cevap php

Drupal sürümü 6.12

Ben kimin giriş formatı PHP bir sayfa var.

Ben sadece bir veritabanı tablosunu güncelleştirmek istiyorum. SQL kod db_query için çok karmaşık görünüyor. Ben db_query iş yapmak veremezsiniz ya da çalışmak gibi görünüyor php dahil yok ne "Body" içine özel php kod bırakarak gelmez. Ben Drupal içinde aşağıdaki kod çalışması konusunda herhangi bir tavsiye?

İşte biz vücutta koymak kodudur. Ben bir PHP dosyası oluşturma ve sadece çok INCLUDE deyimi ile PHP dosyasını dahil çalıştı.

Ben PHP hatasız olduğunu biliyorum. o Drupal kullanmak olmayan bir siteden alınmıştır!

<?php

 if( isset( $_GET['file'] ) )
 {
   $fileno    = $_GET['file'];
   $client = $_POST["Client"];

   $DBLink = pg_connect("host=XXXX dbname=XXXX user=XXX password=XXXX" );

   $sql = "update 
           webform_submitted_data sd set data = 'A' 
           where
           sd.nid = '27' and
           sd.cid = (select wc.cid from webform_component wc where wc.nid = sd.nid and wc.form_key = 'status') and
           sd.sid = (select wd.sid from webform_submitted_data wd, webform_component wc
                   where wc.nid = sd.nid and wc.form_key = 'your_file_' and wd.nid = wc.nid and
            wd.data = '$fileno');"

if( ! pg_query($DBLink, $sql) )
{
  print( "Database Connection Failure: " . pg_last_error($DBLink));
  exit;
}
else
{
  print "File: $fileno is now Assigned to $client";
}

pg_close($DBLink);
}

?>

Ben de aşağıdaki kodu görmek, ya da hiçbir şans ile veritabanına bir güncelleştirme göndermek için Drupal API'lerini arama çalıştı. Ben aslında vazgeçmeden ve yukarıdaki kodu denemeden önce ilk bu yöntemi denedim.

Ben de db_query iki sürümünü denedik. Aşağıda gördüğünüz bir ve ben $ sql dizesi $ fileno ile% s değiştirildi ve db_query ($ sql) denilen bir.

<?php

 if( isset( $_GET['file'] ) )
 {
   $fileno    = $_GET['file'];
   $client = $_POST["Client"];

   $sql = "update 
             webform_submitted_data sd set data = 'A' 
           where
             sd.nid = '27' and
             sd.cid = (select wc.cid from webform_component wc where wc.nid = sd.nid and wc.form_key = 'status') and
             sd.sid = (select wd.sid from webform_submitted_data wd, webform_component wc
                        where wc.nid = sd.nid and wc.form_key = 'your_file_' and wd.nid = wc.nid and
                        wd.data = '%s');"

   db_query($sql, $fileno);
   print "File: $fileno is now Assigned to $client";
}

?>

Ben de tam giriş modunda, günlüğü bağlantıları ve tüm tablolarda benim veritabanını koymak ve ne sorgu veritabanı vurur. Ben PHP INCLUDE ise ilk durumda, ben sadece boş / beyaz ekran olsun - PHP kodu çalışıyor ancak drupal çalıştırmadan önce kodu ayrıştırma gibi oluyor. Ben sadece kod AS-IS çalıştırmak istiyorum.

Ayrıca, gerçekten drupal modülleri oluşturmak ilgilenmiyorum. Drupal customizattion bir sürü olmadan bu işi yapmak mümkün ise, ben peşindeyim. Biz daha stratejik hedef üzerinde çalışırken bu kısa vadeli bir taktik düzeltme ...

Tüm teşekkürler!

2 Cevap

Sorular ve düşünceler bir çift:

  1. Ekranda görünen herhangi bir veritabanı hataları var mı? Bir hata oluştu sonra genellikle içeriğin üstündeki kırmızı 'uyarı' mesajı kutularında görünür.
  2. Yerine webform_component kullanıyor olmalıdır {webform_component}. Tüm tablo adları parantez içinde olmalıdır.
  3. Bir form girişi verileri kullanmak için uygun yolu (veri bir düğüm parçası ise) bir düğüm için bir form veya $node için $form_values[] kullanmaktır. Eğer formumuzu modülü kullanıyorsanız, ayrıca, bir Webform sunulması adımları ekleyebilirsiniz. Bazı öğreticiler here vardır.
  4. Son php aslında ulaşmak yok ise if( isset( $_GET['file'] ) )? Drupal veritabanı hataları hakkında ağır şikayet edecek. Eğer bir hata iletisi yoksa Yani, sorgu idam (o adıma asla got) veya (amaçlanan etkisi ile ama belki de değil) temiz idam değildi anlamına gelir.

Benim durumumda, doğrudan SQL (ayıklanmış ve parametrelenmişse) giriyoruz çünkü drupal için çok karmaşık olmuştur sorgular var olmamıştır.

Tüm modül oluşturma Öncelikle Drupal biliyorum en az zaman, oldukça hızlı yapılabilir. Böyle düğümleri veya şablonlar kod genellikle kötü bir fikir olduğu gibi, bunu considder gerekir.

Sizin kod ama olsa kırmak için yeterince büyük bir şey olarak drupal API kusurları bir çok şey var. Sen ne yapıyorsun yazmayın, ama almak ve sonrası veri hem de almaya çalışın, bu mümkün değil. Eğer blok yürütülür değil yani eğer drupal gibi düşünüyorum params büyük olasılıkla size get yok.

Eğer, örneğin kod "çalıştırmak" için ne yazdı Eğer ziyaret ettiğiniz URL, modül vb kullanabilirsiniz. Sadece SQL ve daha fazla bir şey çalıştırmak istiyorsanız, sizin db yapabilirsiniz. Peki tam olarak ne yapmaya çalışıyorsun?