Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana znaków, oraz optymalizacja
Ania-678
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.06.2007

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


Witam.

Piszę dwa problemy w jednym temacie.

1 problem to taki że w tekście przesyłanym przez $_POST['msg'] chcę dokonać formatowania na zasadzie pogrubienia w * *

Wydaje sie proste - użyć str_replace:

*tekst*tekst2
*[ b]tekst[ /b]*tekst2 (specjalnie dałam ze spacją by widoczne było)
*tekst*tekst2

ALE... co w takim przypadku gdzie chce by zformatowany został tekst W każdej PARZE gwiazdek (sic!) na zasadzie:

*tekst*tekst2*tekst3*
*[ b]tekst[ /b]*tekst2*[ b]tekst3[ /b]*
*tekst*tekst2*tekst3*

Ja osobiście na myślałam nad jakimś tworzeniu "par" z gwiazdek (bo te się NICZYM od siebie nie różnią i różnić się nie mogą) i wtedy na każdej parze dokonać formatowania... ale... JAK i czy to jest MOŻLIWE... (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)

2 problem to polegający na optymalizacji pewnego skryptu który pobiera z bazy "trochę" wartości tak:

  1. <?php
  2. $mywep = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='W' AND status='E'");
  3. $myarm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='A' AND status='E'");
  4. $myhelm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='H' AND status='E'");
  5. $mylegs = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='L' AND status='E'");
  6. $ewep = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='W' AND status='E'");
  7. $earm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='A' AND status='E'");
  8. $ehelm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='H' AND status='E'");
  9. $elegs = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='L' AND status='E'");
  10. $myczar = $db -> Execute("SELECT * FROM czary WHERE gracz=".$player -> id." AND status='E' AND typ='B'");
  11. $eczar = $db -> Execute("SELECT * FROM czary WHERE gracz=".$arrdefender['id']." AND status='E' AND typ='B'");
  12. $myczaro = $db -> Execute("SELECT * FROM czary WHERE gracz=".$player -> id." AND status='E' AND typ='O'");
  13. $eczaro = $db -> Execute("SELECT * FROM czary WHERE gracz=".$arrdefender['id']." AND status='E' AND typ='O'");
  14. $mybow = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='B' AND status='E'");
  15. $ebow = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='B' AND status='E'");
  16. $myarrows = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='R' AND status='E'");
  17. $earrows = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='R' AND status='E'");
  18. $mystaff = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='T' AND status='E'");
  19. $estaff = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='T' AND status='E'");
  20. $mycape = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='C' AND status='E'");
  21. $ecape = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='C' AND status='E'");
  22. $myshield = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='S' AND status='E'");
  23. $eshield = $db -> Execute("SELECT * FROM equipment WHERE owner=".$arrdefender['id']." AND type='S' AND status='E'");
  24. ?>


Czy jest możliwość JAKOŚ uproszczenia tego by tyle zapytań to dziadostwo nie słało..?

Pozdrawiam. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Ania-678 21.06.2007, 00:15:08
Go to the top of the page
+Quote Post
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


1. Poszukaj na forum pod hasłem BB Code, a także zainteresuj się na wyrażenia regularnymi. Możesz również poszukać klasy na forum, BzikOS napisał takową kiedyś (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

2.

  1. <?php
  2. $mywep = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='W' AND status='E'");
  3. $myarm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='A' AND status='E'");
  4. $myhelm = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='H' AND status='E'");
  5. $mylegs = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type='L' AND status='E'");
  6. ?>


a ) Zamiast gwiazdki, pobieramy te dane które potrzebujemy
b ) Wydaje mi się, że lepiej użyć jednego zapytania

  1. <?php
  2. "SELECT * FROM equipment WHERE owner=".$player -> id."
  3. ?>


A następnie poprzez php, wyciągnąć potrzebne wartości. Resztę zapytań podobnie można poprawić. Chociaż specem od zapytań nie jestem (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

c ) Możesz również cache'ować zapytania, aby przyspieszyć działanie skryptu.

Pozdrawiam.

~edit
Dwa koty Ci odpisały (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Ad 1. Wyrazenia regularne, wiele razy bylo na forum szukaj.
Ad 2. Pogrupuj operacje czyli moznesz kilka operacja zamknac w grupe i wtedy w warunku IN dac

  1. <?php
  2. $mywep = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND type IN ('W', 'A', 'H', 'L') AND status='E'");
  3. ?>
Go to the top of the page
+Quote Post
domis86
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


tak jak koledzy powiedzieli zmniejsz ilosc zapytan -> to podstawa
Lepiej miec mniej zapytan pobierających wiecej danych niz odwrotnie.
Wlasnie "query" i "execute" zabierają najwięcej czasu - a nie "fetch". (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif)
Go to the top of the page
+Quote Post
Ania-678
post
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.06.2007

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


1 - EDIT - zostało rozwiązane już.

2 - W jedno tego nie wrzuce bo 4 zapytania są z innej tabeli, oraz co drugie ma inny warunek WHERE
Oraz gwiazda musi być bo tabelka ma jakieś 10 pól i wszystkie skrypt potrzebuje...
No i te zmienne od tych zapytań - muszę je mieć bo skrypt sporych rozmiarów dość jest i na nich operuje, a nie mam pojęcia jak rozbić na ów zmienne wzorując sie na type jeśli bym użyła:

  1. <?php
  2. $aaa = $db -> Execute("SELECT * FROM equipment WHERE owner=".$player -> id." AND status='E'");
  3. ?>


Przez while ?

Ten post edytował Ania-678 24.06.2007, 21:54:15
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: 23.08.2025 - 12:52