SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
Tablice wielowymiarowe w SwishMax-ie
Autor Wiadomość
vers44 
Praktyk



Dołączył: 15 Kwi 2007
Posty: 23
Skąd: South-East
Wysłany: Wto 12 Maj, 2009 18:10   Tablice wielowymiarowe w SwishMax-ie

Witam serdecznie wszystkich forumowiczow.
Nie zawracalbym nikomu glowy na forum, gdyby nie fakt, ze nijak nie moge sobie poradzic - a sprawa jest bardzo pilna......
Wszystko juz mam wlasciwie zakonczone (mapki, skrypty, gotowa baze danych na serwerze). Pozostalo mi tylko w Swishmax-ie uzyskanie dostepu do danych z tablicy dwuwymiarowej. Ale dokladnie:


zapis kodu Scene_1 :
onLoad () {
this.loadVariables("wynik1.php",'GET');
}

Dostep do zwyklych danych jest. Niby OK.


zapytanie MySQL z pliku wynik1.php :
$query="SELECT nazwa_sklepu, wsp_X, wsp_Y FROM $table
ORDER BY nazwa_sklepu";

Poszczegolne dane uzyskane z bazy danych sa jak zwykle dostepne (toz to tylko PHP i MySQL). Ilosc zwroconych rekordow jest rzedu 100-200. Tutaj rowniez jest OK. Oczywiscie w ostatecznosci otrzymujemy tablice dwuwymiarowa - np.:
$tablica[1]['nazwa_sklepu'] , $tablica[1]['wsp_X'] , $tablica[1]['wsp_Y']
$tablica[2]['nazwa_sklepu'] , $tablica[2]['wsp_X'] , $tablica[2]['wsp_Y']
$tablica[3]['nazwa_sklepu'] , $tablica[3]['wsp_X'] , $tablica[3]['wsp_Y']


I teraz wlasnie caly moj PROBLEM......................
Panowie, panie - jak te dane przeniesc teraz do (rowniez) tablicy dwywymiarowej w SwishMax-ie ?

Wertowalem ksiazke Pana Rolanda Zimka, szukalem na forum - ale nic na ten temat nie znalazlem..... Pomoze ktos ?
Chodzi mi o to, zeby zywcem przepisac te dane z MySQL-a (bedace w tablicy dwuwymiarowej) do tablicy dwuwymiarowej Swish-a.


Cos takiego nie chce dzialac :
echo("&tablica[1,\"nazwa_sklepu\"] = $tablica[1] ['nazwa_sklepu']&");

Probowalem wiec czegos takiego :
for ($i=1; $i<=$ilosc_wierszy; $i++)
{
$nazwa_sklepu = $tablica[$i]['nazwa_sklepu'];
$wsp_X = $tablica[$i]['wsp_X'];
$wsp_Y = $tablica[$i]['wsp_Y'];

echo("&tablica[$i,\"nazwa_sklepu\"] = $nazwa_sklepu&");
echo("&tablica[$i,\"wsp_X\"] = $wsp_X&");
echo("&tablica[$i,\"wsp_Y\"] = $wsp_Y&");
}

I nie wiem - dlaczego - nadal NIC.
Cos przekrecam ? Sam juz nie wiem....................


Pozdrawiam serdecznie.

[ Dodano: Wto 12 Maj, 2009 20:06 ]
Wlasnie poczytalem Help-a w SwishMaxi-e.................
Nic nie pisza na temat tablic wielowymiarowych. Czyzby program ich nie obsluguje?
Czy wiec przy zakladanych 200 rekordach z bazy trzeb by tworzyc 200 tablic jednowymiarowychm, ktore beda zawieraly informacje poszczegolnych rekordow?
A moze juz ktos rozwiklal taki problem?

[ Dodano: Sro 13 Maj, 2009 19:01 ]
----------------------------------------------------------------------------------------------------
Witam ponownie wszystkich forumowiczow.
Problemu jeszcze nie rozwiazalem - jednak probuje osiagnec swoj cel w inny sposob...
Zrezygnowalem na razie (moze ostatecznie) z tablicy wielowymiarowej i przerzucilem sie na szereg zmiennych utworzonych dynamicznie [to z pliku php wczytywanego przez loadVariables]:

