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

Nie mogę sprawdzić danej danej w pętli (PHP, SQL)

VPS Starter Arubacloud
0 głosów
224 wizyt
pytanie zadane 13 kwietnia 2019 w PHP przez PanKonefka Nowicjusz (170 p.)

Witam,

Więc tworzę zapytanie w PHP 

  $ser = "SELECT * FROM miejsce WHERE dzien.id=miejsce.id_dnia AND miejsce.id_dnia='{$ser}' AND  rejestracja =1";

W sytuacji i teraz chciałbym by wykonało się 

if( $ser == '1' )
{
echo "<style> td { border: 2px solid white; background-color: red;}  </style>";

}
else
{
 echo "<style> td { border: 2px solid white; background-color: green;}  </style>	";

 }

Jednak nic się nie dzieje, cały czas tło jest na zielono mimo, że są różne dane w bazie danych. Nie wiem w czym problem, jest w stanie ktoś pomóc? 

Tworzę jak by rezerwacje biletu i czerwone mają oznaczać już zarezerwowane bilety.

Cały kod PHP wygląda tak:

$ser = $_GET["ser"];

$sql = "SELECT * FROM dzien, miejsce " .
    "WHERE dzien.id=miejsce.id_dnia AND miejsce.id_dnia='{$ser}'";
$qry = new dbQuery($sql);


  $ser = "SELECT * FROM miejsce WHERE dzien.id=miejsce.id_dnia AND miejsce.id_dnia='{$ser}' AND  rejestracja =1";

while (($rea = $qry->next()) != NULL)
	{
  $lnk1 = "<a href='realizacja.php?got={$rea["id"]}'%'{$rea["id_dnia"]}' class='link'>{$rea["miejsce"]}</a>";


  

if( $ser == '1' )
{
echo "<style> td { border: 2px solid white; background-color: red;}  </style>";

}
else
{
 echo "<style> td { border: 2px solid white; background-color: green;}  </style>	";

 }
 
 echo<<<END
<table>
  <thead>

<tr>
<td> 

END;

echo "<h3 >$lnk1  </h1> " ;
echo<<<END
</td>
      </tr>
	    </thead>

</table>
END;
	
	}

 

2 odpowiedzi

+1 głos
odpowiedź 13 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 14 kwietnia 2019 przez PanKonefka
 
Najlepsza

Nie rozumiem co tu robisz i jak to ma zadziałać.

$ser = $_GET["ser"];

Tutaj pod $ser jest podstawiana wartość z adresu. Następnie pod $ser przypisujesz treść zapytania SQL:

$ser = "SELECT * FROM miejsce WHERE dzien.id=miejsce.id_dnia AND miejsce.id_dnia='{$ser}' AND  rejestracja =1";

a na koniec sprawdzasz, czy $ser == 1 i się dziwisz, że warunek się nie spełnia. Jak ma się spełnić, gdy ustawiłeś tam przed momentem na sztywno kod zapytania SQL? Samo się nie zmieni nic, więc ten warunek się nigdy nie spełni.

komentarz 13 kwietnia 2019 przez PanKonefka Nowicjusz (170 p.)
Nie rozumiem co tu robisz i jak to ma zadziałać. PHPKopiuj ? 1 $ser = $_GET["ser"]; Tutaj pod $ser jest podstawiana wartość z adresu. Następnie pod $ser przypisujesz treść zapytania SQL:

Przekierowuje adres strony z ID SQL, przykładowo. Wybieram miesiąc danego meczu i ID jego przyjmuje wartość $ser dzięki czemu powstaje adres ser=ID_miesiąca 

 

a na koniec sprawdzasz, czy $ser == 1 i się dziwisz, że warunek się nie spełnia. Jak ma się spełnić, gdy ustawiłeś tam przed momentem na sztywno kod zapytania SQL? Samo się nie zmieni nic, więc ten warunek się nigdy nie spełni.

