[ Infinite Dreams @ 12.05.2004. 03:16 ] @
imam dva problem koji me izludjuju. pravim neku aplikaciju koja ce da ispisuje programske jezike u ovakvom rasporedu

php | asp | visual basic
.net | perl |

sve ovo je u tabeli i treba da izgleda kao hotscripts. kada dodam novi zapis tabela izgleda ovako

php | asp | visual basic
.net | perl | novi_zapis

kod za ovo
<%
While(dr.Read())
%>
<tr>
<td><%Response.Write(dr.Item("fieldname"))%></td>
<td><%If dr.Read() Then Response.Write(dr.Item("fieldname"))%></td>
<td><%If dr.Read() Then Response.Write(dr.Item("fieldname"))%></td>
</tr>
<%
End While
%>

ovo sve radi OK, ali pravi jedan problem. da uzmem sada situaciju kod mene. imam 14 zapisa (programskih jezika) ispisana u tri kolone. i sada jedino na zadnjem ne bi trebalo nista da se ispise, ali program ga ipak odradi kao da postoji... i to ne mogu za zaobidjem pa molim da ako ste razumeli sta zelim da mi kazete, posavetujete sta da radim i da predjete na sledeci, za mene izludjujuci problem



u onoj tabeli zelim da imam (kao sto je na hotscripts) u zagradama koliko u kojoj rubrici imam postova i za to sam pripremio sledeci sql upit

SELECT Count(*) As num FROM cat WHERE catID=id

id je atribut iz tabele u kojoj se nalaze svi postovi za sve jezike i pomocu atributa catID odredjujem koji pripada kojoj grupi... elem

kada izvrsim ovaj sql upit u zagradama imam broj 3 (posto u tabeli postoje tri zapisa), ali prikazuje za prva tri jezike pocev od leve strane pa nadesno u ovom slucaju PHP, ASP i VisualBasic dok su ostali 0 (nula)

ovo sam probavao da resim na gomilu nacina, ali nisam mogao da nadjem pravo resenje... mozete li mi vi pomoci da resim ovo? znam da je do ovoga doveo algoritam za ispisivanje tabela u onom obliku pa ako postoji neki drugi nacin prikazivanja tabele kako bi count radio kako treba bio bih zahvalan, a i sada me posle nekoliko dana nerviranja i zanima pravo resenje.

samo da napomenem da mi treba VB.NET kod i da je ODBC konekcija prema mysql bazi

hvala
[ ZokiR @ 12.05.2004. 06:53 ] @
Ja bih ti preporučio da koristiš DataGrid kontrolu umesto da se bakćeš sa HTML tabelama.

Napravi jedan DataTable sa dve kolone (jednu za jezik, drugu za broj postova po jeziku) i napuni iz baze. Potom prekopiraj sadržaj u drugi DataTable koji ima tri kolone, ćeliju po ćeliju dok ne dođeš do kraja, a onda podesi DataGrid.DataSource na tu drugu tabelu i pozovi DataGrid.DataBind() i to je to.
[ jablan @ 12.05.2004. 10:35 ] @
Citat:
Infinite Dreams:
ovo sve radi OK, ali pravi jedan problem. da uzmem sada situaciju kod mene. imam 14 zapisa (programskih jezika) ispisana u tri kolone. i sada jedino na zadnjem ne bi trebalo nista da se ispise, ali program ga ipak odradi kao da postoji... i to ne mogu za


Ne razumem baš 100% šta ti se tu dešava, tj. šta to program "odradi kao da postoji". Ispisuje nešto u toj zadnjoj ćeliji ili ne, i šta?
Možeš da radiš i sa asp repeaterom, tako što ćeš u OnDataBind eventu na svakom trećem separatoru dodati kraj i početak reda (</td><td>)

Drugo, zašto i imena kategorija i broj poruka u njima ne vučeš jednim istim SQL selectom?
[ Infinite Dreams @ 12.05.2004. 15:18 ] @
@ ZokiR

treba mi bas HTML ne DataGrid posto volim sam da pravim tabele... mada cu pokusati kako si rekao...

@ jablan

