PDA

Zobacz pełną wersję : Czy to jest problem z cache?



gcwirko
24-07-2008, 11:38
Mam utworzoną stronę pod Joomlą. Napisałam kilka skryptów w php i podpiełam je do odpowiednich linków w menu. Ale mam taki problem: jest skrypt napisany przeze mnie, który ma za zadanie sprawdzić czy zalogowany jest administrator i jeżeli tak to: wybiera on sobie z selecta odpowiedni dzień ,wybiera z następnego selecta odpowiednią wartość i po naciśnięciu ok zapisuje wartość do bazy. Jest wszystko ok, zapisuje do bazy ale zawsze wraca mi do pierwszego dnia. Tych dni jest dużo- i jest to pewna niezręczność. Czy czegoś brakuje w skrypcie czy może w cachu trzeba coś ustawić. (Obecnie mam wyłączonego cache'a).

zwiastun
24-07-2008, 12:19
Programujesz? To przecież dobrze wiesz, że każdy skrypt można napisać dobrze i sknocić (no może poza Witaj świecie, jak się już trochę napisało). To co tutaj ktoś ma ocenić, na czuja?

wojtekkk87
25-07-2008, 23:30
pewnie zapominasz przekazać jakiegoś id, albo pole w formularzu ma inną nazwę niż ta którą pobierasz i Ci sie sypie... ale cóż my możemy pomóc bez kodu.... ?

gcwirko
26-07-2008, 09:04
Przynajmniej teraz wiem że to raczej jest w kodzie. Spróbuję wpisać input ukryty do pola daty. Nie jestem dobra w php, pierwszy raz piszę projekt w joomli. Raczej moją specjalnością jest flash. Ten projekt jest dla mnie dużym wyzwaniem

Rybik
26-07-2008, 13:41
z Twojej wypowiedzi wynika, że zapisuje poprawnie ale po wyslaniu wraca do początku, to normalne, formularz trzeba zainicjować danymi wstepnymi i moga to być dane z $_POST
rozwiązaniem jest podanie domyślnej wartości pól formularza, jeżeli wcześniej cos wysłano:
1. sprawdzić czy wysłano ->


if (isset($_POST['nazwapola'])) {
$nazwapola = htmspecialchars($_POST['nazwapola']);
// inne funkcje sprawdzajace czy wpisano to czego oczekujemy
} else {
// nasza warosc domyslna gdy człek wchodzi do formularza
$nazwapola = '5';
}

2. ustawic wartosc poczatkowa ->


<input ... value="<?php echo $nazwapola;?>"/>

* to sa absolutnie elementarne rozwiazania, celowo rozdzielam sprawdzenie od wpisania, poniważ wypadałoby jeszcze sprawdzic czy wypełnione dane spełniaja nasze kryteria, czyli poza samym isset dodatkowo sprawdzic czy to liczba z przedziału itp... jeżeli nie to ustawić pustą wartość
selecty najlepiej walidowac tablicami -> sprawdzamy czy wartosc znajduje sie w tablicy dopuszczalnych wartosci, do dobrej praktyki nalezy rowniez generowanie i walidowanie selecta z jednej tablicy
a) definiujemy tablice wartosci
b) generujemy liste opcji przez foreach na tej tabeli
c) sprawdzamy dane od usera z tą samą tablicą
ŻADNYM danym od usera nie możesz ufać
1. nie zalecam sprawdzania danych przez JS, chyba tylko alert na puste pola jako gadżet, niepustość i tak trzeba sprawdzić potem w php
2. nie uchroni Cie select ani ukryte pola formularza, dowolne dane post mozna wysylac do formularzy z pomoca biblioteki curl
3. dla formularzy 2 stopniowych wystarczy inicjowanie danymi z odfiltrowanego (minimum htmlspecialchars) POST, przy wielostopniowych nie unikniesz użycia sesji lub Joomlowego schowka własnych zmiennych w $mainframe (to obiekt, ktory udostepnia metody przechowywania wlasnych danych)

gcwirko
26-07-2008, 15:05
Serdecznie dziękuję. Poradziłam sobie już sama. Ale fajnie ze jest ktoś kto chętnie pomoże człowiekowi w potrzebie. Mam nadzieję ze innym użytkownikom forum ten temat się przyda,co prawda jest to problem z php ale spotkałam się już z wieloma postami na forum joomli, w których zakładający post piszą że nie są mocni z php