Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obrazek na stronie złożony z 200 części (części pobierane z mysl)
Forum PHP.pl > Forum > Przedszkole
Focuss
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:
  1. <td rowspan="2">
  2. <?php
  3. $result2 = mysql_query("SELECT * FROM `t_garaz` WHERE `id`='1'");
  4. while ($row=mysql_fetch_array($result2))
  5. {
  6. $dane1=$row;
  7. }
  8. echo"<img src=\"images/garaz/obraz$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  9. ?>
  10. </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 questionmark.gif

Proszę o pomoc...
Kshyhoo
Po co powielasz id i numer?
Focuss
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:
  1. <td rowspan="2">
  2. <?php
  3. $result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='1'");
  4. while ($row=mysql_fetch_array($result2))
  5. {
  6. $dane1=$row;
  7. }
  8. echo"<img src=\"images/garaz/garaz1_232$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  9. ?>
  10. </td>
  11. <td rowspan="2">
  12. <?php
  13. $result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='2'");
  14. while ($row=mysql_fetch_array($result2))
  15. {
  16. $dane1=$row;
  17. }
  18. echo"<img src=\"images/garaz/garaz1_233$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  19. ?>
  20. </td>
  21.  


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
Ja nie kumam jednego, skoro jeden obrazek, to po co 200 zapytań? Co Ty tam trzymasz?
Focuss
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
Wystarczą Ci dwa pola w tabeli.
Id oraz stan.
I potem pobierasz jednym zapytaniem wszystkie rekordy i w pętli sobie sprawdzasz wszystko.
Focuss
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
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:
  1. if($obraz) == 0 {
  2. // kodzik do grafiki
  3. }

Potem składasz jako jeden obrazek.
Focuss
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??

  1. <td rowspan="2">
  2. <?php
  3. $result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='1'");
  4. while ($row=mysql_fetch_array($result2))
  5. {
  6. $dane1=$row;
  7. }
  8. echo"<img src=\"images/garaz/garaz1_232$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  9. ?>
  10. </td>
  11. <td rowspan="2">
  12. <?php
  13. $result2 = mysql_query("SELECT * FROM `_garaz` WHERE `id`='2'");
  14. while ($row=mysql_fetch_array($result2))
  15. {
  16. $dane1=$row;
  17. }
  18. echo"<img src=\"images/garaz/garaz1_233$dane1[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  19. ?>
  20. </td>
  21.  
  22.  


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
Może tak:
tabela garaz
ID - wiadomo
p1 - dla obrazka 1
p2 - dla obrazka 2
p3 - dla obrazka 3
...
p200 - dla obrazka 200
Jeden rekord... jedno zapytanie.
smile.gif
Focuss
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
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
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 smile.gif
PanGuzol
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.
  1. "SELECT * FROM `_garaz`

Nastpnie wyświetlasz za pomocą while
  1. while ($row=mysql_fetch_array($result2))
  2. {
  3. echo"<img src=\"images/garaz/$row['kolumna_z_nazwa']$row[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  4. }
  5.  
Focuss
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.
  1. "SELECT * FROM `_garaz`

Nastpnie wyświetlasz za pomocą while
  1. while ($row=mysql_fetch_array($result2))
  2. {
  3. echo"<img src=\"images/garaz/$row['kolumna_z_nazwa']$row[3].gif\" width=\"27\" height=\"50\" alt=\"\">";
  4. }
  5.  


Czy mógłbyś mi powiedzieć jak to porawnie zapisać i czy pokaże to oczekiwany przezemnie wynik?
PanGuzol
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
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
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
hmmm chyba jednak nie dokonca rozumiem twoj sposób sad.gif 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> questionmark.gif
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
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
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
Zobacz sobie co wyświetli ten skrypt:
  1. for($y=0;$y<10;$y++)
  2. {
  3. for($x=0;$x<10;$x++)
  4. {
  5. echo "($x,$y),";
  6. }
  7. echo "<br />";
  8. }
Focuss
Cytat(PanGuzol @ 18.01.2011, 17:46:20 ) *
Zobacz sobie co wyświetli ten skrypt:
  1. for($y=0;$y<10;$y++)
  2. {
  3. for($x=0;$x<10;$x++)
  4. {
  5. echo "($x,$y),";
  6. }
  7. echo "<br />";
  8. }

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 sad.gif

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

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 sad.gif
PanGuzol
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
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 sad.gif co z tym zrobic?? sad.gif
PanGuzol
Pokaż jak to wygląda.
Focuss
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:
  1. <img border=\"0\" margin=\"0\" src=\"images/garaz/$row[5]/garaz_$row[0].gif\">";
thek
Sprowadzaj nie tylko margin do zera. Także padding, border, outline.
Focuss
Cytat(thek @ 19.01.2011, 15:41:30 ) *
Sprowadzaj nie tylko margin do zera. Także padding, border, outline.


  1. <img border=\"0\" margin=\"0\" padding=\"0\" outline=\"0\" src=\"images/garaz/$row[5]/garaz_$row[0].gif\">";
- niestety nadal bez zmian
PanGuzol
A te zdjęcia to umieszczasz w tabeli czy jak?
Focuss
juz sobie poradziłe wpisałem w stylu

  1. img
  2. {
  3. display: block;
  4. position:relative;
  5. float:left;
  6. border:0;
  7. margin:0;
  8. }
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.