Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]wyświetlanie obrazków na podstawie danych
dentopolis
post
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


mam diagram zębów na stronie:
http://stomatologialabno.pl/gabinet/index.php?page=pacjent
jeżeli pole danych zawiera jedną literę np:w,c lub x to pojawia się odpowiedni obrazek.wszystko wtedy działa. ale jeśli znaków jest więcej czyli np:"w k" już jest problem.jak to rozwiązać?

  1. <?
  2. $rightupperseven= "w k";
  3.  
  4. switch ($rightupperseven) {
  5. case 'c':
  6. echo "<img src='gfx/c.png' class='18' style='width:50px;'>";
  7. break;
  8. case 'w':
  9. echo "<img src='gfx/w.png' class='18' style='width:50px;'>";
  10. break;
  11. case 'x':
  12. echo "";
  13. break;
  14. default:
  15. echo "<img src='gfx/tooth.png' width='50px'>" ;
  16. }
  17.  
  18.  
  19. if (strpos($rightupperseven, 'k') !== false) {
  20. echo "<img src='gfx/crown.png' class='18' style='width:15px;'>";
  21. }
  22. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
MadManix
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 18.05.2016

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


może dopisać
  1. case 'w k':
  2. echo "<img src='gfx/w_k.png' class='18' style='width:50px;'>";
  3. break;
Go to the top of the page
+Quote Post
dentopolis
post
Post #3





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


niestety to nie zadziała ponieważ x,c,w to "stany podstawowe" zęba.albo go nie ma,albo jest zdrowy albo do leczenia.ale na tą warstwę chcę nakładać kilka innych (dużo różnych kombinacji) np.ikonkę zmiany zapalnej przy wierzchołku korzenia albo korony na zębie itd.dlatego szukam innego rozwiązania.
Go to the top of the page
+Quote Post
404
post
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


  1. $rightupperseven= explode(' ', 'w k');
  2. if (empty($rightupperseven)) {
  3. echo "<img src='gfx/tooth.png' width='50px'>" ;
  4. } else {
  5. foreach ($rightupperseven as $foo) {
  6. switch ($foo) {
  7. case 'w':
  8. // ...
  9. break;
  10. }
  11. }
  12. }


Ten post edytował 404 14.08.2016, 18:49:36
Go to the top of the page
+Quote Post
dentopolis
post
Post #5





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


jeszcze raz:
w mysql może być wiele możliwości:
"w"
"c okw endo"
"w korona okw"
bardzo dużo tych kombinacji.
skrypt powinien wyszukać w polu danych np."okw" i jeśli jest to wyświetlić okw.png.
analogicznie jeśli jest np."korona" to wyświetlić korona.png

jestem już bardzo blisko rozwiązania:

  1. if (strpos($leftuppertwo, 'w') !== false) {
  2. echo "<img src='gfx/w.png' class='18' style='width:50px;'>";
  3. }
  4.  
  5. if (strpos($leftuppertwo, 'k') !== false) {
  6. echo "<img src='gfx/crown.png' class='18' style='width:15px; position: relative; top: 15; left: -20;'>";
  7. }


teraz tylko problem jest taki że jeśli zmienna zawiera nawet literę to traktuje to jakby znalazł pasujące słowo natomiast "w" ma wyświetlić inny obrazek niż "okw"
Go to the top of the page
+Quote Post
404
post
Post #6





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


Twój problem polega na tym, że używasz strpos, które chyba nie wiesz do końca jak działa. strpos znajduje pierwsze wystąpienie zadanego ciągu znaków, dlatego:
  1. $leftuppertwo = 'okw';
  2.  
  3. if (strpos($leftuppertwo, 'k') !== false) {
  4. echo 'foo';
  5. }
  6.  
  7. if (strpos($leftuppertwo, 'w') !== false) {
  8. echo 'bar';
  9. }
  10.  
  11. if (strpos($leftuppertwo, 'okw') !== false) {
  12. echo 'baz';
  13. }
wyświetli: foobarbaz
Czy próbowałeś w ogóle uruchomić kod, który Ci podałem? Na moje on robi dokładnie co potrzebujesz: http://sandbox.onlinephpfunctions.com/code...b0a99df440d286c. Coś się tak uczepił tego strpos? Chyba, że czegoś nie rozumiem...
Go to the top of the page
+Quote Post
MadManix
post
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 18.05.2016

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


  1. $rightupperseven = "w k okw c x";
  2.  
  3. $tablica = explode(" ",$rightupperseven);
  4. //$tablica[0] = "w";
  5. //$tablica[1] = "k";
  6. //$tablica[2] = "okw";
  7. //$tablica[3] = "c";
  8. //$tablica[4] = "x";
  9.  
  10. $obrazki = "";
  11. for ($i=0;$i<count($tablica);$i++){
  12.  
  13. switch ($tablica[$i]) {
  14. case 'c':
  15. $obrazki = $obrazki."<img src='gfx/c.png' class='18' style='width:50px;'>";
  16. break;
  17.  
  18. case 'w':
  19. $obrazki = $obrazki."<img src='gfx/w.png' class='18' style='width:50px;'>";
  20. break;
  21.  
  22. case 'x':
  23. $obrazki = $obrazki."";
  24. break;
  25.  
  26. case 'k':
  27. $obrazki = $obrazki."<img src='gfx/crown.png' class='18' style='width:15px;'>";
  28. break;
  29.  
  30. case 'okw':
  31. $obrazki = $obrazki."<img src='gfx/okw.png' class='18' style='width:15px;'>";
  32. break;
  33.  
  34. default:
  35. $obrazki = $obrazki."<img src='gfx/tooth.png' width='50px'>" ;
  36. break;
  37. }
  38. }
  39.  
  40. echo $obrazki;



jeżeli nie o to chodzi, to znaczy, że nie rozumiem pytania.
Go to the top of the page
+Quote Post
dentopolis
post
Post #8





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


dzięki Panowie.działa diagram elegancko.
a czym może być spowodowane złe kodowanie znaków?
na stronie mam:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
w bazie mam:utf8_general_ci
Go to the top of the page
+Quote Post
404
post
Post #9





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


Sprawdź jeszcze kodowanie pliku.
Go to the top of the page
+Quote Post
dentopolis
post
Post #10





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


notepad++ utf-8
Go to the top of the page
+Quote Post
404
post
Post #11





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 22.05.2011

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


Pamiętaj, że bez BOM. Ewentualnie po połączeniu się z bazą wykonaj
Kod
SET NAMES utf8;
, jeżeli jeszcze tego nie zrobiłeś.

Ten post edytował 404 16.08.2016, 16:39:01
Go to the top of the page
+Quote Post
dentopolis
post
Post #12





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


$conn->set_charset("utf8");
działa.dzięki!
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: 26.09.2025 - 14:33