• 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
183 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 (213,130 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ź 462 wizyt
pytanie zadane 21 lutego 2019 w Systemy operacyjne, programy przez niezalogowany
0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez rzepa Początkujący (280 p.)
+1 głos
1 odpowiedź 223 wizyt

92,757 zapytań

141,679 odpowiedzi

320,429 komentarzy

62,101 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

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!

...