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

Modyfikacja strony- pewien problem

Object Storage Arubacloud
0 głosów
172 wizyt
pytanie zadane 10 marca 2020 w PHP przez flclflcl Nowicjusz (200 p.)

Witam :)

Zdecydowałem się to napisać z uwagi na następującą okoliczność. A mianowicie- zainteresował mnie omawiany w tym filmiku https://www.youtube.com/watch?v=5LGojZZct5g&fbclid=IwAR0QHbiub4zX_i8tLseC-47WY2PRyOdmvb6g6jhl1oM2UnVtj38pxtXKNTM przykład. To jest, jeśli się nie mylę, projekt autorstwa Pasji Informatyki.

No i postanowiłem że "trochę" sobie w tym projekcie pokombinuję. Pierwsze co postanowiłem w tym projekcie zmienić to zrobić tak aby klasę wybierało się za pomocą pola select, które, z kolei, tak zaprogramowałem aby zmiana wyboru powodowała wysłanie zapytania do bazy danych. Dokonane przeze mnie zmiany w tym zakresie przedstawia załączony plik index.php- https://www107.zippyshare.com/v/x9Hj2llb/file.html
 

Znacznikowi select nadałem w tej modyfikacji następującą strukturę:

<select name="klasa1" onchange="this.form.submit()">
			<option value="0">--Wybierz klasę--<option>
			<?php
				$q2 = "SELECT id, nazwa FROM klasa";
				$result2 = mysqli_query($conn, $q2) or die("Problemy z odczytem danych!");
				while($row = mysqli_fetch_assoc($result2)) {
				if (isset($_POST["klasa1"])) { 
					 if ($_POST["klasa1"] === $row["id"]) {
						echo '<option value="'.$row["id"]. 'selected">'.$row["nazwa"] .'</option>';
						//echo "Wszystko jest ok";
					} else {
							echo '<option value="'.$row["id"]. ' ">'.$row["nazwa"] . '</option>';
							//echo "Wartości tych zmiennych róznią się od siebie bo " . $_POST["klasa1"]. "nie równa się " .$row["id"];
							} 
				}
					else {
									echo '<option value="'.$row["id"]. ' ">'.$row["nazwa"] . '</option>';
									//echo "Nie ma takiej zmiennej";
									}
				}
			?>
		</select>

No i pierwsza rzecz, na którą zwróciłem uwagę przy tej modyfikacji to to aby pole wyboru było zapamiętywane. No i w tym celu wewnątrz pętli "while" dałem 2 instrukcje warunkowe (jedna zagnieżdżona w drugiej aby w zależności od równości pewnych zmiennych odpowiedniej opcji nadawało atrybut "selected". Problem w tym że to nie działa. Sprawdzałem za pomocą różnych sztuczek, która instrukcja warunkowa zawsze zwraca wynik negatywny i okazuje się że ta druga ($_POST["klasa1"]==$row["id"]). Próbowałem też za pomocą różnych sztuczek wyrzucać wartości tych zmiennych i nawet gdy wyrzucało je takie same to wynik porównania dawało negatywny. Tak więc czy byłby ktoś w stanie wyjaśnić co jest tu nie tak? Dlaczego zawsze taki wynik porównania mam zwracany? No i druga sprawa- dlaczego w polu "select" między opcją "Wybierz klasę" a opcjami poszczególnych klas jest linijka wolna?

Bardzo prosiłbym o pomoc i jakieś wskazówki.

Pozdrawiam :)

3 odpowiedzi

0 głosów
odpowiedź 10 marca 2020 przez Ehlert Ekspert (212,670 p.)

Może najpierw zacznij od tego aby:

  1. Wyciągnąć surowe dane, mieć je gotowe w tablicy, lub innej strukturze.
  2. Przekazać je do widoku/szablonu gdzie w przejrzysty sposób będą wyświetlone.

W obecnym kodzie jest dramat, mieszasz HTML, klamry z php, SQL. Brakuje jeszcze inline css.

komentarz 11 marca 2020 przez flclflcl Nowicjusz (200 p.)
Tylko że te dane są już w tablicach ($row oraz $_POST). Ponadto gdy w klasyczny sposób wyrzucam wartości tych zmiennych (metodą "echo $row["id"];, echo $_POST["klasa1"] ;) to zwraca mi takie same wartości natomiast porównanie metodą if daje wynik negatywny. Dlatego chciałbym wiedzieć co tu jest nie tak.

A co do tego mieszania kodu html z php to jakie proponowałbyś inne rozwiązanie gdy nagłówki i wartości pól "option" chcę mieć prosto z bazy danych wyciągane? A pętla chyba jest jedynym na to sposobem...
0 głosów
odpowiedź 11 marca 2020 przez flclflcl Nowicjusz (200 p.)
Tylko że te dane są już w tablicach ($row oraz $_POST). Ponadto gdy w klasyczny sposób wyrzucam wartości tych zmiennych (metodą "echo $row["id"];, echo $_POST["klasa1"] ;) to zwraca mi takie same wartości natomiast porównanie metodą if daje wynik negatywny. Dlatego chciałbym wiedzieć co tu jest nie tak. A co do tego mieszania kodu html z php to jakie proponowałbyś inne rozwiązanie gdy nagłówki i wartości pól "option" chcę mieć prosto z bazy danych wyciągane? A pętla chyba jest jedynym na to sposobem...
0 głosów
odpowiedź 13 marca 2020 przez flclflcl Nowicjusz (200 p.)
Muszę powiedzieć że ten pierwszy problem już rozwiązany ale jak się pozbyć tej wolnej linijki między opcją "Wybierz klasę a opcjami wybieranych klas?

Podobne pytania

0 głosów
1 odpowiedź 419 wizyt
pytanie zadane 21 lutego 2019 w Systemy operacyjne, programy przez niezalogowany
0 głosów
1 odpowiedź 158 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez rzepa Początkujący (280 p.)
+1 głos
1 odpowiedź 213 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...