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

Przekierowanie i wyświetlenie komunikatu

0 głosów
448 wizyt
pytanie zadane 21 października 2016 w PHP przez Kshyhoo Użytkownik (780 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 (780 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 (780 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ź 383 wizyt
0 głosów
1 odpowiedź 983 wizyt
0 głosów
2 odpowiedzi 804 wizyt
pytanie zadane 13 kwietnia 2016 w Java przez piekarnik Użytkownik (720 p.)

93,776 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...