Focuss
17.01.2011, 17:57:26
Witam
Posiadam na stronie obrazek który składa się z około 200 części i do tego za to co w danym miejscu się wyświetli odpowiadają dane wpisane w mysql
Tabela wygląca następująco:
id numer kategoria status
1 1 m w
2 2 m s
3 3 m r
i teraz chciałbym by na tronie w zaleśności czy w statusie jest w,r czy s wyświetlało się jeden z 3 rysunków... czyli obrazw.gif lub obrazs.gif lub obrazr.gif
napisałem to tak:
<td rowspan="2">
<?php
$result2 = mysql_query("SELECT * FROM `t_garaz` WHERE `id`='1'"); {
$dane1=$row;
}
echo"<img src=\"images/garaz/obraz$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; ?>
</td>
i w kazdym kolejnym daje id = 2 itd...
tylko teraz w kazdym miejscu gdzie jest obrazek musze wpisac tą komendę, - będzie to działać tylko czy wysłanie w 1 momencie 200 zapytan do mysql nie bedzie problemem? albo czy jest moze jakis lepszy sposób o którym ja niestety nie wiem

Proszę o pomoc...
Kshyhoo
17.01.2011, 18:31:10
Po co powielasz id i numer?
Focuss
17.01.2011, 22:05:08
bo kazde zdjecie jest zapisane jako kolejne id... i zeby wiadomo ze ten obrazek to jest 1 to pisuje recznie id i pozniej dane1[3] zczytuje z np id=1 wartosc kolumny 3... nie wiem czy to ma sens ale taki uklad z tyloma zdjeciami robie 1 raz
czyli pisze:
<td rowspan="2">
<?php
$result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='1'"); {
$dane1=$row;
}
echo"<img src=\"images/garaz/garaz1_232$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; ?>
</td>
<td rowspan="2">
<?php
$result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='2'"); {
$dane1=$row;
}
echo"<img src=\"images/garaz/garaz1_233$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; ?>
</td>
Czy może mi kto powiedzieć czy jest jakies inne wyjście czy musze wypelnic 200 takich zapytań i wtey zloży mi sie obrazek?
Kshyhoo
17.01.2011, 22:10:09
Ja nie kumam jednego, skoro jeden obrazek, to po co 200 zapytań? Co Ty tam trzymasz?
Focuss
17.01.2011, 22:32:48
ok to jescze raz....
jest jeden obraz jako całość, jest to zdjęcie parkingu... i teraz jest on pocięty na 200 miejsc, czyli mam 200 plikow gif teraz tak:
pliki gif są potrojone przez to że jeżeli w bazie będzie w to w danym miejscu wyswietli się plik obraz1w.gif - czyli miejsce jest wolne i bedzie białe, jeżeli będzie w bazie obraz1z.jpg to wyswietli się obraz z tym miejscem ale zaszrafowane na czerwono...
i teraz mam nazwy zdjęć i mam zmienne w bazie w lub z i je chce dodawać do linku do obrazu... czyli mam 200 miejsc to chce zeby z bazy zostało teraz wczytane czy dane miejsce jest wolne i wyswietlilo obraz z w lub z??
nie wiem czy jasno opisalem... jezeli rozumiesz o co mi chodzi to proszę o pomoc, bo moja metoda niby dziala ale jest masakrycznie dluga w pisaniu i nie wiem czy nie dalo by sie troche tego latwiej zapisac??
PanGuzol
17.01.2011, 22:41:18
Wystarczą Ci dwa pola w tabeli.
Id oraz stan.
I potem pobierasz jednym zapytaniem wszystkie rekordy i w pętli sobie sprawdzasz wszystko.
Focuss
17.01.2011, 22:47:26
niestety potrzebuje 4 kolumn gdyz:
nr okresla mi numery miejsc a sa to 2 paskinki, kategoria okresla mi ktory to parking, a status to stan
czy kolega moglby mi powiedziec jak zadac takie pytanie bo już zalamuje rece i nie wiem jak to zrobic....
Kshyhoo
17.01.2011, 22:48:43
Generalnie, to powinno być tak:
1. w bazie zapisujesz:
0 - odpowiadający grafice obraz1w.gif
1 - odpowiadający grafice obraz1r.jpg
2 - odpowiadający grafice obraz1z.jpg
2. warunkiem po zapytaniu wyświetlasz jeden z obrazków np:
if($obraz) == 0 {
// kodzik do grafiki
}
Potem składasz jako jeden obrazek.
Focuss
17.01.2011, 22:58:35
tak... tylko nie rozumiem jak mam zapisać żeby akurat zmieniło się na opcje 2 akurat miejsce 77 a nie inne... bo nigdzie nie podaje id??
czy mój kod tutaj ma sens??
<td rowspan="2">
<?php
$result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='1'"); {
$dane1=$row;
}
echo"<img src=\"images/garaz/garaz1_232$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; ?>
</td>
<td rowspan="2">
<?php
$result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='2'"); {
$dane1=$row;
}
echo"<img src=\"images/garaz/garaz1_233$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; ?>
</td>
tylko muszę go podac 200 razy w calosci by skryp mi dzialal, dlatego pytam czy jest jakas szybsza metoda by to zapytanie wyslac i by kazde zdjecie wyswietlilo się w odpowiedniej formie... w tym przypadku zmienna $dane1[3] sciaga mi znacznik s,z lub w i wtedy wyswietla się prawidłowo kazdy pokolei
Kshyhoo
17.01.2011, 23:05:56
Może tak:
tabela
garazID - wiadomo
p1 - dla obrazka 1
p2 - dla obrazka 2
p3 - dla obrazka 3
...
p200 - dla obrazka 200
Jeden rekord... jedno zapytanie.
Focuss
17.01.2011, 23:15:02
no tak ale wtedy robi mi się tabela z 200-ma kolumnami...
czy to będzie lepsze w zapisie i szybkosci dzialania? a jednoczesnie w napisaniu edycji tego rekordu? bo w mojej opcji napisanie edycji jest dosc proste w tym przypadku nie bedzie mi rozpoznawal miejsc po id
również wyświetlenie tabeli przynajmniej dla mnie bedzie trudne tak by osob która będzie to obslugiwala widziala tabele 1 wolne, 2 zajete ......
Kshyhoo
17.01.2011, 23:19:22
No tak to nie będzie rozpoznawał? Masz jedno zapytanie a potem warunkiem if albo switch/case wybierasz grafiki, przekazujesz do zmiennych i wyświetlasz.
Do tego możesz przechowywać wiele garaży, pod innym ID...
Odpowiedz sobie, co będzie szybsze: 200 zapytań po jeden rekord, czy jedno zapytanie po 200 rekordów?
Focuss
17.01.2011, 23:29:38
ok, ale jak teraz z tego wyswietlic tabelę:
|1 | 0 - czylo wolne | Edytuj
|2 | 1 - zajete | Edytuj
|3 | 1 - zajete | Edytuj
|4 | 1 - zajete | Edytuj
tak bym nie musial teraz pisac recznie w kazdym ze edycja jest do row[4]
przepraszam za glupie pytanie moze ale nigdy w ten sposob nie ukladalem tabeli by ją tak jakby później obrócić w php
a i jescze jedno pytanie, czt sposob jaki mi teraz poleciles będzie lepiej działał od tegp który na na samym początku zaproponowałem?? proszę o odpowiedz
PanGuzol
17.01.2011, 23:49:19
200 kolumn? najgłupszy pomysł jaki słyszałem.
Dodaj sobie kolumnę która będzie zawierała nazwę obrazka dla danego miejsca, lub przemianuj obrazki aby zawierały id w nazwie.
Pobierasz wszystkie rekordy zapytaniem.
"SELECT * FROM `_garaz`
Nastpnie wyświetlasz za pomocą while
{
echo"<img src=\"images/garaz/$row['kolumna_z_nazwa']$row[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; }
Focuss
18.01.2011, 13:03:48
no tak...
ale czy to nie zadziala tylkowtedy gdy numery miejsc czyli obrazki będą ułożone jeden pod drugim?
u miejsca nie dosc ze nie są pokolei to jeszcze są porozkładane po całej powierzchni i czasami dzielone obrazkami w ktorych nie będzie zadnej zmiennej tylko jakis staly element rysunku...
Cytat(PanGuzol @ 17.01.2011, 23:49:19 )

200 kolumn? najgłupszy pomysł jaki słyszałem.
Dodaj sobie kolumnę która będzie zawierała nazwę obrazka dla danego miejsca, lub przemianuj obrazki aby zawierały id w nazwie.
Pobierasz wszystkie rekordy zapytaniem.
"SELECT * FROM `_garaz`
Nastpnie wyświetlasz za pomocą while
{
echo"<img src=\"images/garaz/$row['kolumna_z_nazwa']$row[3].gif\" width=\"27\" height=\"50\" alt=\"\">"; }
Czy mógłbyś mi powiedzieć jak to porawnie zapisać i czy pokaże to oczekiwany przezemnie wynik?
PanGuzol
18.01.2011, 16:42:04
To znaczy, że musisz to jakoś uporządkować.
Skoro pola masz rozrzucone po powierzchni to każdemu polu nadaj wartości x i y aby określić ich położenie, podobnie jak oznaczasz punkty w układzie współrzędnych tylko punkt (0,0) potraktuj, że jest w górnym lewym rogu, będzie wygodniej.
A w polu status typ tinyint zapisujesz przykładowo:
0 - wolne miejsce
1 - zajęte miejsce
2 - jakiś tam stały element
I jak pobierzesz wszystkie rekordy to jedziesz pętlą i wyświetlasz.
Pierw w jednym rzędzie wszystkie z y=0 i x rosnąco od 0 do końca.
Focuss
18.01.2011, 16:51:55
hmmm... no tak, mam teraz wszystkie obrazki i w bazie mam zapisane ich nazwy,
mam wiele tabelek i podtabelek w ktorych porozrzucane są dane obrazki
czy obrazki niezmienne mam tez wpisac do bazy?
jak teraz przypisac do odpowiedniego pola dany obrazek?
PanGuzol
18.01.2011, 17:13:05
Zbuduj sobie taką tabelę:
id - primary key
x
y
nr - numer miejsca na danym parkingu
kategoria
stan
Aby połączyć rekord z obrazkiem na dysku masz dwie możliwości.
Albo dodajesz jeszcze jedną kolumnę do tabeli z nazwą obrazka odpowiadającą temu miejscu lub standaryzujesz sobie nazewnictwo obrazków np obrazek1.gif obrazek2.gif itd gdzie liczby na końcu to id odpowiedniego rekordu.
Osobiście dla twojego przypadku wybrał bym opcję drugą.
A obrazki "zajęte" od "wolnych" rozdzieliłbym wrzucając po porostu do innego katalogu, z lub w.
Natomiast jeśli w danym miejscu ma być jakiś stały element to wyświetlasz obrazek z katalogu s.
Focuss
18.01.2011, 17:17:47
hmmm chyba jednak nie dokonca rozumiem twoj sposób

a szkoda bo moze jest o wiele latwiejszy od tego co ja wymyslilem...
powiedz mi prosze czy moj sposób zamisu ktory pokazalem na początku ma sens by zapisywać tegaz 200 razy czyli do kazdego obrazka osobno wpisując po prostu id=1, 2..... i tak ciągnąć do 211 bo dokladnie tyle musze wyciągnąć z tabeli i czy to będzie jakos sprawnie dzialalo?
przy 10 obrazkach dziala normalnie ale nie wiem co bedzie dalej, napewno strasznie duzo roboty bedzie zeby to do każdego obrazka napisac.... ale czy zda taki zapis egzamin i czy baza nie bedzie wtedzy dzialala bardzo wolno za czym idzie wolne wczytanie się tej strony?
Cytat(PanGuzol @ 18.01.2011, 17:13:05 )

Zbuduj sobie taką tabelę:
id - primary key
x
y
nr - numer miejsca na danym parkingu
kategoria
stan
Aby połączyć rekord z obrazkiem na dysku masz dwie możliwości.
Albo dodajesz jeszcze jedną kolumnę do tabeli z nazwą obrazka odpowiadającą temu miejscu lub standaryzujesz sobie nazewnictwo obrazków np obrazek1.gif obrazek2.gif itd gdzie liczby na końcu to id odpowiedniego rekordu.
Osobiście dla twojego przypadku wybrał bym opcję drugą.
A obrazki "zajęte" od "wolnych" rozdzieliłbym wrzucając po porostu do innego katalogu, z lub w.
Natomiast jeśli w danym miejscu ma być jakiś stały element to wyświetlasz obrazek z katalogu s.
ok, ale powiedz mi co wpisuje w x i y bo nigdy czegos takiego nie przypisywalem jak teraz to przypisać do danego <td></td>

obrazki mam zestandaryzowane i obrazek 1 = id1 2=id2 więc tu by się zgadzało
ale nadal nie wiem co zrobic z konstrukcją taneli <td></td> - co zapisac w danym td by akurat wlasnie wczytal dany rysunek?
PanGuzol
18.01.2011, 17:20:49
Ten co pokazałeś na początku niema sensu bo pobierasz po jednym rekordzie kiedy możesz pobrać wszystkie 211 na raz.
Musisz sobie ustalić jakiś schemat nazewnictwa obrazków aby móc je wyświetlać korzystając z pętli.
Focuss
18.01.2011, 17:22:41
Cytat(PanGuzol @ 18.01.2011, 17:20:49 )

Ten co pokazałeś na początku niema sensu bo pobierasz po jednym rekordzie kiedy możesz pobrać wszystkie 211 na raz.
Musisz sobie ustalić jakiś schemat nazewnictwa obrazków aby móc je wyświetlać korzystając z pętli.
schemat juz mam id = numerowni obrazka czyli obraz5 = id5
ok, ale powiedz mi co wpisuje w x i y bo nigdy czegos takiego nie przypisywalem jak teraz to przypisać do danego <td></td>
obrazki mam zestandaryzowane i obrazek 1 = id1 2=id2 więc tu by się zgadzało
ale nadal nie wiem co zrobic z konstrukcją taneli <td></td> - co zapisac w danym td by akurat wlasnie wczytal dany rysunek?
PanGuzol
18.01.2011, 17:46:20
Zobacz sobie co wyświetli ten skrypt:
for($y=0;$y<10;$y++)
{
for($x=0;$x<10;$x++)
{
}
}
Focuss
18.01.2011, 22:59:23
Cytat(PanGuzol @ 18.01.2011, 17:46:20 )

Zobacz sobie co wyświetli ten skrypt:
for($y=0;$y<10;$y++)
{
for($x=0;$x<10;$x++)
{
}
}
no widze wyswietlilo mi tablice od (0,0) do (9,9), przepraszam za moze brak błysku ale nadal nie potrafie wdrożyć tego w mój problem

hmmm cos mi zaczyna switac, chwile potestuje moze to o to biega... zachwile pewnie dam znac czy juz rozumiem czy nie

Ok sposób już rozumiem, działa ale niestety mam kolejny problem, obawiam się że tego zdjęcia nie złoże tym sposobem, chwilke szlo ladnie ale teraz mi sie już rozwala jest on strasznie pocięty
PanGuzol
19.01.2011, 02:37:17
Jak już wyświetla Ci odpowiednie zdjęcia w ustalonej kolejności to od strony php i mysql koniec.
Wygląd to masz html i css.
Focuss
19.01.2011, 11:00:18
dzieki wielkie za pomoc i cierpliwosc
Hmm mam kolejny problem, zrobiłem pierwszy wiersz i jest oki do momentu (10,0) natomiast (11,0) przerzuca mi już do następnego wiersza i sie zaczyna wszystko rozwalac

co z tym zrobic??
PanGuzol
19.01.2011, 14:14:43
Pokaż jak to wygląda.
Focuss
19.01.2011, 15:25:42
hmm nie nie przerzuca to jest inny efekt, niestety domi mi jakies odstepy miedzy poszczeolnymi zdjeciami i sienie miescilo w wymiarze i przerzucalo do 2 linijki...
ale mam problem z wyeliminowaniem tych odstępów między zdjęciami
mm kod:
<img border=\"0\" margin=\"0\" src=\"images/garaz/$row[5]/garaz_$row[0].gif\">";
thek
19.01.2011, 15:41:30
Sprowadzaj nie tylko margin do zera. Także padding, border, outline.
Focuss
19.01.2011, 15:45:42
Cytat(thek @ 19.01.2011, 15:41:30 )

Sprowadzaj nie tylko margin do zera. Także padding, border, outline.
<img border=\"0\" margin=\"0\" padding=\"0\" outline=\"0\" src=\"images/garaz/$row[5]/garaz_$row[0].gif\">";
- niestety nadal bez zmian
PanGuzol
19.01.2011, 15:57:42
A te zdjęcia to umieszczasz w tabeli czy jak?
Focuss
19.01.2011, 16:12:27
juz sobie poradziłe wpisałem w stylu
img
{
display: block;
position:relative;
float:left;
border:0;
margin:0;
}
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.