PDA

Zobacz pełną wersję : zapisywanie danych z formularza z polami edytowalnymi <input> do bazy danych mysql



prostepc
21-11-2012, 16:14
Witam,


Mam następujący problem. Potrzebuję wyświetlić dane z tabeli mysql w widoku w komponencie od strony panelu administratora w joomli tak żeby były one edytowalne. Wyświetliłem je w tabeli z w polach tekstowych <input>. Tylko nie wiem jak skonstruować całość żebym mógł zapisać te dane po ewentualnej edycji pól <input> ponownie do bazy danych mysql. Może ktoś mi podpowiedzieć jak coś takiego zrobić ?

Pawelo31
21-11-2012, 16:56
która wersja joomla?

prostepc
21-11-2012, 17:28
2.5.8

pawelSafiStudio
21-11-2012, 17:37
Rozumiem, że chodzi Ci o kwestię programowania?
Tutaj masz kursy http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5
Po prawej stronie jest spis treści. Przejdź przez działy i spokojnie sobie z tym poradzisz. Jakbyś dał więcej informacji, jaki komponent, jak był pisany, opisał dokładniej problem co już zrobiłeś a czego potrzebujesz (czyli co i gdzie modyfikowałeś) to bym mógł coś więcej podpowiedzieć. Nie mniej jednak w linku, który Ci podałem będziesz miał wszystko.

