![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Siemka.
Czy moglibyście mi poradzić jak można wykonać taki skrypt sprawdzający. Na początku pobieram z bazy losowe rekordy i tworze z nich obraz - kolor (teraz aby bylo szybciej tylko kolor - w przyszłości będzie to zmienione na tworzenie obrazków itp ale to nie ważne): 1. Pobieram color_hex i color_name z bazy, 2. Wstawiam color_hex jako tło komórki, 3. Wstawiam color_hex i color_name do ukrytego input'a (jako daną do sprawdzenia) 4. Całość generuje się 3x - 3 różne kolory z 3 input'ami (co wywołanie zmienia się name o +1).
Teraz właśnie jest problem ponieważ chce sprawdzić czy użytkownich na wzór obrazu wybrał odpowiedni kolor. W bazie do każdego hex'a przypisana jest nazwa np: 1 | #FF0000 | red - czyli id=1, hex=#FF0000 i jest to kolor=red. Właśnie teraz nie wiem jak to sprawdzić - wiem, że musze pobrać z bazy wszystkie kolory i porównać je z hex'ami z formularza. Następnie zobaczyć czy $_POST['color1/2/3'] == kolorowi z bazy (tego na podstawie hex'a). Jeżeli np. _POST['color1'] == jakiś $row['color_name'] (ten color_name jest z tego zamego wiersza co hex) to no $zmienna = 'ok' a jak ~= to $zmienna2 = 'wrong'; i przechodzi dalej do następnych 2. Po sprawdzeniu 3 wyświetla które są dobrze które źle. Myślałem, żeby zrobić 3 różne zapytania dla każdego z kolorów - było by łatwiej bo podałbym WHERE `color_hex` = $_POST['color_hex'] ale znowu gdy będzie ich 20 to... :| Jestem wręcz pewien, że idzie to zrobić o wiele łatwiej ale właśnie jak? Ma ktoś jakis dobry pomysł? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No ok działa, ale jak teraz porównać rekordy z postem? Chodzi mi o to, że one nie są tak samo poukładane - posty lecą po swojemu a row'ki po swojemu.
P.S. #1 wiem, że nie filtrowane - ale to potem #2 wiem, że tak to sobie wygląda - ale działa (do tego momentu). |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Primo zamiast name="color_hex2" lepiej dać name="color_hex[]" - wytworzy Ci to tablicę kolorów wybranych przez użytkownika, nie będzie to miało znaczenia czy wybrał 1 czy 5tysięcy, bo odwołujesz się przez jedną tablicę.
Secundo chyba źle zrozumiałam założenia. Musisz sprawdzić, czy każdy z tych wybranych kolorów znajduje się w bazie danych, tak? Ten post edytował Shili 18.07.2008, 23:50:44 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Primo zamiast name="color_hex2" lepiej dać name="color_hex[]" - wytworzy Ci to tablicę kolorów wybranych przez użytkownika, nie będzie to miało znaczenia czy wybrał 1 czy 5tysięcy, bo odwołujesz się przez jedną tablicę. Secundo chyba źle zrozumiałam założenia. Musisz sprawdzić, czy każdy z tych wybranych kolorów znajduje się w bazie danych, tak? Nie. Każdy z tych kolorów znajduje się w bazie danych. Jak jak mówiłem w formularzu wyświetla się użytkownikowi: color_hex (pobrany z bazy) i 3 input'y typu radio z name=color i value=red, green, blue. Użytkownik na podstawie color_hex (który wstawiany jest do tła komórki) ma wybrać jaki to jest kolor (zaznaczyć odpowiednią "kropke"). Więc: Jeżeli color_hex (tło komórki) jest: color_hex="FF0000" i użytkownik wybierze radio name=red to w momecie gdy formularz będzie to sprawdzał ma on wyświetlić np " echo 'Dobry wybór'; " Więc, formularz musi wyciągnąc color_hex i color_name z bazy i najpierw porównać czy $row['color_hex'] == $_POST['color_hex'] - to jest i musi być TRUE, teraz sprawdzić czy $row['color_name'] == $_POST['color'] jeżeli tak to wyświetka jakieś echo czy coś i przechodzi do następnego. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie rozumiem, że kolor hex i kolor name są ze sobą powiązane jakimś id, tak? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ze swojej strony mogę zaproponować taki sposób rozwiązania. Na ukryte pola formularza zawsze można sobie przerobić mniej więcej w ten sam sposób. To tylko zarys, ale z tego względu, że session i post mają dokładnie takie same wartości dość prosto będzie przypisać błędnym session jakąś wartość określającą że jest błąd i zaznaczyć to w formularzu. I nie potrzebne jest więcej zapytań do bazy niż jedno. ten include na początku łączy mi się z bazą danych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował Shili 19.07.2008, 12:56:15 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 11 Dołączył: 31.01.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca to działało, ale pozmieniałem troszkę i... działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dzięki bardzo (IMG:http://forum.php.pl/style_emoticons/default/yahoo.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 00:06 |