Witam. Mam dość przyziemny problem, mianowicie, gdy wykonuje funkcję redirect celem odświeżenia strony po na przykład usunięciu rekordu, aby pokazywała się już ich grupa bez tego usuniętego, nie pokazuje się komunikat o usunięciu, jednak gdy nie stosuję redirecta komunikat się wyświetla, lecz rekordy pokazywane są razem z tym usuniętym, dopiero po odświeżeniu strony znika.
Krzywy Samiec napisał(a):
Witam. Mam dość przyziemny problem, mianowicie, gdy wykonuje funkcję redirect celem odświeżenia strony po na przykład usunięciu rekordu, aby pokazywała się już ich grupa bez tego usuniętego, nie pokazuje się komunikat o usunięciu [...]
Musisz pokazać w jaki sposób te komunikaty generujesz.
Krzywy Samiec napisał(a):
[...] jednak gdy nie stosuję redirecta komunikat się wyświetla, lecz rekordy pokazywane są razem z tym usuniętym, dopiero po odświeżeniu strony znika.
Zapewne najpierw wyciągasz dane do wyświetlenia z bazy a następnie usuwasz wybrany rekord. Powinieneś robić odwrotnie.
Tak czy siak, bez kodu niewiele można podpowiedzieć...
//formularz
if(isset($_POST['roles'.$row['id'].'']))
{
$view = new VIEW();
$stmt=$this->db->prepare('szablon_zapytania');
$stmt->bindParam('bindowanie_parametrów');
$stmt->execute();
$count_roles = $stmt->rowCount();
if($count_roles>0)
{
$errors .= 'warunek';
$view -> vall_view($errors);
}else if($count_roles==0)
{
$stmt=$this->db->prepare('usuwanie');
$stmt->bindParam(':id',$row['id']);
$stmt->execute();
//wyswietlanie
$view->admin_change_roles($row['id'], $row['roles_name']);
}
Chodzi o to że gdy chcę wyświetlić warunek a później zrobić redirect to warunek się nie wyświetla
Przykład:
$this->redirect('strona.php');
$errors .= 'Usunięto';
$view -> vall_view($errors);
Ktoś wie w czym jest problem ?
Czy Ty chcesz usunąć rekord w sytuacji w której nie masz żadnego rekordu w bazie? Dobrze to rozumiem?
Ten warunek jest słabo zbudowany. Lepiej coś takiego
if($count_roles === 0){
...
}else{
...
}
Chodzi o to że w bazie nie może być wartości, którą użytkownika przesyła formularzem. Jeśli wartości nie ma, usuwaj, jeśli jest, wyświetlaj komunikat. W binderze jako parametr daję zmienną przesyłaną postem.
Według mnie może nie działać, ponieważ jak wykonujesz instrukcję $this->redirect('strona.php'); to te dwie następne instrukcje się nie wykonują może weź coś metoda get przekaż te parametry.
$this->redirect('strona.php?error=blad');
Faktycznie, nie pomyślałem o tym, wystarczy po wciśnięciu przycisku usuń, przypisać do zmiennej $errors wartość 'Usuń', przenieść z getem ?errors='.$errors.' na ową stronę i poza foreach dać warunek, że jeśli jakaś wartość jest przypisana do zmiennej $errors, wyświetl ją.
Dzięki za pomoc.
Z drugiej jednak strony, to rozwiązanie na bardzo krótką metę, mając w gecie, całą zmienną, klient może sobie wpisać tam cokolwiek i zostanie to zwrócone na ekranie, albo nawet może to zawiesić serwer...
To już wolę nie wyświetlać tego usuń.