Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Jak rozdzielić ciąg znaków do zmiennych?
wembleyos
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2010

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


Witam. Tworze grę przeglądarkową. Zastanawiałem się nad jak najmniejszym wykorzystaniem pamięci bazy danych i chcę wyświetlać przebieg walki.
W rekordzie mam dane odpowiadające jednej rundzie:
Kod
użytkownik1/unik/nazwa_ataku \n
użytkownik2/atak/nazwa_ataku \n


Jak rozdzielić ten ciąg znaków by potem wyświetlić to na przykład tak:
Kod
Użytkownik wykonał unik i obronił się przed nazwa_ataku
Użytkownik2 wykonał atak nazwa_ataku i przeciwnik otrzymał obrażenie


Chodzi mi głownie o to, żeby np. te wartości przed pierwszym slashem dać do zmiennej user, drugą do atak a trzeci do kolejnej zmiennej nazwa_ataku. Jak to wykonać by wysłać te wartości do zmiennych?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Micchaleq
post
Post #2





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


funkcja explode rozdzielasz to po / i otrzymujesz tablice z której możesz pózniej uzyskać te zmienne

Ten post edytował Micchaleq 18.11.2011, 13:57:04


--------------------
Go to the top of the page
+Quote Post
wembleyos
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2010

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


No racja! A ja głupi kombinowałem z replace'mi smile.gif

No tak. A teraz zapytam pewnie o kolejną oczywistą głupotę. Jak zrobić by pokazywało mi cały ciąg znaków

To posiadam w bazie:
Kod
Konkret/unik/prosty
Konkret/atak/prosty
wembleyos/miss/sierpowy
Konkret/atak/sierpowy
wembleyos/miss/hak
Konkret/atak/hak
wembleyos/miss/korpus
Konkret/atak/korpus


Kod z wyświetlania
  1. <?php
  2. $pizza = $this->walka['runda'.$i.'_1'];
  3. $pieces = explode("/", $pizza);
  4.  
  5. echo $pieces[0]."->"; // nazwa użytkownika
  6. echo $pieces[1]."->"; // pozycja w walce
  7. echo $pieces[2]; // nazwa ataku
  8. echo "<br>";
  9. ?>


a wyświetla mi tylko pierwszy rząd
Kod
wembleyos->atak->prosty Konkret

Go to the top of the page
+Quote Post
Micchaleq
post
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


Witam,

co masz w zmiennej $pizza? ( wyświetl ją print_r($pizza) i wklej początek )

ogólnie to musisz to porozdzielać używając pętli foreach,

Ten post edytował Micchaleq 18.11.2011, 14:41:42


--------------------
Go to the top of the page
+Quote Post
wembleyos
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2010

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


Kod
$pizza  = $this->walka['runda'.$i.'_2'];


czyli
Kod
Konkret/unik/prosty
Konkret/atak/prosty
wembleyos/miss/sierpowy
Konkret/atak/sierpowy
wembleyos/miss/hak
Konkret/atak/hak
wembleyos/miss/korpus
Konkret/atak/korpus


Nie chce tego załatwiać przez str_replace bo potem chciałem dodać losowo wybierany tekst zależnie od 3 watości.
Go to the top of the page
+Quote Post
Micchaleq
post
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


No tak to już napisałeś, jednak ja chce wiedzieć czy dane z jakich to pobierasz to jakaś tablica z bazy danych, czy tez z jakiegoś pliku.

to co napisałeś :
$pizza = $this->walka['runda'.$i.'_1'];

mówi mi, że zmienna przyjmuje tą walkę z rundy i to na pewno dzieje się w pętli for


PS wklej więcej kodu lub przekopiuj kawałek z wykonania takiej instrukcji :

  1. echo "<pre>";
  2. print_r($pizza);
  3. echo "</pre>";


albo jeszcze inaczej co masz pod zmienna $pizza[2] ?

Ten post edytował Micchaleq 18.11.2011, 14:49:58


--------------------
Go to the top of the page
+Quote Post
wembleyos
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2010

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


Wszystko dzieje się w pętli for, ponieważ jest 8 rund, każda runda ma po "3 minuty" (x runda: 1minuta, 2minuta, 3 minuta) i w każdej minucie jest pokazywany przebieg odpowiadający określonej minucie, a pobieram to z tablicy z bazy danych.

Cały rekord z tabeli to właśnie ciąg tego rzędu
Kod
Konkret/unik/prosty
Konkret/atak/prosty
wembleyos/miss/sierpowy
Konkret/atak/sierpowy
wembleyos/miss/hak
Konkret/atak/hak
wembleyos/miss/korpus
Konkret/atak/korpus


czy dam to przez print_r czy $pizza[2] to wyskakuje i tak ten rekord smile.gif

Ten post edytował wembleyos 18.11.2011, 14:54:43
Go to the top of the page
+Quote Post
Micchaleq
post
Post #8





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


a więc najpierw

  1. $tmp = explode("\n" , $pizza);
  2.  
  3. for($j=1;$j<count($tmp)-1;$j++){
  4.  
  5. $pieces[$j-1] = explode("/", $tmp[$j]);
  6. }


Wyświetlanie

  1. foreach($pieces as $v){
  2. foreach($v as $p){
  3. echo $p." ";
  4. }
  5. echo "<br>";
  6. }



Oczywiście zmienne masz w $pieces[nr lini][numer informacji]

Ten post edytował Micchaleq 18.11.2011, 15:23:28


--------------------
Go to the top of the page
+Quote Post
wembleyos
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2010

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


Zadam kolejne pytanie. Czy ty co jest wyżej (wersja prymitywna) przesłac do php i przez php pokolorować komunikaty i pozmieniać atak/prosty unik/prosty itp. na tekst czy już odrazu to wrzucić do bazy?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 13:44