Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Usunięcie rekordu i wybór z listy


Rekomendowane odpowiedzi

Witam, potrzebuję pomocy z bazą danych. Napisałem skrypt do odbioru zgłoszeń. Ktoś wysyła zgłoszenie w formularzu kontaktowym i mi się pojawia w panelu zgłoszeń po zalogowaniu. Mam jednak problem z dwoma rzeczami.

1. Jak zrobić, abym mógł obok zgłoszenia wybrać Przeczytane/Nieprzeczytane. (wybór z listy, wybieram i akceptuje).

2. Jak usunąć rekord z bazy? Kiedy dodaje komendę usunięcia odświeża mi stronę i muszę ponownie się zalogować. Tak jakby nie zapamiętuje logowania. Logowanie mam najprostsze w pliku, bez żadnego kodowania MD5.

Odnośnik do komentarza
Udostępnij na innych stronach

2. Nie znam sie zbytnio na mysql ale jak byk wydaje mi sie ze to dlatego bo Ci restartuje sesje co powoduje wylogowaniem.

Odnośnik do komentarza
Udostępnij na innych stronach

Najprawdopodobniej tak, ale jak temu zaradzić? Usuwać usuwa, ale wylogowuje mnie tak jakby :)

Odnośnik do komentarza
Udostępnij na innych stronach

1. Stwórz sobie kolumnę "read" dla niej typ BOOLEAN i domyślnie daj 0, a przy pobieraniu rekordu zmieniaj wartość kolumny "read" na 1 (wartości logiczne: prawda: +,1,true; fałsz: -,0,false), czyli 1 będzie oznaczać przeczytane, a 0 nieprzeczytane.

2. Może to być problem z sesją... upewnij się czy na początku skryptu używasz session_start(), a następnie cz nie używasz gdzieś session_destroy(). Sprawdź też czy dobrze napisałeś sprawdzanie czy użytkownik jest zalogowany.

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem przez mysqli wszystko pod baze. Teraz tylko mam problem z usuwaniem.

Tzn. wyskakuje mi błąd.

Fatal error: Call to a member function close() on a non-object in /home/marus/domains/zpuhmarus.pl/public_html/formularz/formularz.php on line 51
A to końcówka kodu:
$id = $_GET['usun'];

			$wynik2 = @$polaczenie -> query("DELETE FROM baza WHERE id = '$id'");

			if ($wynik2 === false){

				echo '
ERROR';

				$polaczenie -> close();

			}

			else {

				echo "Usunięto poprawnie";

			}

			$wynik -> close();

			$wynik2 -> close();	

			$polaczenie -> close();

Odnośnik do komentarza
Udostępnij na innych stronach

$wynik, $wynik2, $polaczenie nie jest obiektem.. na podstawie tego krótkiego kodu nie jestem w stanie stwierdzić co jest nie tak.. musiałbyś do funkcji zmienną globalną np.

global $wynik, $wynik2, $poloczenie;

Odnośnik do komentarza
Udostępnij na innych stronach

Po dodaniu błędu nie ma, ale nic się nie wyświetla :) Zaczął on się wyświetlać jak dodałem właśnie nowe "query" (dawne query, nie wiem jak to nowe się dodaje, może dlatego). Czyli ten moment musi być nie tak. Może coś jest źle, albo je się z czymś?

$wynik2 = @$polaczenie -> query("DELETE FROM baza WHERE id = '$id'");

           if ($wynik2 === false){

               echo '
ERROR';

               $polaczenie -> close();

           }

           else {

               echo "Kliknij po usunięciu rekordu, aby zniknął on z ekranu";

           }

           $wynik -> close();

           $wynik2 -> close(); [/code]

Odnośnik do komentarza
Udostępnij na innych stronach

Jak na początku skryptu dajesz:

$baza = new mysqli(...);

to na końcu skryptu dajesz:

$baza->close();

Tyle. Nie zamyka się wykonanych zapytań itp. jeżeli chcesz usunąć np. "$wynik1", aby zmniejszyć zużycie RAM-u, to:

unset($wynik1);

Odnośnik do komentarza
Udostępnij na innych stronach

Działa, dzięki. Wywaliłem to:

$wynik -> close(); 

$wynik2 -> close(); 

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...