Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP] jak odczytać id poszczególnego wiersza
Forum PHP.pl > Forum > Przedszkole
pietroff
Cześć,

mam taki problem wyświetlam dane z bazy za pomocą pętli:
  1. <form action="" method="post" enctype="multipart/form-data">
  2. <?php
  3. while($row = $stmt->fetch()){
  4. ?>
  5. <input type="text" name="lp[]" value="<?php echo $row['nr_etapu']; ?>" disabled=""/>
  6. <input type="text" name="nazwaEtapu[]" value="<?php echo $row['nazwa_etapu']; ?>" disabled=""/>
  7. <input type="text" name="opisDzialan[]" value="<?php echo $row['opis_etapu']; ?>" disabled=""/>
  8. <input type="text" name="okresRealizacji[]" value="<?php echo $row['okres_realizacji']; ?>" disabled=""/>
  9. <input type="text" hidden="" name="nrWiersza" value="<?php echo $row['nr_etapu']; ?>" />
  10. <input type="submit" name="usunWiersz" value="Usuń" />
  11. <?php }?>
  12. </form>
  13.  


Nie wiem teraz w jaki sposób odnieść się do konkretnego nr_etapu?

próbowałem tak:
  1. if (isset($_POST['usunWiersz'])){
  2. $idWniosku = $rowForm['id_wniosku'];
  3. $numerWiersza = $_POST['nrWiersza'];
  4. $harmonogram->usunWiersz($idWniosku, $numerWiersza);
  5. }
  6.  


To działa tylko usuwa zawsze pozycję ostatnią. Czy możecie podpowiedzieć jakieś rozwiązanie tego problemu?
nospor
Zamiast w jednym formie wrzucac tysiace wierszy, zrob form na kazdy wiersz. Wowczas bedzie ci szlo tylko to co cie interesuje
pietroff
A w jaki sposób odświeżyć tylko includowaną część strony? Bo po usunięciu wiersza nie widać czy został usunięty, dopiero jak odświeżę stronę to widać efekt. Próbowałem przez:

  1. header('Location: strona.php');


Tylko wtedy wraca do początku strony. Bo tych includów mam więcej i w tym scenariuszu wraca do momentu gdzie nic nie jest includowane. Czy wiecie jak to ugryźć?
nospor
najpierw usuwaj a potem dopiro generuj liste. to chyba oczywiste... wink.gif
pietroff
Robię tak:
  1. if (isset($_POST['usunWiersz'])){
  2. $idWniosku = $rowForm['id_wniosku'];
  3. $numerWiersza = $_POST['nrWiersza'];
  4. $harmonogram->usunWiersz($idWniosku, $numerWiersza);
  5. header("Location: strona.php");
  6. }
  7.  


Ale po wszystkim wraca do momentu gdzie nie includuję, a potrzebuję wrócić do miejsca gdzie byłem przed naciśnięciem buttona usunWiersz ale bez wcześniej usuniętego wiersza smile.gif Czy jest na to jakas opcja czy tylko JS?
trueblue
Nadaj id dla wierszy, np. wiersz-nrWiersza. W PHP przekieruj na URL: strona.php#wiersz-nrWiersza, gdzie nrWiersza jest numerem wiersza wcześniejszego od usuwanego (albo na URL: strona.php jeśli to pierwszy wiersz).
pietroff
No tylko mam to zrobione w taki sposób:

  1. <div>
  2. if(isset($_POST['button1']{
  3. include formularz1.php;
  4. }if(isset($_POST['button2']{
  5. include formularz2.php;
  6. }if(isset($_POST['button3']{
  7. include formularz3.php;
  8. }
  9. .
  10. .
  11. .
  12. </div>


I jak to odświeżyć aby pozostało na formularzu np. 2?
trueblue
Tak jak powyżej napisałem.

Icludujesz tyle plików formularzX.php ile jest wierszy?
Przecież do tego wystarczy jeden kod formularza i jeden kod obsługujący usuwanie.
pietroff
każdy include odpowiada za poszczególną część całego wniosku. Wypełniam jedną część przechodzę dalej zapisując do bazy to co wpisane i ładuję następną część wniosku. Jedna z części tego wniosku ma mieć możliwość usunięcia wierszy jeśli będzie potrzeba edycji wniosku i to działa tylko zależy mi na tym aby odświeżać akurat ten includowany kawałek wniosku.
trueblue
Używaj innych adresów dla każdego kroku "dużego" formularza.
Skoro nie stosujesz przyjaznych linków, to po prostu strona.php?krok=X
Musisz sprawdzać czy jest możliwe przejście do następnego/późniejszego kroku (czyli zapisywać w sesji fakt wypełnienia kroku wcześniej). Może też być sytuacja gdy ktoś wróci do kroku wcześniejszego, jeśli to umożliwiasz, to musiałbyś decydować co z danymi wprowadzonymi w krokach późniejszych.
pietroff
Przechodzenie z jednej do drugiej części formularza realizuję tak, że mam dwa buttony, pierwszy wróć drugi przejdź dalej, do tego pola formularza są required więc nie ma możliwości przejść dalej nie wypełniając wszystkich pól wymaganych. Jeśli wypełniamy wszystko przechodzimy dalej z automatycznym zapisem tego co już wpisaliśmy. Jak wrócimy do poprzedniego formularza to z bazy zaciągam to co było wpisane wcześniej pod value. Jeśli coś zmienię i kliknę znów dalej to uruchamiam metodę update. Jak dojdę do rzeczowej części formularza to w niej mam dodawane wiersze i realizuje to za pomocą JS po przejściu dalej wyświetla się kolejna część wniosku. Jak wrócę to mam np wypełnione 10 wierszy i przy każdym mam buttona usunDanyWiersz. I wszystko działa bez zastrzeżeń tylko chciałbym odświeżać właśnie to miejsce po to aby było widać w czasie rzeczywistym że usunięto to pole smile.gif . I póki co utknąłem na tym sciana.gif
trueblue
Nie bardzo rozumiem co dokładnie chcesz zrobić.
Masz zrobione usuwanie z pomocą JS, czyli poprzez wywołanie skryptu PHP z pomocą Ajax, tak? Jeśli tak jest, a wiersz pozostaje na ekranie, to musisz wiersz usunąć również z pomocą JS: https://htmldom.dev/remove-an-element
pietroff
W skrócie chciałbym odświeżyć tylko jednego diva w includowanym pliku
trueblue
W includowanym pliki nic się nie odświeża, odświeża się co najwyżej kod HTML, który wygenerujesz z includowanego kodu PHP.
Jeśli robisz tak jak wyżej opisałem, to jest tam też rozwiązanie.
pietroff
Rozwiązałem to inaczej, po wywołaniu metody usuń wiersz aktualizuje zapytanie do bazy danych i następnie jeszcze raz includuję ta część formularza smile.gif Dzięki za pomoc i wskazówki
nospor
No przeciez to wlasnie mowilem od samego poczatku
Cytat
najpierw usuwaj a potem dopiro generuj liste.
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.