No właśnie nie wiem jak zrobic w PHP "Jak jest wartość w SQL 1 rób to jak nie rób co innego" Myślałem, że jakoś tak musze zadać to pytanie widocznie nie ;O 

komentarz 13 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Niestety dalej nie do końca rozumiem logikę jaka idzie za tym kodem. Jedno zapytanie już wykonujesz i coś masz w $qry (nie wiem co dokładnie, bo to jakaś własna klasa). Później masz jakieś kolejne zapytanie, podobne do poprzedniego, które nawet się nie wykonuje. Nie wiem czy ta różnica między zapytaniami jest istotna i co ma sprawdzić.

Sam się zastanów co po kolei potrzebujesz zrobić i przeanalizuj to z obecnym kodem. Jeśli chcesz odczytać jakieś dane dla danego rekordu to je masz w pętli w $rea. Wartość z linka masz pod $ser dopóki nie nadpiszesz jej drugim zapytaniem.
komentarz 13 kwietnia 2019 przez PanKonefka Nowicjusz (170 p.)
edycja 13 kwietnia 2019 przez PanKonefka

Nawet jeśli wpisze :

if($rea["rejestracja"] ==1)

oraz usunę tą drugą bazę danych to nie działa 

 

if($rea['rejestracja'] == 1)
{
echo "<style> td { border: 2px solid white; background-color: red;}  </style>";

}
else
{
 echo "<style> td { border: 2px solid white; background-color: green;}  </style>	";

 }

 

Główny problem jest taki, że chce by pewne tabelki miały inny kolor jeśli w bazie danych mają wartość "1" i nie wiem jak to zrobić. Próbuje tą metodą lecz w ogóle nie działa, jak by nie widział tej jedynki chociaż powinien. 

Tabelka mi się wyświetla lecz kolor jest jednolity mimo różnych wartość w bazie danych. 

komentarz 13 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
Nie wiem co jest pod $qry, co to za metoda ->next() bo to jakiś własny obiekt. Jednak to, co pokazałeś powyżej wydaje się sensowne - dla pojedynczego rekordu sprawdzasz czy kolumna rejestracja jest równa 1. Jeśli tam jest wszystko dobrze wyciągane to ma to sens.

Inna rzecz, że takie wstawianie styli w ogóle nie ma sensu. Wstawianie <style> w samym środku kodu będzie nieczytelne, style się raczej podpina w sekcji head, najlepiej z zewnętrznego pliku. Ponadto narzucając styl dla td zmienisz wszystkie kolumny wszystkich tabel, nie jakieś wybrane. Mój pomysł na to: zdefiniuj to jako klasy wcześniej, z poziomu PHP tylko nadawaj dla danego td wybraną klasę, która zmodyfikuje co trzeba.
0 głosów
odpowiedź 13 kwietnia 2019 przez Luna Cognita Dyskutant (8,130 p.)
Spaghetti code, nic z tego nie idzie wyczytać, w dodatku masz SQL Injection
komentarz 13 kwietnia 2019 przez PanKonefka Nowicjusz (170 p.)

w dodatku masz SQL Injection

To obecnie nie istotne, najpierw ma działać jedno.  

Spaghetti code, nic z tego nie idzie wyczytać

Czego konkretnie nie idzie wyczytać?  

komentarz 13 kwietnia 2019 przez Luna Cognita Dyskutant (8,130 p.)
Wszystkiego, co to jest w ogóle za konwencja echo<<<end?
komentarz 13 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,550 p.)
To jest najzwyklejszy Heredoc

Podobne pytania

0 głosów
2 odpowiedzi 4,453 wizyt
pytanie zadane 7 stycznia 2021 w Egzaminy zawodowe przez ChickenZax Nowicjusz (150 p.)
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 22 lutego 2017 w SQL, bazy danych przez kacperl95 Obywatel (1,980 p.)
0 głosów
2 odpowiedzi 1,753 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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!

...