Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: chciałabym poprawić dodatek do joomla [PHP][inne]
Forum PHP.pl > Forum > Przedszkole
-zielona-
Witam. napisałam w dziale "przedszkole" bo "żłobka" nie macie wink.gif potrzebuję porady. mam zainstalowaną joomlę 1,5, w niej mam komponent ckforms a do niego jeszcze dodatek ckforms data. ckforms data pozwala na wyświetlenie na stronie wcześniej przesłanych do bazy formularzy. ckforms data wyświetla dane w postaci przejrzystej tabelki, gdzie nagłówkiem każdej kolumny jest tytuł (opis) pola z formularza. no i tu jest problem. mam bardzo długi formularz (ok 20 pytań). jak to wszystko wyświetla się na stronie to jest po prostu bałagan. potrzebuję wyświetlić tylko dwie pierwsze kolumny z tabeli (czyli dwa pierwsze pytania z mojego formularza). szukałam w kodzie tego dodatku ale naprawdę jestem zielona. zapewne trzeba nadpisać plik. tylko jak? potrzebuję taki warunek: POKAŻ KOLUMNY TABELI=2, albo JEŚLI LICZBA KOLUMN>2 POKAŻ 2. no nie wiem... jaka to by była komenda?
peter13135
możliwe że coś w stylu
  1. SELECT * FROM tabela LIMIT 20

zamiast 20, zmień na 2, ale jak to dokładnie tam jest to nie wiem
Fifi209
@up
Co ma ograniczenie ilości pobieranych wierszy do ilości pobieranych kolumn? NIC.

@topic
Czy to jest w bazie danych? Z opisu ciężko to wywnioskować, jeżeli tak to nic prostszego jak pobrać tylko dwie kolumny.
-zielona-
Cytat(Fifi209 @ 26.05.2011, 17:00:29 ) *
Czy to jest w bazie danych? Z opisu ciężko to wywnioskować, jeżeli tak to nic prostszego jak pobrać tylko dwie kolumny.



tak! wszystkie dane są w bazie danych. piszesz, że nic prostszego ale widzisz... jakby to napisać... jestem ZIELONA! czy mogłabym liczyć na jakieś wskazówki?
Fifi209
Kurs MySQL lub manual i poczytaj jak wybrać konkretne kolumny. ;]
gac3k
Jak chcesz dwie konkretne kolumny to masz zapytanie

  1. SELECT kolumna,kolumna2 FROM tabela


czyli zamiast gwiazdki wprowadzasz konkretne kolumny, ale musiałabyś pokazać kod bo musisz wiedzieć co podmienić.
-zielona-
Cytat(gac3k @ 27.05.2011, 08:32:01 ) *
Jak chcesz dwie konkretne kolumny to masz zapytanie

  1. SELECT kolumna,kolumna2 FROM tabela


czyli zamiast gwiazdki wprowadzasz konkretne kolumny, ale musiałabyś pokazać kod bo musisz wiedzieć co podmienić.



ale że mam tu wkleić kod tego dodatku? jest dosyć długi admin mnie zabije...
przejrzałam bazę. mama tam takie pozycje:
-ckfields tam są wszystkie pola z wszystkich formularzy
-ckforms tam są tylko same tytuły formularzy
-ckforms1 dla formularzu 1 i odpowiednio 2,3 itd. tam są dane szczegółowe

w ckfields jest kolumna "ordering" przyjmuje ona wartości liczbowe które odpowiadają kolejnym polom danego formularza.
wychodzi na to że musiałabym wkleić polecenie select * from ckfields where.... no i właśnie żeby wybierało tylko te dane dla których ordering =1 lub 2.
cały dzień nad tym siedziałam (już nie chciałam wam głowy zawracać) ale nie wiem jak to zrobić.
a tu jest fragment z tego kodu:


/**
* CKForms load form data method
*
* Method is called by onPrepareContent method
*
* @param object The form name
* @return object
*/
function loadCkForm($name)
{
$db =& JFactory::getDBO();
$query = "SELECT * FROM #__ckforms where name='".$name."'";

$db->setQuery( $query );
$data = $db->loadObject();

return $data;
}

/**
* CKForms load fields data method
*
* Method is called by onPrepareContent method
*
* @param int The form id
* @return object
*/
function loadCkFormData($id,$start,$number,$sortfield,$sortdirection)
{
$db =& JFactory::getDBO();

$tn = "#__ckforms_".$id;
$query = ' SELECT c.* from '.$tn.' c where c.published = 1 ';
$query = $query .' order by '.$sortfield.' '.$sortdirection.' ';

$db->setQuery($query,$start*$number, $number);
$data = $db->loadObjectList();
//echo "*".$db->getErrorMsg()."*";

return $data;
}

/**
* CKForms load fields data method
*
* Method is called by onPrepareContent method
*
* @param int The form id
* @return object
*/
function getFormDataTotal($id)
{
$db =& JFactory::getDBO();

$tn = "#__ckforms_".$id;
$query = ' SELECT count(*) as nb from '.$tn.' c where c.published = 1 ';

$db->setQuery($query);
$data = $db->loadObject();

return $data->nb;
}

