Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Skrypt gwarancji
Forum PHP.pl > Forum > Przedszkole
parasite
Cześć Panowie (i Panie),

mam kolejny problem w mojej pracy, a jednocześnie nauce PHP. Otóż zrobiłem prosty skrypt gwarancyjny dla siebie (admin) i wszystko działa ok ale nie do końca. Otóż o ile listing, dodawanie i zmiana statusu zgłoszenia działa poprawnie o tyle samo ID - przy dodawaniu już nie. Zamieszczam pliki (cała paczka rar) pod adresem:

Chodzi o to, że dodaje sobie jakąś "gwarancję" dla własnych potrzeb jak mi klient wysyła i wszystko jest ok, jednak po usunięciu jakiejś - próbując dodać nową - ID (z automatu) kolejnej gwarancji zatrzymuje się na jakimś numerze. Podejrzewam, że to kwestia ustawienia bazy mysql ale dłubię i dłubię i nie mogę dojść do konkretnych wniosków co robię nie tak. Bardzo proszę o pomoc, jest to skrypt dla mnie i pode mnie i firmę i strasznie ułatwił by mi pracę. Nie znam się zbytnio na tym, coś tam napisać potrafię (dodawanie, odejmowanie, liczenie itp w bazie) ale tutaj się wystopowałem. Specjalnie udostępniam wszystkie pliki, bo to raczej nie tajemnica i poziom dla początkujących ale nie umiem sobie poradzić z tymi ID poszczególnych wpisów.

W skrócie. Dodaję wpis z automatu ma ID 1
Dodaję kolejne i jest OK
Mam wpisów 10 i jeden (10 usuwam)
Mam teraz wpisów 9
Dodając następny - otrzymuje on z automatu numer 11.

Tak samo jeśli usunę wpis z przedziału 1-10, np. 5
Zamiast przy dodawaniu następnego wskoczyć mi 11, otrzymuję 6. Ogólnie strasznie się te ID mieszają... lub na stronie dodającej - dodają te same.

Bardzo proszę o pomoc lub ukierunkowanie na co powinienem zwrócić uwagę by rozwiązać swój problem. Screeny załączone.
link już usunięty

Skrypt działa tutaj:
link już usunięty

Serdecznie dziękuję za jakąkolwiek pomoc.
Pozdrawiam.
Rysh
Nie usuwaj rekordu z bazy tylko go ukrywaj. Dodaj pole, zrobione i ustawiaj true, przy listingu pobieraj tylko ID gdzie masz false. Kiedyś historia gwarancji Ci się może przydać.
parasite
Tak, masz rację - nie pomyślałem o tym wcześniej.
Co prawda nurtuje mnie bardziej co robię nie tak ... ale Ty właściwie rozwiązałeś mój problem - NIE usuwać tylko dodawać i zmieniać status na active, inactive. To rozwiązuje całość i tak zrobię. Ale gdyby ktoś miał ochotę jeszcze przeglądąć te skrawki nieumiejętnego kodu, to bardzo proszę. Ślę piwko DHLem za rozwiązanie smile.gif
Rysh
Cytat(parasite @ 13.01.2015, 20:05:49 ) *
Tak, masz rację - nie pomyślałem o tym wcześniej.
Co prawda nurtuje mnie bardziej co robię nie tak ... ale Ty właściwie rozwiązałeś mój problem - NIE usuwać tylko dodawać i zmieniać status na active, inactive. To rozwiązuje całość i tak zrobię. Ale gdyby ktoś miał ochotę jeszcze przeglądąć te skrawki nieumiejętnego kodu, to bardzo proszę. Ślę piwko za rozwiązanie.

Napisałem 3 razy posta z kilkoma błędami, niestety backspace i wykasowałem całe wypociny smile.gif
trueblue
Niepotrzebnie przy INSERT wstawiasz 'warranty_id' pochodzące z jakiegoś $_POSTa, nie wstawiaj wartości dla tej kolumny.
Rysh
Twój problem jest taki, że w bazie danych masz auto_increment podczas dodawania wpisu, dodaje się ID kolejne, a nie ilość wpisów+1. Tak ma być i się z tym nie dyskutuje wink.gif
parasite
Podaj adres na PW, leci piwko smile.gif i jeden i drugi Pan.
Rysh
Jeśli chodzi o piwo, to wystarczy że naciśniesz przycisk pomógł pod naszymi postami.

Kilka spostrzeżeń:
1. używaj albo polskich albo angielskich nazw zmiennych i plików
2. ustawienia trzymaj w jednym pliku
3. po co łączysz się do drugiej bazy danych?
4. zrób porządek w plikach, bo masz straszny chaos
5. nie wiem w czym piszesz, ale tyle tabulatorów nie jest potrzebnych wink.gif
6. tak się kodu nie pisze:
  1. $query = "SELECT * FROM _warranty";
  2. $result = mysql_query($query);
  3. $num = mysql_numrows($result);
  4. $i=0;
  5. while ($i < $num) {
  6. $warranty_id = mysql_result($result,$i,"warranty_id");
  7. $warranty_numer = mysql_result($result,$i,"warranty_numer");
  8. $warranty_active= mysql_result($result,$i,"warranty_active");
  9. $warranty_link = mysql_result($result,$i,"warranty_link");
  10. $warranty_klient= mysql_result($result,$i,"warranty_klient");
  11. $warranty_nazwa = mysql_result($result,$i,"warranty_nazwa");
  12. $warranty_adres = mysql_result($result,$i,"warranty_adres");
  13. $warranty_telefon=mysql_result($result,$i,"warranty_telefon");
  14. $warranty_email = mysql_result($result,$i,"warranty_email");
  15. $warranty_data = mysql_result($result,$i,"warranty_data");
  16.  
  17. if ($warranty_active == 1) $status = "<font color=\"green\">atywny </font><a href=\"warranty_deactivate.php?id=$warranty_id\">(deaktywuj)</a>";
  18. // elseif ($warranty_active == 0) $status = "<font color=\"red\">nieaktywny </font><a href=\"warranty_activate.php?id=$warranty_id\">(aktywuj)</a>";
  19. $i++;
  20. }
  21. $oczko_wyzej = $warranty_id + 1;

możesz to zamienić na:
  1. $query = mysql_query('SELECT * FROM _warranty');
  2. $result = mysql_fetch_assoc($query);
  3. foreach($result as $row) {
  4. // wszystko masz w $row jako tablica
  5. }

7. nie mutuj błędów przez stawianie @ na początku funkcji
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.