Pawelo31
21-11-2012, 17:51
na forum jest temat kurs joomla (http://forum.joomla.pl/showthread.php?66748-W%C5%82asny-komponent&highlight=kurs+joomla+2)
ja też tworzę aktualnie swój komponent i czasem jeśli popełniłem gdzieś błąd wyświetla mi się biała strona zamiast pokazać w którym miejscu występuje błąd
Włączenie funkcji Analiza systemu w Konfiguracji nic nie daje

pawelSafiStudio
21-11-2012, 18:08
Ja korzystam z XDebug. Wówczas będziesz wiedział co powoduje błąd. Polecam.

Pawelo31
21-11-2012, 21:33
a jak się instaluje? Mam php 5.2.6 Pobrałem plik ze strony http://xdebug.org/download.php
umieściłem w kat C:\xampp\php\ext\
dodałem linie do php\php.ini - zend_extension_ts="C:\xampp\php\ext\php_xdebug-2.2.1-5.2-vc9-nts.dll"
uruchomiłem serwer. Robię jakiś błąd i nadal biała strona

palyga007
21-11-2012, 21:37
Włączenie funkcji Analiza systemu w Konfiguracji nic nie daje

a w php.ini masz: display_errors na "on"?

Pawelo31
21-11-2012, 23:20
włączone

pawelSafiStudio
22-11-2012, 08:09
A spróbuj napisać jakiś prosty skrypt i zrób w nim błąd (nie chodzi o Joomla! tylko o skrypt stand alone). Czy wówczas wyświetlają Ci się błędy?

prostepc
22-11-2012, 10:38
Jeśli chodzi o mój skrypt to wygląda sprawa następująco. Zbudowałem komponent na podstawie tutoriala z bloga który już tu chyba był podawany, jedyny który jest po polsku. Jestem na etapie że chcę zrobić możliwośc ładowania zawartości całej tabeli z bazy danych to pól formularza umożliwiających edycję wartości i po edycji tych pól chce mieć możliwość nadpisania tych danych z powrotem do tabeli bazy danych z której zostały odczytane. Umiem wyświetlić dane z bazy danych używając napisanego przez siebie zapytania do bazy i wyświetlić je w w tabeli z polami input. Zatrzymałem się na tym że nie wiem jak ugryźć czynność zapisu tych pól do bazy danych. Wyświetlone jest np 100 wierszy tabeli z bazy danych i umieszczone odpowiednio w polach input ale jak to teraz z powrotem zapisać do bazy. Czy jest to możliwe?

pawelSafiStudio
22-11-2012, 11:49
Jest możliwe. Ale ciężko cokolwiek powiedzieć, jeśli nie pokażesz kodu, który napisałeś. W sumie powinieneś zacząć od napisania komponentu, który zapisuje dane. Jak to Ci się uda, to edycja raczej już nie powinna stanowić problemu.
Tak naprawdę w J! 2.5.8 większość rzeczy dzieje się za automatu. Spójrz tutaj: http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5/Adding_backend_actions. Prosty kurs, który pokazuje jak to wszystko spiąć ze sobą. Twórz back end wg tego schematu.

prostepc
22-11-2012, 12:30
aha rozumiem że muszę wrzucić kod który napisałem żeby ktoś mógł mi powiedzieć co jest nie tak. Ale tego jest dużo i wyświetla mi już dane z tabeli tylko sama kwestia zapisu ich ponownie do bazy mi została

pawelSafiStudio
22-11-2012, 13:07
Nie sądzę, żeby ktoś chciał śledzić cały komponent. Jak programista powinieneś mieć chociaż domysły co może działać źle i pokazać ten kod. Jeśli kompletnie nie wiesz co jest nie tak, to przestudiuj to co Ci wysłałem wyżej. Napisz prosty komponent i powinieneś już rozpoznać przyczynę błędu, a bynajmniej domyślać się co może powodować błąd/brak zapisu.

prostepc
22-11-2012, 14:21
no właśnie nie wiem od czego tu zacząć z tym zapisem danych. Ale czytam po kolei to co mi wkleiłeś więc może w końcu dojdę jak zapisać taki duży pakiet danych do bazy z joomli

pawelSafiStudio
22-11-2012, 14:32
Jeśli naprawdę nie wiesz od czego zacząć, to czytaj o początku ten kurs i rób to co w nim piszą. Wówczas poznasz strukturę komponentów i będzie Ci łatwiej w przyszłości.

prostepc
23-11-2012, 12:58
Zatrzymałem się na tym jak za pomocą przycisku zapisz w panelu komponentu po stronie administratora zapisać dane zawarte we polach zawartych w polach <input>.

W jednym z widoków mam taki kod mniej więcej:


$serwer ="nazwa_serwera";
$user="nazwa_uzytkownika";
$haslo="hasło_do_serwera";

$zapytanie=mysql_connect(serwer,user,hasło);

$zapytanie = "Select * from nazwa_tabeli ";
$rezultat= mysql_query($zapytanie);
while($row = mysql_fetch_array($rezultat))
{
echo("<table>
<tr>
<td><input name=\"zmienna1\" value=\"".$row['nazwa komorki z zapytania'].\" ></td><td></td><td> <input name=\"zmienna2\" value=\"".$row['nazwa komorki z zapytania']."\" ></d>
</tr>

</table >");

}

?>
kod działa poprawnie wyświetlając mi dane w jednym z widoków komponentu.
To tylko przykład kodu który mi działa wyświetla dane odpowiednio. Problem jest w tym że po wyświetleniu takim danych z bazy w polach<input> mogę te wartości edytować. jednak nie wiem jak zabrać sie do tego żeby tak wyświetlone dane z bazy np 60 wierszy z bazy danych ponownie zapisać do bazy przez przycisk np zapisz

pawelSafiStudio
23-11-2012, 13:02
Ok, zapoznaj się z tym co Ci wysłałem wyżej. Zajrzałeś do tego w ogóle? Dlaczego nie korzystasz z tego co Ci daje Joomla! tylko piszesz wszystko strukturalnie ? Niestety ja Ci dalej nie pomogę dopóki nie zaczniesz pisać komopnentów Joomla! zgodnie z API.

prostepc
23-11-2012, 13:49
mam wszystko napisane według tego jak się pisze w modelu MVC tylko ten kawałek napisałem tak strukturalnie bo nie mogłem dojść do tego jak to wyświetlać. Ale mówisz że jak zrobię to tak jak powinno mi wyświetlać w tym API joomli z polami jak w innych dodatkach to sama mi będzie bazę joomla updatować przyciskiem zapisz?

pawelSafiStudio
23-11-2012, 13:52
Tak. Zapis będzie robił się automatycznie. Dlatego lepiej pisać zgodnie z API Joomla!. Duża oszczędność czasu i kod jest bardziej przejrzysty.

prostepc
23-11-2012, 14:00
no właśnie mam problem z ogarnięciem tego jak to wyświetlać w tym API. Pisze widok , pisze model i potem się zacinam :(

pawelSafiStudio
23-11-2012, 14:17
Niestety nie wiem jak Ci mam bardziej pomóc. Ja swój pierwszy komponent pisałem właśnie przy pomocy tej dokumentacji. Na spokojnie prześledź kod, zobacz jak są zbudowane parenty i analizuj kod. Z czasem złapiesz jak to działa i pisanie komponentów stanie się przyjemnością.

prostepc
23-11-2012, 14:28
a jeśli chodzi mi tylko o stronę administratora to muszę też pisać i umieszczać w paczce też stronę frontowa ? czy one są jakoś powiązane. Chodzi mi o to że komponent jest z przeznaczeniem do obsługi danych tylko od astrony administracyjnej

pawelSafiStudio
23-11-2012, 14:32
Nie musisz dołączać paczki frontowej.

prostepc
23-11-2012, 16:40
czyli całą zawartość bazy mam w tym momencie wyświetlać z pomocą funkcji z API joomli w pliku default_body.php tak ?

pawelSafiStudio
23-11-2012, 19:19
A skąd masz plik default_body.php ?