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

PHP + MySQL Optymalizacja kodu funkcji

Object Storage Arubacloud
0 głosów
267 wizyt
pytanie zadane 12 grudnia 2015 w PHP przez Miki Bywalec (2,480 p.)

Witam.

Mam małe doświadczenie w PHP i MySQL tym samym proszę o pomoc w optymalizacji kodu. Kod działa jednak wg. mnie wygląda brzydko i może być później problem z jego rozbudową.

Chcę wyciągnąc z tabeli wartość INT od 1 - 5 a następnie zamienić ją na obrazek i przypisać do zmiennej (a_taktyka1, a_taktyka2, a_taktyka3, a_taktyka4), którą w późniejszej części kodu wyświetlam.

Są mi potrzebne cztery zmienne (każda będzie odpowiadać za jedną rundę walki) przez co zrobiłem cztery funkcje. Proszę o pomoc ponieważ wydaje mi się, że mozna to zmniejszyć do jednej funkcji lub rozbudowanego switch-a jednak nie mam pomysłu jak to zrobić.

Próbowałem mieszać z switch(($wiersz['a_taktyka1']) II ($wiersz['a_taktyka2']) II ($wiersz['a_taktyka3']) || ($wiersz['a_taktyka1'])) jednak i tak kod blokuje mi nazwa funkcji.

Z góry dziękuję za każdą pomoc i opinię nawet typu "zostaw jak jest" wink

 

Działający kod:

	// ...
	
	$rezultat = @$polaczenie->query("SELECT * FROM uzytkownicy WHERE id='$_SESSION[id]'");		
	while (($wiersz = $rezultat->fetch_assoc()) !== null)
	{
		
		$wiersz["a_taktyka1"];
		$wiersz["a_taktyka2"];
		$wiersz["a_taktyka3"];
		$wiersz["a_taktyka4"];
		
		function a_taktyka1($wiersz)
		{				
			switch($wiersz['a_taktyka1'])
			{
				case 1:
					return "<img src='src/a_taktyka1.png' width='150px' height='300px'>";
				break;
				case 2:
					return "<img src='src/a_taktyka2.png' width='150px' height='300px'>";
				break;
				case 3:
					return "<img src='src/a_taktyka3.png' width='150px' height='300px'>";
				break;
				case 4:
					return "<img src='src/a_taktyka4.png' width='150px' height='300px'>";
				break;
				case 5:
					return "<img src='src/a_taktyka5.png' width='150px' height='300px'>";
				break;
			}
		}
		
		function a_taktyka2($wiersz)
		{				
			switch($wiersz['a_taktyka2'])
			{
				case 1:
					return "<img src='src/a_taktyka1.png' width='150px' height='300px'>";
				break;
				case 2:
					return "<img src='src/a_taktyka2.png' width='150px' height='300px'>";
				break;
				case 3:
					return "<img src='src/a_taktyka3.png' width='150px' height='300px'>";
				break;
				case 4:
					return "<img src='src/a_taktyka4.png' width='150px' height='300px'>";
				break;
				case 5:
					return "<img src='src/a_taktyka5.png' width='150px' height='300px'>";
				break;
			}
		}
		
		function a_taktyka3($wiersz)
		{				
			switch($wiersz['a_taktyka3'])
			{
				case 1:
					return "<img src='src/a_taktyka1.png' width='150px' height='300px'>";
				break;
				case 2:
					return "<img src='src/a_taktyka2.png' width='150px' height='300px'>";
				break;
				case 3:
					return "<img src='src/a_taktyka3.png' width='150px' height='300px'>";
				break;
				case 4:
					return "<img src='src/a_taktyka4.png' width='150px' height='300px'>";
				break;
				case 5:
					return "<img src='src/a_taktyka5.png' width='150px' height='300px'>";
				break;
			}
		}
		
		function a_taktyka4($wiersz)
		{				
			switch($wiersz['a_taktyka4'])
			{
				case 1:
					return "<img src='src/a_taktyka1.png' width='150px' height='300px'>";
				break;
				case 2:
					return "<img src='src/a_taktyka2.png' width='150px' height='300px'>";
				break;
				case 3:
					return "<img src='src/a_taktyka3.png' width='150px' height='300px'>";
				break;
				case 4:
					return "<img src='src/a_taktyka4.png' width='150px' height='300px'>";
				break;
				case 5:
					return "<img src='src/a_taktyka5.png' width='150px' height='300px'>";
				break;
			}
		}
			
		$a_taktyka1 = a_taktyka1($wiersz);
		$a_taktyka2 = a_taktyka2($wiersz);
		$a_taktyka3 = a_taktyka3($wiersz);
		$a_taktyka4 = a_taktyka4($wiersz);

	}
	
	// ...
	
	echo $a_taktyka1;
	echo $a_taktyka2;
	echo $a_taktyka3;
	echo $a_taktyka4;
	
	// ...

 

 