for ($i=1; $i<=$ilosc_wierszy; $i++)
{
$nazwa_sklepu=$tablica[$i]['nazwa_sklepu'];
echo("&nazwa_$i=$nazwa_sklepu&");

$wsp_X=$tablica[$i]['wsp_X'];
echo("&wspX_$i=$wsp_X&");

$wsp_Y=$tablica[$i]['wsp_Y'];
echo("&wspY_$i=$wsp_Y&");
}

Zmienne tak utworzone maja w Swishu postac np.: nazwa_1 , nazwa_2 , wspX_1, wspX_2 , wspY_1 , wspY_2............ i tak dalej.
I jakby jest fajnie................. Jesli zechce na przyklad dostac sie do wartosci zmiennej wspX_42 - to oczywiscie wynosi ona 1560 (pikseli).

I tutaj znowu kolejna ciekawostka sie pojawila, ktorej tez nie moge jakos "przetrawic".........


W Scene_1 kod ma postac:

onEnterFrame() {

_root.kropka.i = 0;

//ilosc to zmienna okreslajaca ilosc zwroconych przez baze rekordow
//kropka - to nazwa kropki, ktora ma uzyskac odpowiednia wartosc pikseli na mapce

for (i=1; i<=ilosc; i++) {

kropka.duplicateSprite("kropka"+i,i);
_root.("kropka"+i).i = i;

_root.("kropka"+i)._X = ("wspX_"+i);
_root.("kropka"+i)._Y = ("wspY_"+i);
}
}

Niby nazewnictwo stosuje prawidlowe - ale ni ch****y nie che dzialac. Program nie widzi wartosci zmiennych !
Jak wklepie na probe wspX_42 - to widzi jak byk ze to 1560 -
a jak zechce wykorzystac ("wspX_"+i) - to program jest "slepy"...........
Tzn. nie calkiem slepy - bo zamiast widziec zmienna - "widzi" jednie ciag znakow w postaci: "wspX_42".
Moze mi ktos pomoc - bo juz calkiem baranieje i nie wiem, jak dotrzec do celu.

Prosze o pomoc i jeszcze raz goraco podrawiam.
_________________
kNOWleDGe aBoVE All
 
     
eden
Ekspert


Pomógł: 35 razy
Dołączył: 04 Sty 2008
Posty: 265
Skąd: warsaw
Wysłany: Sro 13 Maj, 2009 21:28   

po kolei...

1.
tablica dwuwymiarowa we flashu, to poprostu tablica tablic. Czyli kazdy element tablicy musi być nowa tablicą.


Cytat:
moj2d_array = new Array();

moj2d_array[0] = new Array();
moj2d_array[0][0] = "wartosc";

trace(moj2d_array[0][0]);


2.
wiadomo ze niestety nie da sie przesłac złozonego obiektu danych jakim jest tablica przez GET czy POST do flash lub z flasha.
Dlatego musisz tablice wyników poddac procesowi serializacji, i deserializacji we flashu (ten drugi niestety niema wbudowanych do tego funkcji wiec trzeba pocyztac na php.net jak działa serializacja)

3.
W sumie, mozesz w php pominąc serializację jesli chcesz i wyswietlić cały ciąg pobranych zmiennych, cos jak

Cytat:
&zmienna1="cos1";
&zmienna1_1="cos1_1";
&zmienna1_2="cos1_2";
&zmienna2="cos2";
&zmienna2_1="cos2_1";
&zmienna2_2="cos2_2";


i dopiero poukładac ładnie ten chaos do tablic wielowymiarowych. (troche przestazała metoda, ale zadziała)

4.
Niewiem co chcesz osiągnac ale jak widze onEnterFrame() w którym jest jakis for() to napewno wiem ze jest to mało wydajne i jest pierwszą prawdopodobną przyczyną niedziałania czegokolwiek.

5.
Jesli chcez z ciągu znaków ("wspX_"+i) wydobyc wartość ktorej odpowiada zmienna o takiej nazwie to uzywasz do tego globalnej funkcji eval lub nawiasów kwadratowych
Cytat:
eval("wspX_"+i) // prawdopodobnie zwroci wartosc zmiennej np wspX_1
["wspX_"+i] // niewiem czy w tym przypadku zadziała, ale spróbuj.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
         
Strona wygenerowana w 0.16 sekundy. Zapytań do SQL: 14