• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekierowanie i wyświetlenie komunikatu

Object Storage Arubacloud
0 głosów
176 wizyt
pytanie zadane 21 października 2016 w PHP przez Kshyhoo Użytkownik (750 p.)

Za pomocą $_GET pobieram dane i dodaję do bazy. Po czym przekierowuję na tę samą stronę, by uniknąć ponownego użycia tego samego linka. Chcę wyświetlić komunikaty po tym fakcie, ale nie wiem, jak mam ominąć problem wyświetlenia przy stanie początkowym. Oto kod:

$send = (isset($_GET['send'])) ? mysqli_real_escape_string($con, $_GET['send']) : '';
$drop = (isset($_GET['drop'])) ? mysqli_real_escape_string($con, $_GET['drop']) : '';
$a    = (isset($_GET['a']))    ? mysqli_real_escape_string($con, $_GET['a'])    : NULL;
$e1   = (isset($_GET['e1']))   ? mysqli_real_escape_string($con, $_GET['e1'])   : '';

if (isset($a) && $a == 'e1') {
	$sql = "UPDATE tabela SET error1=IF(error1='1', '0', '1') WHERE id='".$drop."'";
	mysqli_query($con, $sql);
	header('Location: history.php?send=1');
}

if (isset($send) && $send == 1) {
	$msgs = '
		<div class="alert alert-warning message"><a href="#" class="close" data-dismiss="alert">&times;</a>
			<div>Zaznaczony .</div>
		</div>';
} else {
	$msgs = '
		<div class="alert alert-warning message"><a href="#" class="close" data-dismiss="alert">&times;</a>
			<div>Odznaczony .</div>
		</div>';
}

 

1 odpowiedź

0 głosów
odpowiedź 21 października 2016 przez HaKIM Szeryf (87,590 p.)
edycja 22 października 2016 przez HaKIM

Nie lepiej załatwić to sesją?

Pakujesz do takowej prosty rezultat z if'a który zwraca true bądź false. Następnie sprawdzasz w kodzie czy dana sesja jest równa true, jeśli tak, wyświetlasz błąd.

Szybki przykład:

/*Gdzieś tam, w jakimś pliku.*/
$_SESSION['errorSendResult'] = $sendResult;


/*Plik HTML*/
<?php if (isset($_SESSION['errorSendResult']) && $_SESSION['errorSendResult'] === true): ?>
    <div class="error">Something goes wrong!</div>
<?php endif; ?>

Tylko o session unset nie zapomnij.

http://php.net/manual/en/function.session-unset.php

komentarz 23 października 2016 przez Kshyhoo Użytkownik (750 p.)

Ale nie to jest moim problemem. Umiem używać sesji...

Chodzi mi o to, że w stanie początkowym, czyli przy ładowaniu lub przeładowaniu strony, wyświetla się komunikat niespełnionego warunku, czyli ten po } else {.

komentarz 23 października 2016 przez HaKIM Szeryf (87,590 p.)

No... Pewnie dlatego, że go nie spełnia. smiley

Użyj die('I'm freaking out here!'); po każdej instrukcji i sprawdź gdzie program się zatrzymuje.

Ja lecę w kimę. Jutro będę w stanie udzielić Ci dalszej pomocy.

Miłego wieczoru i dobranoc.

komentarz 23 października 2016 przez efiku Szeryf (75,160 p.)

Użyj die('I'm freaking out here!'); po każdej instrukcji i sprawdź gdzie program się zatrzymuje.

Albo pokazać jak powinno się to robić za pomocą xDebug :/

https://php-kurs.gitbooks.io/phpkurs/content/czesc-i/tablice.html#praktyka

komentarz 26 października 2016 przez Kshyhoo Użytkownik (750 p.)

To nadal nie rozwiązuje mojego problemu, bo czy prześlę GETem, sesją, czy Pocztą Polską, to i tak przy ładowaniu strony pokaże się komunikat po else:

if (isset($a) && $a == 'e1') {
    $sql = "UPDATE tabela SET error1=IF(error1='1', '0', '1') WHERE id='".$drop."'";
    mysqli_query($con, $sql);
    header('Location: history.php?send=1');
}
 
if (isset($send) && $send == 1) {
    $msgs = 'spełniony';
} else {
    $msgs = 'niespełniony i pokaże się przy pierwszym ładowaniu strony';
}

Kombinowałem z różnymi warunkami, ale wciąż to samo.

Podobne pytania

+1 głos
1 odpowiedź 215 wizyt
0 głosów
1 odpowiedź 590 wizyt
0 głosów
2 odpowiedzi 308 wizyt
pytanie zadane 13 kwietnia 2016 w Java przez piekarnik Użytkownik (720 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...