posto pored svakog zapisa ima slika da li je nesto novo postovano ili ne i treba na tih 14 zapisa da se pojavi, ali se ta slika pojavljuje i na 15tom zapisu, ali bez texta (posto text i ne postoji), ali ne bi trebala ni slika da se vidi... to je ono sto me zbunjuje... probao sam sa IF, ali onda mi nestane cela jedna kolona (zadnja)

mislio sam i ja da uradim sve sa jednim sql upitom, ali nadam se da kada bude bilo dosta zapisa da se stranica ne bi dugo ucitavala (ako tom sql upitu treba dosta vremena da se izvrsi ako ima dosta zapisa)
[ jablan @ 12.05.2004. 16:10 ] @
Citat:
Infinite Dreams:
posto pored svakog zapisa ima slika da li je nesto novo postovano ili ne i treba na tih 14 zapisa da se pojavi, ali se ta slika pojavljuje i na 15tom zapisu, ali bez texta (posto text i ne postoji), ali ne bi trebala ni slika da se vidi... to je ono sto me zbunjuje... probao sam sa IF, ali onda mi nestane cela jedna kolona (zadnja)

mislio sam i ja da uradim sve sa jednim sql upitom, ali nadam se da kada bude bilo dosta zapisa da se stranica ne bi dugo ucitavala (ako tom sql upitu treba dosta vremena da se izvrsi ako ima dosta zapisa)


Do sad nisi pomenuo tu sliku. Pročitaj dobro svoj post pre nego ga okačiš da ne bi traćio vreme ljudi koji bi hteli da ti pomognu.

Nemoj da brineš o dužini učitavanja stranice, taj sql će se izvršiti momentalno (samo indeksiraj tu tabelu nad kojom radiš COUNT po id-u po kome sumiraš). Zatim, u sadržaju ćelije u kojoj sve to ispisuješ reći ćeš nešto kao (pseudokood):
Code:

<td>
  <%
  print(dr["name"]);
  if (dr["count"] > 0)
    print(dr["count"] + "<img src=newitems.gif>");
  else
    print("&nbsp;");
  %>
</td>
[ Infinite Dreams @ 12.05.2004. 17:51 ] @
@ jablan

moja greska izvinjavam se...

uradio sam kao sto si rekao tj. napravio sql upit sve u jednom i on delimicno radi...

SELECT kategorije.id,kategorije.ime_kategorije,kodovi.catID,Count(*) As BrojKategorije FROM kategorije,kodovi WHERE kodovi.catID=kategorije.id GROUP BY kodovi.catID;

ovaj SQL upit u mySQL bazi (direknto) rad dok na stranici nece i kaze da ne postoji zapis za zadnju kolonu, ako nju izbacim onda mi izlista samo prva dva zapisa i jedan sa slikom i bez texta kao onaj zadnji...

probacu ovaj tvoj kod pa cu javiti...


IZMENA

probao sam kod i ubacio ovo na mesto gde treba da ispise rezultat Count

If dr.Item("BrojKategorije") > 0 Then%>
<%=dr.Item("BrojKategorije")%>
<%Else%>&nbsp;<%End If%>

i opet nece da radi tj. kaze
No data exists for the row/column.
[ jablan @ 13.05.2004. 09:11 ] @
Citat:
Infinite Dreams:
SELECT kategorije.id,kategorije.ime_kategorije,kodovi.catID,Count(*) As BrojKategorije FROM kategorije,kodovi WHERE kodovi.catID=kategorije.id GROUP BY kodovi.catID;

Ne možeš na ovaj način da pokupiš sve kategorije, tj. kategorije koje nemaju kodove (šta su kodovi uopšte i da li si siguran da si toj tabeli dao adekvatan naziv) neće biti uključene u rezultate.

Čuo sam da MySQL sada podržava ugnježđene upite (za razliku od onog vremena kad sam ja radio s njim), tako da možeš da uradiš nešto ovako:
Code:

select ime_kategorije, id, 
(select count(*) from kodovi where catid = kategorije.id) brojkodova 
from kategorije
[ Infinite Dreams @ 14.05.2004. 00:36 ] @
vidim sada i sam da ne valja SQL upit... probacu sa ovim... znam za ugnjezdene upite...