Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przypisanie flagi zawodnikowi
Fezq
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2010

Ostrzeżenie: (10%)
X----


Witam, tworzę portal, na którym mam zawodników z różnych krajów. Podczas dodawania ich do bazy wybieram z pola "select" z jakiego kraju jest dany pan, w wyniku czego w bazie otrzymuję zapis, np. Kraj="Stany Zjednoczone". Jak zrobić, aby przy wyświetlaniu danego zawodnika, przy jego nazwisku pojawiała się odpowiednia flaga, np. dla Stanów Zjednoczonych mam flagę zapisaną jako "images/flags/1.jpg".

Proszę o pomoc i pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Giluś
post
Post #2





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Musisz zrobić np.: jakąś instrukcję switch lub if i wtedy

  1. switch($user['kraj']){
  2. case 'Stany Zjednoczone': $flaga = 1; break;
  3. case 'Polska': $flaga = 2; break;
  4. }

itd, lub od razu przy dodawaniu do bazy danych dodawać id flagi i wtedy:

images/flags/".$flaga.".jpg


Pozdrawiam.
Go to the top of the page
+Quote Post
IceManSpy
post
Post #3





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Powodzenia przy switchu jak będzie np 100 flag (IMG:style_emoticons/default/smile.gif)

Zapisz sobie do zawodnika z jakiego kraju podochodzi albo ID flagi dla niego, a potem wybieraj to z bazy podstawiając pod obrazek. Np:
User:
IMIE: Gienek
KRAJ: Polska
FLAGA_ID: 3

Gdzie id flagi to nazwa pliku graficznego.
Go to the top of the page
+Quote Post
Giluś
post
Post #4





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Ewentualnie można też zrobić bazę danych tych wszystkich państw i flag..

typu: id(int)|name(str)|flaga(int)

i później zapytanie robić WHERE name = $user['flaga']...

Pozdrawiam..
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #5





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


Moim skromnym zdaniem pomysł drugi jest najlepszy.
I także polecałbym to rozwiązanie
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Proponuje nazwy trzymać w standardzie ISO (max 3 znaki) typu PL, US itp.
Znacznie lepiej to wygląda, kod kraju idealnie pasuje do wstawienia w ALT bądź TITLE.
Alternatywnie lista krajów (nazwa pliku, id, nazwa kraju) - ale mało elastyczne i nie potrzebne tabele w bazie.
Go to the top of the page
+Quote Post
Fezq
post
Post #7





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2010

Ostrzeżenie: (10%)
X----


Witam ponownie, zdecydowałem się na sposób z przekazywanie ID flagi, jednak tutaj rodzi się moje kolejne pytanie, mianowicie:

W formularza do dodawania zawodników, mam pole:

  1. Kraj: <br/><select name="kraj" width="">
  2. <option>';?><?php include("db/panstwa.php");
  3. $ile = count($tablica);
  4. echo '<option selected="selected">Stany Zjednoczone</option>';
  5. for ($i=1; $i <$ile; $i++)
  6. {
  7. echo '<option>'; echo $tablica[$i]; echo '</option>';
  8. } ?>
  9. <?php echo'</select>


Plik panstwa.php:

  1. <?php $tablica = array(
  2. "1"=>"Abchazja",
  3. "2"=>"Afganistan",
  4. "3"=>"Albania",
  5. "4"=>"Algieria",
  6. "5"=>"Andora",
  7. "6"=>"Angola",
  8. "7"=>"Antigua i Barbuda",
  9. "8"=>"Arabia Saudyjska",
  10. "9"=>"Argentyna",
  11. "10"=>"Armenia",);?>


Uproszczony skrypt zapisu do bazy:

  1. $kraj = mysql_real_escape_string(trim($_POST['kraj'])
  2. $query = @mysql_query("INSERT INTO fighters SET kraj='$kraj'");
  3. if($query)
  4. echo '<tr><td class="tcat3" width="50%">Dane zostały dodane poprawnie
  5. / <a href="" onClick="window.location.href=window.location.href">odśwież stronę</a></td></tr>';
  6. else echo '<tr><td class="tcat4" width="50%">Błąd wprowadzania danych ('.mysql_error().')
  7. / <a href="" onClick="window.location.href=window.location.href">odśwież stronę</a></td></tr>';


Teraz moje pytanie brzmi, jak przesłać przez formularz nie tylko wybrany kraj, ale również jego numer (id), czyli jak podejrzewam parametr "$i". Próbowałem przez ukrytego inputa, ale niestety nic z tego.

Liczę na pomoc i z góry dziękuję.
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #8





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


Przykładowo:
  1. echo '<option value="'.$i.'">';
  2. echo $tablica[$i];
  3. echo '</option>';


Teraz w POST, po wysłaniu będziesz posiadać wybrane ID flagi.
Możesz go potem ponownie użyć do określenia nazwy
Go to the top of the page
+Quote Post
Giluś
post
Post #9





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


@mstraczkowski - Kolega chce chyba przesłać w Poście od razu ID flagi oraz nazwę państwa, a teraz wyślę tylko ID..

Zrobiłem coś takiego, pewnie można to zrobić inaczej, ale moja opcja wydaje się również dobra..

A wiec tak:

  1. <select name="kraj" width="">
  2. <?php
  3.  
  4. $tablica = array(
  5. "1"=>"Abchazja",
  6. "2"=>"Afganistan",
  7. "3"=>"Albania",
  8. "4"=>"Algieria",
  9. "5"=>"Andora",
  10. "6"=>"Angola",
  11. "7"=>"Antigua i Barbuda",
  12. "8"=>"Arabia Saudyjska",
  13. "9"=>"Argentyna",
  14. "10"=>"Armenia",);
  15. foreach($tablica as $id => $ktos) {
  16. echo '<option value="'.$id.'-s-'.$ktos.'">'.$ktos.'</option>';
  17. }
  18. ?>
  19. </select>


I później odbieranie:

  1. $_POST['kraj'] = explode('-s-' ,$_POST['kraj']);
  2. //$_POST['kraj'][0] - ID z tablicy.
  3. //$_POST['kraj'][1] - Nazwa państwa.
  4.  
  5. // jakieś tam dodawanie...



Pozdrawiam.

Ten post edytował Giluś 14.02.2013, 14:19:33
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #10





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


@up Mam nadzieję, że wiesz o tym że to rozwiązanie nie jest dobrym podejściem i jest mocno naciągane "aby tylko działało" ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fezq
post
Post #11





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2010

Ostrzeżenie: (10%)
X----


Dzięki za pomysły.

Giluś ma rację. Chciałbym wysłać nazwę kraju i zapisać dane do tabeli "kraj" oraz od razu odpowiadający danemu państwu identyfikator, który zostałby zapisany do tabeli "id_flaga".

mstraczkowski - a dlaczego uważasz, że podana propozycja nie jest zbyt dobra?
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #12





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


Jest naciągana, takie podejście nie jest czytelne dla innych programistów i tak się zwyczajnie nie robi - wprowadza to niepotrzebny chaos w kodzie.
Powinno się programować czysto, bez takich naciągań, między innymi dlatego mówi się, że PHP jest mało elegancki - dlatego że programiści stosują takie dziwne rozwiązania i nie dbają o czytelność kodu.

Jeżeli użyłbyś mojego sposobu otrzymujesz czyste ID flagi kraju, jako że masz już zdefiniowaną tablicę tych flag możesz zrobić sobie tak:

  1. $nazwa_kraju = $tablica[$_POST['id_kraju']];


Otrzymasz wtedy nazwę kraju na podstawie ID.

Ten post edytował mstraczkowski 14.02.2013, 15:38:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:31