(PHP ve MySQL) sütunlar gibi satırları davranın

2 Cevap php

PHP ve üzerinde çalışıyorum MySQL tabanlı web sitesi. Ben siteyi yönetmek için farklı ayarlar girebilirsiniz yönetim panelinde kurulum için 'Ayarlar' sayfasını çalışıyorum. Ayarlar gereksinimlerine bağlı olarak, 100 kadar (veya daha fazla) arasında olabilir. Peki yerine (ve ben gelecekte daha fazla sütun eklemek için varsa artış) 100 sütun yapma, ben satır bilge biçiminde verileri saklamak ve sütunlar onu getiriliyor ediyorsam gibi değerleri almak istiyorum.

REFERENCE:

Ben en popüler bloglama aracı 'Wordpress' böyle özelliği benzer bir gerçek hayat uygulaması bulundu. Başvuru için, ben bahsediyorum 'wp_options' tablodur. (Yanılmıyorum lütfen beni düzeltin)

EXAMPLE:

İşte ne (ve neden) Ben bu şekilde yapmak için çalışıyorum hızlı bir örnek:

--Table settings

P.KEY   option_name      option_value
1       site_name        XYZ site inc.
2       siteurl          http://www.xyz.com
3       slogan           Welcome to my XYZ site
4       admin_email      admin@xyz.com
5       mailserver_url   mail.xyz.com
6       mailserver_port  23
..... etc.

Yukarıda gördüğünüz gibi, ben çok az seçenek listeledik ve bunların sayısı giderek artmaktadır. (Sadece kayıtlar için, Wordpress benim montaj wp_options tablodaki 902 satır var ve ben herhangi bir yinelenen seçenek_adı görmedim). Bu yüzden ben ayarları büyümesini karşılamak için Wordpress gibi aynı çalışma prensibini uygulamak eğer ben de yoldaydım his var. Ben DB tüm ayarları kaydetmek kez, ben tüm ayarları almak ve girişleri DB var hangi formda ilgili alanları doldurmak istiyorum o kadar da ben yapmak istiyorum.

ONE OF MY CODE TRIALS:

--
-- Table structure for table `settings`
--

CREATE TABLE IF NOT EXISTS `settings` (
  `set_id` tinyint(3) NOT NULL auto_increment,
  `option_name` varchar(255) NOT NULL,
  `option_value` varchar(255) NOT NULL,
  PRIMARY KEY  (`set_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Dumping data for table `settings`
--

INSERT INTO `settings` (`set_id`, `option_name`, `option_value`) VALUES
(1, 'site_name', 'XYZ site inc.'),
(2, 'slogan', 'Welcome to my XYZ site');

$result = mysql_query("SELECT option_name, option_value FROM settings");
$defaults = array('option_name', 'option_value');


while( list($n, $v) = mysql_fetch_array($result) )
{
 $defaults['option_name'] .= $n;
 $defaults['option_value'] .= $v;
}

echo  $defaults['option_name'].'---'.$defaults['option_value'].'<br />';

//The above code gives me the following Output:
//site_nameslogan---XYZ site inc.Welcome to my XYZ site

Ben yukarıdaki sorgu çalıştırdığınızda, ben de diyor 2 PHP Uyarılar alırsınız:

Undefined index: option_name

Undefined index: option_value

Ben PHP code başarıyla seçenekleri almak ve de Undefined index sorunları ortadan kaldırmak bana gösterebilir misin herhangi bir yanıt seviniriz. Ben daha önce de belirttiğim gibi, Ayrıca, ben tüm mevcut ayarlarını almak ve gelecek ayarları sayfasını ziyaret ettiğinizde veri depolama sonra, formda ilgili alanları doldurmak istiyor.

Şimdiden teşekkürler tüm dışarı uçmak.

2 Cevap

PHP size $defaults['option_name'] ve .= operasyonda kullanılan önce $defaults['option_value'] başlatıldı değil çünkü uyarı verir.

Dolayısıyla, sadece koymak

$defaults['option_name'] = '';
$defaults['option_value'] = '';

döngü ve uyarı gidecek önce.

Kodun geri kalan her ayar benzersiz bir adı olacak beri tüm set_id sütunu olması gerekmez rağmen, tamamen doğru olduğunu, bu adı (option_name sütun) kullanılabilir olarak birincil anahtar.

Eğer kod geliştirmek için başka bir şey, bu yüzden gibi, $defaults farklı kullanmaktır

$defaults[$n] = $v;

Sonra iki büyük dizeleri ile bakmadan kendi her ayarını kullanabilirsiniz.

$site_url = $defaults['site_url'];
foreach ($defaults as $name => $value) {
   echo $name, ' = ', $value, '<br>';
}

Bu hile yapmak gerekir:

$defaults = array('option_name' => array( ), 'option_value' => array( ) );

while( list($n, $v) = mysql_fetch_array($result) )
{
 $defaults['option_name'][] = $n;
 $defaults['option_value'][] = $v;
}

Sonra görünümünde üzerinde yinelemek $defaults['option_name'] ve $defaults['option_value']