3 odpowiedzi

+2 głosów
odpowiedź 12 grudnia 2015 przez jeremus Maniak (59,720 p.)
nie potrzebujesz do tego żadnej funkcji.

 uwórz tablicę typy string o rozmiarze 5 a w nie wpisz nazwy obrazków np.

 t_obr[1]="a_taktyka1.png"  itd

a do zmiennej przypisz po prostu :

a_taktyka=t_obr[$wiersz['a_taktyka1']

  anajlepiej zrobis zjeśłi nazwy obrazków umieścisz w tabilicy mysqla, i wybierzesz je zapytaniem

 

a potem na podstawie
komentarz 12 grudnia 2015 przez writen Nałogowiec (29,060 p.)

 anajlepiej zrobis zjeśłi nazwy obrazków umieścisz w tabilicy mysqla, i wybierzesz je zapytaniem

Raczej nie jest to najlepsze. Co gdy nazwy plików z jakiegoś powodu będzie musiały być zmienione? Po co każdemu użytkownikowi zapisywać nazwę jakiegoś tam obrazka?

komentarz 12 grudnia 2015 przez jeremus Maniak (59,720 p.)
to jest stała tablica wspólna dla wszystkich użytkowników

lepiej przechowywac takie dane w bazie a nie kodzie programu

jęśli obrazki  mają ulec zmianie to po prostu  podmienisz nazwy w tabeli bazy  a kod pozostaje niezmienny
komentarz 12 grudnia 2015 przez writen Nałogowiec (29,060 p.)
No można zapisać te nazwy plików w tabeli z konfiguracją. O to ci chodziło?
komentarz 12 grudnia 2015 przez jeremus Maniak (59,720 p.)
tak, to chyba najbardziel eleganckie rowiązanie
+2 głosów
odpowiedź 12 grudnia 2015 przez writen Nałogowiec (29,060 p.)
edycja 12 grudnia 2015 przez writen

Dlaczego definiujesz funkcje wewnątrz pętli? No i po ci ci ta pętla skoro wybierasz tylko jeden rekord (zakładając, że id jest unikalne, bo takie powinno być)?

Po co powielasz te funkcje i switche skoro robią dokładnie to samo?

No i po co ci ta małpa?

Z góry dziękuję za każdą pomoc i opinię nawet typu "zostaw jak jest"

Tylko totalny idiota mógłby powiedzieć, żebyś zostawił tak jak jest. 

0 głosów
odpowiedź 16 grudnia 2015 przez Miki Bywalec (2,480 p.)

O tablicy nawet nie pomyślałem surprise

Dzięki za pomoc

 

PS. Robię sporo błędów ponieważ dopiero się uczę... THX za każdą konstruktywną krytykę

Podobne pytania

0 głosów
3 odpowiedzi 461 wizyt
pytanie zadane 11 listopada 2016 w PHP przez Q_Nick Mądrala (5,010 p.)
0 głosów
2 odpowiedzi 525 wizyt
pytanie zadane 27 czerwca 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 462 wizyt
pytanie zadane 11 listopada 2018 w PHP przez Śmieszek_;3 Użytkownik (780 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...