/**
* CKForms load fields data method
*
* Method is called by onPrepareContent method
*
* @param int The form id
* @return object
*/
function loadCkFormFields($id)
{
$db =& JFactory::getDBO();
$query = ' SELECT * from #__ckfields c where c.fid='.$id." and (c.frontdisplay is null or c.frontdisplay = '1') and published=1 order by ordering asc";

$db->setQuery($query);
$fields = $db->loadObjectList();

return $fields;
}

myślę że gdzieś w tym miejscu trzeba ten kod poprawić ale ja tam się nie znam... jak chcesz zobaczyć cały kod to mogę i cały wkleić ale proszę pomóż mi...
yevaud
Cytat(Fifi209 @ 26.05.2011, 17:00:29 ) *
@up
Co ma ograniczenie ilości pobieranych wierszy do ilości pobieranych kolumn? NIC.

obawiam sie ze nic, ale kolezanka "zielona" kolumnami nazywa kolejne pytania w formularzu - a to mi nie brzmi jaky chodzilo o nazwy pol/kolumny smile.gif

@zielona
sproboj zmienic linie

  1. $query = ' SELECT * from #__ckfields c where c.fid='.$id." and (c.frontdisplay is null or c.frontdisplay = '1') and published=1 order by ordering asc";

na
  1. $query = ' SELECT * from #__ckfields c where c.fid='.$id." and (c.frontdisplay is null or c.frontdisplay = '1') and published=1 limit 2 order by ordering asc";


ale najlepiej to wysuplaj chociaz te 15zl i daj to komus do roboty, ktos bedzie mial na piwo, a Ty bedziesz miala dzialajace rozwiazanie
-zielona-
yevaud tak masz rację - nie chodzi o kolumny z bazy danych a o kolumny zwracane przez dodatek który chcę zmienić. wybaczcie za zamieszanie ale ja naprawdę jestem zielona (a poza tym napisałam w dziale "przedszkole" prawda).
yevaud ten kod który proponujesz niestety nie działa... może masz rację że łatwiej byłoby zapłacić za pomoc ale jak o to pytałam to spece przynajmniej 200zł sobie krzyczeli (może widzieli że się nie znam i chcieli mnie naciągnąć, a może to rzeczywiście trudne). takiej kaski nie przeznaczę na to sad.gif

jakbyście mieli jeszcze jakieś pomysły jak to rozwiązać to będę wdzięczna, jeśli nic wam już nie przyjdzie do głowy to trudno - będzie bałagan na stronce...

dziękuję wszystkim za pomoc i naprawdę bardzo was podziwiam że odnajdujecie się w tych wszystkich kodach - mnie to przerasta...
-zielona-
SŁUCHAJCIE!!!
ZIELONA ZROBIŁA!!!

nie wiem jak ale działa tak jak chcę
napiszę rozwiązanie bo może ktoś jeszcze będzie miał taki problem
zamieniłam
$query = ' SELECT * from #__ckfields c where c.fid='.$real_id." and (c.frontdisplay is null or c.frontdisplay = '1') "
na
$query = ' SELECT * from #__ckfields c where c.fid='.$real_id." and ordering <=2 and (c.frontdisplay is null or c.frontdisplay = '1') "

dziękuję wam bo popchnęliście mnie w odpowiednim kierunku smile.gif
następnego posta napiszę jako "pomarańczowa" hehehe
tredi
Przeciez wystarczyło odznaczyc opcje "Widok Frontend" na NIE we wlasciwosciach danego pola formularza. Ja mam inny problem gdyż nie wyswietlają mi sie dane szczegółowe jak juz klikne np w tabeli na pierwszą pozycję z kolumny. A opcja wyswietl dane szczegółowe jest wlaczona bo w przeciwnym razie w ogóle sie nie podswietla. Ta sytuacja ma miejsce jak pracuje na serwerze lokalnym. Na zewnetrznym wykupionym jest ok, wiec moze cos z ustawieniami bazy danych?
-zielona-
Cytat(tredi @ 6.06.2011, 13:23:20 ) *
Przeciez wystarczyło odznaczyc opcje "Widok Frontend" na NIE we wlasciwosciach danego pola formularza. Ja mam inny problem gdyż nie wyswietlają mi sie dane szczegółowe jak juz klikne np w tabeli na pierwszą pozycję z kolumny. A opcja wyswietl dane szczegółowe jest wlaczona bo w przeciwnym razie w ogóle sie nie podswietla. Ta sytuacja ma miejsce jak pracuje na serwerze lokalnym. Na zewnetrznym wykupionym jest ok, wiec moze cos z ustawieniami bazy danych?



no nie wystarczyło bo wtedy po kliknięciu na dane szczegółowe nie wyświetlałoby się wszystko smile.gif ale ok. śmiga tak jak chciałam...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.