Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Skąd się bierze dodatkowy rekord?
Forum PHP.pl > Forum > Przedszkole
kopek
Witam, oto mój problem. Po zaznaczeniu rekordu i wciśnięciu EDYTUJ zadany rekord wyświetla się i jest gotowy do edycji. Po wprowadzeniu zmian i kliknięciu ZAPISZ, zmiany zostają zachowane w zadanym rekordzie jednak tworzy się kolejny z tymi samymi danymi. Jak temu zapobiec? Kod w linku ponieważ ograniczenia długości/wielkości postów nie pozwoliły wkleić go tutaj.

[PHP][MySQL]Skąd się bierze dodatkowy rekord?
luki100011
nie wykonujesz podczas edycji zarówno UPDATE jak i INSERT na bazie danych ?

aras785
Trochę bardziej czytelne: http://wklej.org/hash/c0555ed23a5/
mmmmmmm
w 172 linii dodaj warunek :
  1. && !isset($_POST['edytuj'])
kopek
Wkleiłem w 171 aby w ogóle nie wchodzić do sekcji dodawania nowego wpisu. Sądzę, że rozwiązało problem ale przetestuję jeszcze.

Okazało się, że podczas kiedy użytkownik wciska EDIT dodaje mu automatycznie nowy pusty rekord (wyświetlając też ten do edycji) ale dzieje się to tylko w Operze. Jak temu zaradzić?
Michasko
Nie bardzo potrafie się w tym kodzie odnaleźć, być może dlatego, że już późno. Niemniej jednak spróbuj zamiast kolejnych if-ów dawać elseif, na zasadzie:
  1. if(isset($POST['edytuj'])) {
  2. //cośtam
  3. }
  4. elseif(isset($_POST['edit'])) {
  5. //cośtam cośtam
  6. }
  7. else {
  8. //cośtam cośtam cośtam
  9. }


Tym sposobem wykona się tylko jeden warunek, w przeciwnym razie wykonasz jeden i przejdziesz do następnego - i wykonasz go, jeśli będzie prawdziwy, a chyba nie to było Twoim zamierzeniem (jeśli się mylę, to sorki).
mortus
Nie obraź się kolego, ale ten Twój kod to zabójstwo dla serwera baz danych. Co chwila otwierasz nowe połączenia i ustawiasz kodowanie:
  1. connection();
  2. $ins = mysql_query("SET NAMES 'utf8'");
  3. $ins = mysql_query("SET CHARACTER SET 'utf8_general_ci'");

podczas gdy powinieneś to zrobić tylko raz, na samym początku skryptu. Poza tym w kilku miejscach dwukrotnie wykonujesz takie same zapytania niemal jedno pod drugim, jak np.:
  1. $sql = "SELECT * FROM delegacja WHERE id='$opcja'";
  2. $sql = "SELECT DISTINCT nazwa FROM miasta";


Gubisz niektóre tagi HTML, co powoduje, że nie można kodu prawidłowo sformatować w edytorze z podświetlaniem składni.

Kod zdecydowanie wymaga reorganizacji, głównie ze względu na to, że otwartych połączeń z serwerem baz danych masz w optymalnym ustawieniu chyba 5, a niepotrzebnych zapytań chyba jeszcze więcej (choć tego nie liczę).
kopek
Dzięki za konstruktywną krytykę, usunąłem już zbędne linie z połączeniem i kodowaniem ale jeżeli chodzi o takie same zapytania... to nie bardzo rozumiem. Te dwa, które podałeś jako przykład pobierają dane z dwóch różnych tabel. Co do tagów HTML to raczej wszystkie są i mój edytor podświetla mi bez zarzutu. Może kwestia nie przeklejenia tam całego kodu spowodowała problem z tagami. Jeżeli mógłbyś jeszcze coś doradzić to chętnie się zastosuję, jeżeli miało by to skrócić mój kod lub zoptymalizować go w jakimś sensie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.