Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zamiana id na obrazek
Forum PHP.pl > Forum > Przedszkole
Popek231
Witam, chciałbym aby ID zamieniło się automatycznie na obrazek..
Mam kod, ale nie wiem czemu nie działa...
Testowałem dla ID 001, 002, ale nie działało nic :(

  1. <?php
  2. $eq_id = $_GET['id'];
  3.  
  4. function equipment($eq_id){ //zmiana ID zbroi na obrazki
  5.  
  6. //1-49 miecz
  7. $eq_id = preg_replace('001','<img scr="'.$strona.'images/play/equipment/sword/1.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  8. $eq_id = preg_replace('002','<img scr="'.$strona.'images/play/equipment/sword/2.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  9. $eq_id = preg_replace('003','<img scr="'.$strona.'images/play/equipment/sword/3.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  10.  
  11. //50-99 hełm
  12. $eq_id = preg_replace('050','<img scr="'.$strona.'images/play/equipment/helmet/50.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  13. $eq_id = preg_replace('051','<img scr="'.$strona.'images/play/equipment/helmet/51.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  14.  
  15. //100-149 napierśnik
  16. $eq_id = preg_replace('100','<img scr="'.$strona.'images/play/equipment/chestplate/100.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  17. $eq_id = preg_replace('101','<img scr="'.$strona.'images/play/equipment/chestplate/101.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  18.  
  19. //150-199 spodnie
  20. $eq_id = preg_replace('150','<img scr="'.$strona.'images/play/equipment/leggins/150.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  21. $eq_id = preg_replace('151','<img scr="'.$strona.'images/play/equipment/leggins/151.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  22.  
  23. // 200-249 buty
  24. $eq_id = preg_replace('200','<img scr="'.$strona.'images/play/equipment/boots/200.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  25. $eq_id = preg_replace('201','<img scr="'.$strona.'images/play/equipment/boots/201.png" alt="Włącz obrazki w przeglądarce!">',$eq_id);
  26.  
  27. return($eq_id);
  28. }
  29. ?>
mar1aczi
Zerknij tu i odpowiedz sobie, czemu nie chciało działać: http://www.kurshtml.edu.pl/html/wstawienie...ka,zielony.html

Podpowiedź: literówka.
nospor
1) Nie zadne preg_replace a normalne str_replace
2) Jesli twoj tekt to tylko i wylacznie 001 czy 101 to wystarczy jedno:


$id = (int)$eq_id;
$eq_id = '<img scr="'.$strona.'images/play/equipment/sword/'.$id.'.png" alt="Włącz obrazki w przeglądarce!">';

zamiast 1000 cudakow.
mar1aczi
Cytat(nospor @ 19.11.2013, 13:33:19 ) *
...
$id = (int)$eq_id;
$eq_id = '<img scr="'.$strona.'images/play/equipment/sword/'.$id.'.png" alt="Włącz obrazki w przeglądarce!">';
...

Nie znajdzie źródła dla obrazka wink.gif
nospor
Ale podmiana sie wykona. A literowka w SCR to kolejny problem
Popek231
Aaaa... dobra, dzięki! Jesteście boscy:D

@nospor
Nie... nie, ja zamianę robię dla 5 członów eq,
ale chyba to jednak rozdzielę to na 5 funkcji i nadam własne nazwy i wyświetlę jak napisałeś, dzięki smile.gif


Dzięki wink.gif
nospor
Cytat
Nie... nie, ja zamianę robię dla 5 członów eq,
No tak, nie zwrocilem uwagi. ALe to nie zmienia faktu, ze ten czlon mozesz oIFowac i tez bedzie zdecydowanie krocej i lepiej i bardziej uniwersalnie
Popek231
A! nospor;
ścieżki są różne, więc nie będę tego robić jak napisałeś smile.gif

czyli tak być nie może:

$id = (int)$eq_id;
$eq_id = '<img scr="'.$strona.'images/play/equipment/sword/'.$id.'.png" alt="Włącz obrazki w przeglądarce!">';
nospor
No przeciez o tym wlasnie mowie.... masz oIFowac sword/helm/itp.
Popek231
Dobra, ogarniam, dzięki za pomoc, z tym sobie już poradzęsmile.gif
mar1aczi
W międzyczasie naklepałem:
  1. $eq_id = $_GET['id'];
  2.  
  3. function equipment($eq_id){ //zmiana ID zbroi na obrazki
  4.  
  5. if($eq_id > 0 and $eq_id < 50) { //1-49 miecz
  6. $eq_el = "sword";
  7. } elseif($eq_id >= 49 and $eq_id < 100){ //50-99 hełm
  8. $eq_el = "helmet";
  9. } elseif($eq_id >= 100 and $eq_id < 150){ //100-149 napierśnik
  10. $eq_el = "chestplate";
  11. } elseif($eq_id >= 150 and $eq_id < 200){ //150-199 spodnie
  12. $eq_el = "leggins";
  13. } elseif($eq_id >= 200 and $eq_id < 250){ // 200-249 buty
  14. $eq_el = "boots";
  15. }
  16.  
  17. $id = (int)$eq_id;
  18. $eq_id = '<img scr="'.$strona.'images/play/equipment/'.$eq_el.'/'.$id.'.png" alt="Włącz obrazki w przeglądarce!">';
  19. return($eq_id);
  20. }

Bądź ify można zamienić na switch'a
  1. switch($eq_id){
  2. case in_array($eq_id, range(1, 49)):
  3. $eq_el = "sword";
  4. break;
  5. case in_array($eq_id, range(50, 99)):
  6. $eq_el = "helmet";
  7. break;
  8. default:
  9. $eq_el = "null";
  10. }


Edycja: Szybkościowo, najlepiej wychodzi
  1. case ($eq_id > 0 and $eq_id < 50):
Popek231
O matko, dzięki:D
nie zauważyłem, że napisałeś, bo nie odświeżałem tematu w przeglądarce:D

mogę $eq_id podać jako array() i będzie działać, tak?:D
bo dokładniej to źle zrobiłem, że w temacie nie podałem, że ma być 5 członów tego, tzn jest podawane w stylu 001;050;100;150;200, więc (jeśli tak może być) powinno expand() załatwić sprawę

dzięki za odpowiedź <3

-----------------
Mam pytanie jeszcze jedno
czy mogę zrobić tak?

  1. include('config.php');
  2. $armor = mysql_query("SELECT armor FROM $tabela WHERE login='ThePopek'") or die(mysql_error());
  3. $eq_id = explode(';', $armor);
  4.  
  5. function equipment($eq_id){ //zmiana ID zbroi na obrazki
  6. ... tu reszta ...
nospor
Ogolnie to mozesz...... ino ze ogolnie. Podejrzewam ze tych loginow masz wiecej za jednym zamachem? Wowczas jest to niemilosiernie nieoptymalne. Jesli to jest lista userow, ktora pobierasz zapytaniem, to armor powinienies pobierac razem z tą listą a nie osobno.
Popek231
nie, w panelu użytkownika, wyświetla się jemu jego zbroja, czyli pobieram tylko dla niego 'armor'
jak robiłem to poprzez expand(); to mi błędy wywalało; - może to tak być, czy źle to tylko napisałem?
Turson
Nie widząc co napisałeś, ciężko ocenić czy zrobiłeś to dobrze czy źle smile.gif

expand() questionmark.gif Czy przypadkiesz nie masz na myśli explode()
Popek231
sory, tak, explode(); myślałem o komendzie w znanej grze i źle napisałem, wybacz smile.gif

  1. include('config.php');
  2. $armor = mysql_query("SELECT armor FROM $tabela WHERE login='ThePopek'") or die(mysql_error());
  3. $eq_id = explode(';', $armor);
  4. echo $eq_id[1]; // żeby sprawdzić, czy dobrze odczytało, chwiliwo dałem takie coś
  5. function equipment($eq_id){ //zmiana ID zbroi na obrazki
  6. /// reszta ///
Turson
Nigdzie nie pobierasz rekordów z bazy ot co smile.gif

  1. include('config.php');
  2. $query = mysql_query("SELECT armor FROM ".$tabela." WHERE login='ThePopek'") or die(mysql_error());
  3. $armor = mysql_fetch_assoc($query);
  4. $eq_id = explode(';', $armor["armor"]);
  5. print_r($eq_id);
  6. function equipment($eq_id){ //zmiana ID zbroi na obrazki
  7. /// reszta ///
Popek231
...
czyli tu zrobiłem błąd...
z góry wiem, że będzie działać, więc dzięki:)

sprawdzę jak tylko mój serwer się odlaguje... :/
bo aktualnie ugu.pl ma wielkiego laga na stronach użytkowników wink.gif
Turson
Generalnie polecam przestać używać mysql, bo jest przestarzałe. Zamiast tego lepiej używać mysqli bądź PDO.
nospor
$armor = mysql_query("SELECT armor FROM $tabela WHERE login='ThePopek'") or die(mysql_error());
$eq_id = explode(';', $armor);

Odpowiedz juz padla i mialem nie odpisywac ale nie moge...... Jak do jasnej ciasnej mozna leciec na forum i wpierw nie sprawdzic na czym sie operuje?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
Skoro ci nie dziala, to naprawde ciezko zrobic var_dump($armor); by sie upewnic co zawiera zmienna? To naprawde taki wielki problem? Przeciez to zajmie 2 sekundy o niebo szybciej niz lecenie na forum :/
Popek231
Dobra, dobra, już nie popełnię tego błędu:P

Zrobiłem to końcowo w ten sposób wink.gif
trochę pokomplikowałem, bo jest dużo kodu i rozdzieliłem każdy człon zbroi na osobne komórki w bazie, ale działa! smile.gif

Oto mój kod wink.gif
  1. <?php
  2. //if($index == 'yes'){ //zabezpieczenie wyświetlania bez index.php
  3. include('config.php');
  4.  
  5. $query1 = mysql_query("SELECT `armor1` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
  6. $armor1 = mysql_fetch_array($query1);
  7. $id1 = $armor1['armor1'];
  8. $armorr = '<img src="'.$strona.'images/play/equipment/sword/'.$id1.'.png" alt="Włącz obrazki w przeglądarce!">';
  9. echo $armorr;
  10.  
  11. $query2 = mysql_query("SELECT `armor2` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
  12. $armor2 = mysql_fetch_array($query2);
  13. $id2 = $armor2['armor2'];
  14. $armorr = '<img src="'.$strona.'images/play/equipment/helmet/'.$id2.'.png" alt="Włącz obrazki w przeglądarce!">';
  15. echo $armorr;
  16.  
  17. $query3 = mysql_query("SELECT `armor3` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
  18. $armor3 = mysql_fetch_array($query3);
  19. $id3 = $armor3['armor3'];
  20. $armorr = '<img src="'.$strona.'images/play/equipment/chestplate/'.$id3.'.png" alt="Włącz obrazki w przeglądarce!">';
  21. echo $armorr;
  22.  
  23. $query4 = mysql_query("SELECT `armor4` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
  24. $armor4 = mysql_fetch_array($query4);
  25. $id4 = $armor4['armor4'];
  26. $armorr = '<img src="'.$strona.'images/play/equipment/leggings/'.$id4.'.png" alt="Włącz obrazki w przeglądarce!">';
  27. echo $armorr;
  28.  
  29. $query5 = mysql_query("SELECT `armor5` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
  30. $armor5 = mysql_fetch_array($query5);
  31. $id5 = $armor5['armor5'];
  32. $armorr = '<img src="'.$strona.'images/play/equipment/boots/'.$id5.'.png" alt="Włącz obrazki w przeglądarce!">';
  33. echo $armorr;
  34.  
  35. //} else {
  36. // header('Location:'.$strona.'index.php');
  37. //}
  38. ?>


Dzięki za pomoc, pozdrawiam
Piotrek:D
Turson
Strasznie nieoptymalnie. Pobierasz wszystko z jednej tabeli, więc wystarczy
  1. $query = mysql_query("SELECT `armor1`, `armor2`, `armor3`, ``armor4`, `armor5` FROM $tabela_play WHERE login='ThePopek'") or die(mysql_error());
Popek231
Ostatecznie kod mam taki:

  1. <?php
  2. if($index == 'yes'){ //zabezpieczenie wyświetlania bez index.php
  3.  
  4. $query = @mysql_query("SELECT `armor1`, `armor2`, `armor3`, `armor4`, `armor5` FROM $tabela_play WHERE login='$sesja'");
  5. $armor = @mysql_fetch_array($query);
  6.  
  7. if(empty($armor)){
  8. echo 'Nie można wyświelić ekwipunku!';
  9. } else {
  10. $id1 = $armor['armor1'];
  11. $armorr1 = '<img src="'.$strona.'images/play/equipment/sword/'.$id1.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  12.  
  13. $id2 = $armor['armor2'];
  14. $armorr2 = '<img src="'.$strona.'images/play/equipment/helmet/'.$id2.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  15.  
  16. $id3 = $armor['armor3'];
  17. $armorr3 = '<img src="'.$strona.'images/play/equipment/chestplate/'.$id3.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  18.  
  19. $id4 = $armor['armor4'];
  20. $armorr4 = '<img src="'.$strona.'images/play/equipment/leggings/'.$id4.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  21.  
  22. $id5 = $armor['armor5'];
  23. $armorr5 = '<img src="'.$strona.'images/play/equipment/boots/'.$id5.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  24.  
  25. $armor_id = array($armorr1, $armorr2, $armorr3, $armorr4, $armorr5);
  26. }
  27.  
  28. } else {
  29. header('Location:'.$strona.'index.php');
  30. }
  31. ?>


to wszystko includuje do innego pliku, w którym wyświetla;)
dzięki za pomoc wink.gif
SmokAnalog
Cały ten blok:
  1. $id1 = $armor['armor1'];
  2. $armorr1 = '<img src="'.$strona.'images/play/equipment/sword/'.$id1.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  3.  
  4. $id2 = $armor['armor2'];
  5. $armorr2 = '<img src="'.$strona.'images/play/equipment/helmet/'.$id2.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  6.  
  7. $id3 = $armor['armor3'];
  8. $armorr3 = '<img src="'.$strona.'images/play/equipment/chestplate/'.$id3.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  9.  
  10. $id4 = $armor['armor4'];
  11. $armorr4 = '<img src="'.$strona.'images/play/equipment/leggings/'.$id4.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  12.  
  13. $id5 = $armor['armor5'];
  14. $armorr5 = '<img src="'.$strona.'images/play/equipment/boots/'.$id5.'.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  15.  
  16. $armor_id = array($armorr1, $armorr2, $armorr3, $armorr4, $armorr5);

Wystarczy zapisać tak:
  1. $armor_id = array_map(
  2. function ($id) use ($strona) {
  3. return '<img src="' . $strona . 'images/play/equipment/boots/' . $id . '.png" width="64" height="64" alt="Włącz obrazki w przeglądarce!">';
  4. },
  5. $armor
  6. );
Popek231
Każda część ma własny link wink.gif
np /boots/$id /leggins/$id itd:D

z ifami już nie będę kombinować, działa dobrze, jest git;)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.