Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

W Panelu administracyjnym chcę dodać ustawienie na typie multi-select. Jak wypełnić jego pola? Wypełnienie forami, czy grupami jest domyślnie zapewnione przez skrypt. Jak wypełnić to pole innymi wartościami z bazy? Konkretnie chodzi mi o statusy z IP.Tracker.

Domyślnie w polu kodu PHP mamy:

if ($save == 1)
{
if (is_array($_POST['vd30important_statuses']))
{
	$_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
}
else
{
	$_POST['vd30important_statuses'] = '';
}

$key = 'vd30important_statuses';
}
if ($show == 1)
{
$key='vd30important_statuses[]';
}

Zapytanie o statusy to

$this->DB->build(array(
			'select'	=> 'tc.cat_id, tc.cat_title',
			'from'		=> array('tracker_categories' => 'tc'),
			'order'		=> 'tc.cat_position asc'
));
$query = $this->DB->execute();

Tylko teraz jak to połączyć? Próbowałem kilku opcji, ale w sumie już nie wiem...

  • Manager
Opublikowano
if($show == '1')
{	

	// Kod PHP wyłuskujący statusy z bazy


	// Zapisanie danych do tabeli $dropdown - można zrobić to wyżej, jednak dla jasności robię tak
	foreach($tabela as $k => $v)
	{
		$dropdown[] = array( $v[0], $v[1] );
	}

}

if ($save == 1)
{
       if (is_array($_POST['vd30important_statuses']))
       {
               $_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
       }
       else
       {
               $_POST['vd30important_statuses'] = '';
       }

       $key = 'vd30important_statuses';
}
if ($show == 1)
{
       $key='vd30important_statuses[]';
}

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano (edytowane)

Witam,

Istnieje pewna alternatywa dodania na stałe tego kodu, oto sposób:

Otwórz: admin/applications/core/modules_admin/tools/settings.php

Znajdź:

                    else if ( $r['conf_extra'] == '#show_skins#' )
                   {
                       $dropdown = $this->registry->output->generateSkinDropdown();
                   }

Dodaj poniżej:

                    else if ( $r['conf_extra'] == '#show_statuses#' )
                   {
                       $this->DB->build( array( 'select' => '*', 'from' => 'tracker', 'order' => 'status ASC' ) );
                       $this->DB->execute();

                       while( $row = $this->DB->fetch() )
                       {                            
                           $dropdown[] = array( $row['id'], $row['status'] );
                       }
                   }

Chociaż oglądaj dalszy kod nie sugerowałbym się moim, a zrobił jak DawPi. Dlaczego?

                    else
                   {
                       foreach( explode( "\n", $r['conf_extra'] ) as $l )
                       {
                           list ($k, $v) = explode( "=", $l );
                           if ( $k != "" and $v != "" )
                           {
                               $dropdown[] = array( trim($k), trim($v) );
                           }
                       }
                   }

Chyba wiadomo co dany kod robi, więc bez problemu można tego dokonać pisząc jego sposobem. Oczywiście mój sposób musisz poprawić do odpowiedniego zapytania, bo nie pamiętam struktury IP.Tracker.

Pozdrawiam,

Largo

Edytowane przez Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

Zapodałem poniższym kodem i powiem Wam, że jeszcze coś jest źle, bo nadal nie wyświetla listy. Pewno coś jest źle ze zmiennymi $key i $value...

if ($save == 1)
{
if (is_array($_POST['vd30important_statuses']))
{
	$_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
}
else
{
	$_POST['vd30important_statuses'] = '';
}

$key = 'vd30important_statuses';
}
if ($show == 1)
{
$this->DB->build(array(
	'select'	=> 'tc.cat_id, tc.cat_title',
	'from'		=> array('tracker_categories' => 'tc'),
	'order'		=> 'tc.cat_position asc'
));
$query = $this->DB->execute();

foreach($query as $k => $v)
{
	$dropdown[] = array($v[0], $v[1]);
}

$key = 'vd30important_statuses[]';
}

Opublikowano (edytowane)

Zapodałem poniższym kodem i powiem Wam, że jeszcze coś jest źle, bo nadal nie wyświetla listy. Pewno coś jest źle ze zmiennymi $key i $value...

if ($save == 1)
{
if (is_array($_POST['vd30important_statuses']))
{
	$_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
}
else
{
	$_POST['vd30important_statuses'] = '';
}

$key = 'vd30important_statuses';
}
if ($show == 1)
{
$this->DB->build(array(
	'select'	=> 'tc.cat_id, tc.cat_title',
	'from'		=> array('tracker_categories' => 'tc'),
	'order'		=> 'tc.cat_position asc'
));
$this->DB->execute();

while ( $row = $this->DB->fetch() )
{
	$dropdown[] = array($row, $row);
}

$key = 'vd30important_statuses[]';
}

Witaj,

A nie lepiej takie zapytanie zrobić?

$this->DB->build(array(
	'select'	=> 'cat_id, cat_title',
	'from'		=> 'tracker_categories',
	'order'		=> 'cat_position asc'
));

Po co przygotowywać zapytanie, jakbyś miał ochotę dokonać za chwilę połączenia tabel?

PS. Jak dla mnie to ten kod powinien ciutkę inaczej wyglądać:

if ($save == 1)
{
if (is_array($_POST['vd30important_statuses']))
{
	$_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
}
else
{
	$_POST['vd30important_statuses'] = '';
}

$key = 'vd30important_statuses';
}
if ($show == 1)
{
$this->DB->build(array(
	'select'	=> 'cat_id, cat_title',
	'from'		=> 'tracker_categories',
	'order'		=> 'cat_position asc'
));
$this->DB->execute();

while ( $row = $this->DB->fetch() )
{
	$dropdown[] = array($row['cat_id'], $row['cat_title']);
}

$key = 'vd30important_statuses[]';
}

Pozdrawiam,

Largo

Edytowane przez Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

A nie lepiej takie zapytanie zrobić?

$this->DB->build(array(
	'select'	=> 'cat_id, cat_title',
	'from'		=> 'tracker_categories',
	'order'		=> 'cat_position asc'
));

Po co przygotowywać zapytanie, jakbyś miał ochotę dokonać za chwilę połączenia tabel?

Racja, dzięki ;)

Udało się ;) Oto ostateczny kod:

if ($save == 1)
{
if (is_array($_POST['vd30important_statuses']))
{
	$_POST['vd30important_statuses'] = implode(',', $_POST['vd30important_statuses']);
}
else
{
	$_POST['vd30important_statuses'] = '';
}

$key = 'vd30important_statuses';
}
if ($show == 1)
{
$this->DB->build(array(
	'select'	=> 'cat_id, cat_title',
	'from'		=> 'tracker_categories',
	'order'		=> 'cat_position asc'
));

$query = $this->DB->execute();

while ($cat = $this->DB->fetch($query))
{
	$dropdown[] = array($cat['cat_id'], $cat['cat_title']);
}

$key = 'vd30important_statuses[]';
}

Temat można zamknąć ;)

Opublikowano (edytowane)

Witaj,

Uff, a ja byłem o parę sekund wcześniej :-) Tak myślałem, że bez fetch'owania wyników nie dasz rady tego robić.

PS. Nie musisz nadawać zmiennej wartości, bo pobiera on ID ostatniego zapytania i to samo funkcja fetch() :-) Może drugi plusik zyskam :-D

Pozdrawiam,

Largo

Edytowane przez Largo
  • Lubię to 1

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.