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

question-closed Szalony submit zmienia wartość wszystkich pól

VPS Starter Arubacloud
0 głosów
185 wizyt
pytanie zadane 14 marca 2017 w PHP przez emilkaanna Początkujący (330 p.)
zamknięte 6 kwietnia 2017 przez emilkaanna

Cześć :) Moja podstrona wyświetla niezapłacone składki (patrz obrazek). 

Może być ich 3, ale może być i z milion. Każde białe pole, to osobny formularz, ponieważ nie wiem co sobie użytkownik wybierze. 

$rezultat = $polacz->query("SELECT * FROM skladki");
			$wynik = $rezultat->num_rows;
			if($wynik>0)
			{
				while($wiersz = $rezultat->fetch_assoc()) /*fetch_assoc = przynies dane i włóż je do tablicy asocjacyjnej*/ 
				{
					if($_SESSION['osoba'] == 'osoba1'){
						
						if($wiersz["status_os1"] == 'niezaplacono')
						{
							echo '<div id="formularz">';
							echo '<form method="post" action="" name"wybor">';
							$miesiac = DateTime::createFromFormat('Y-m-d',$wiersz["obowiazuje_od"]);
							$okres = $miesiac->format('Y-m-d');
							$m = $miesiac->format('M (Y)');
							$ang = array('Jan', 'Feb', 'Mar', 'Apr','May', 'Jun', 'Jul', 'Aug','Sept', 'Oct', 'Nov', 'Dec');
							$pol = array('Styczeń', 'Luty','Marzec', 'Kwiecień','Maj', 'Czerwiec','Lipiec', 'Sierpień', 'Wrzesień', 'Październik','Listopad', 'Grudzień' );
							$m = str_ireplace($ang, $pol, $m);
							echo "Zapłać składkę za miesiąc: ".$m.' - '.$wiersz["kwota"]." zł <br>";
							echo '<input type="submit" value="Przelano pieniądze" name="dodaj"/>';
							if (isset($_POST['dodaj']))
								{
									if($polacz->query("UPDATE skladki SET status_os1 = 'zaplacono' WHERE obowiazuje_od = '$okres'"))
									{header('Location: ogolne.php');}
									else {echo "nie udalo się";}
								}
							echo '</form>';
							echo '</div>';
						}
					}
				}
				unset($_SESSION['blad']);
				$rezultat->free_result();
			}
			else/*($wynik = 0)*/
			{	
				echo "Nie masz niezapłaconych skłądek";
			}					

Problem jest taki, że submit zamiast zmienić wartość dla tej konkretnej wartości, zmienia wartość wszystkich. Mam na myśli, że kiedy w bazie mam oba te okresy - luty i kwiecień - niezapłacone, to niezależnie który przycisk nacisnę, zmienia on wartość obu na zapłaconą. 

Czekam na pomysły i pozdrawiam :)

komentarz zamknięcia: znalazłam odp
komentarz 15 marca 2017 przez efiku Szeryf (75,160 p.)

Jeśli to jest aplikacja komercyjna którą piszesz na zlecenie, to powiedz osobie której to robisz, że potrzebujesz jeszcze miesiąca nauki w phpie, żeby zacząć to pisać.

Spójrz na ten kod, nie wydaje Ci się, że to spagetti?

Zacznij chociażby od separacji warstw i nie bój się używać bibliotek.

Na początek: composer (jako podstawka) + twig (jako warstwa prezentacji danych)

 

komentarz 16 marca 2017 przez emilkaanna Początkujący (330 p.)
Dziękuję za wskazówki, na pewno o tym poczytam. Pociski niepotrzebne, to projekt zaliczeniowy. Pozdrawiam.

1 odpowiedź

0 głosów
odpowiedź 14 marca 2017 przez Bosswell Nałogowiec (36,470 p.)
wybrane 16 marca 2017 przez emilkaanna
 
Najlepsza
Mogłabyś podać strukturę tabeli skladki ?
komentarz 14 marca 2017 przez emilkaanna Początkujący (330 p.)

Pewnie :)

id, obowiazuje_od, obowiazuje_do,kwota, status_os1, ...

komentarz 14 marca 2017 przez Bosswell Nałogowiec (36,470 p.)

Poradziłbym zmienić podejście do rozwiązania tego i nie używać formularza.

if($_SESSION['osoba'] == 'osoba1')


Zakładam, ze strona pisana jest tylko dla jednej osoby  ;)

Jeżeli tak, to ten warunek powinien zostać sprawdzony jako pierwszy.


Utwórz div dla pojedynczej składki.


<div id="formularz">

//tutaj wypisz informacje 

//a tutaj zrób link, który przeniesie Cię do strony z logiką
echo '<a href="update.php?id='.$wiersz['id'].'&warunek='.$okres.'">Wykonaj akcje</a>';

</div>

 


W pliku update.php umieść całą logike tego skryptu.

Na początku sprawdź, czy jest ustawiona zmienna $_GET, która pochodzi z twojego adresu.

if(!isset($_GET['id']) || !isset($_GET['warunek'])){
   header('coś_tam.php');
   die()
}else{
  //wykonaj skrypt i zrob update 
  //w zmiennej $_GET['id'] kryje się id tej skladki
  //polacz sie z baza i dokonaj update
}

 

Podobne pytania

0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 24 marca 2017 w PHP przez emilkaanna Początkujący (330 p.)
0 głosów
1 odpowiedź 97 wizyt
pytanie zadane 25 lutego 2017 w PHP przez emilkaanna Początkujący (330 p.)
–1 głos
2 odpowiedzi 138 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...