Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mysql i php, prikazivanje u dve kolone, mysql_fetch_array() i ostale funkcije, malo SQL-a

[es] :: PHP :: mysql i php, prikazivanje u dve kolone, mysql_fetch_array() i ostale funkcije, malo SQL-a

[ Pregleda: 3709 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

simbad_se

Član broj: 5994
Poruke: 2
*.nsd.sezampro.yu



Profil

icon mysql i php, prikazivanje u dve kolone, mysql_fetch_array() i ostale funkcije, malo SQL-a26.10.2002. u 16:01 - pre 261 meseci
Interesuje me sledece:

Kako u PHP-u uraditi da recimo kada pozivamo neke fajlove iz baze da ih prikazuje u dve kolone.

znaci imam jednu tabelu i sad ocu sa leve strane da mi se prikazuje podatak pa sa desne , pa onda u sledecem redu isto tako...
nadam se da sam jasan.

Jedno jednostavno pitanje , da li posle svake konekcije na bazu treba da stavljamo close connection?

I jos samo jena stvar:
Primer imam u bazi neki text i sad hocu da se prikaze samo neki mali deo i da kad neko klikne na dalje sa se prikaze ceo text. Nesto kao news koji ima taj neki privju.

HVALA, mnogo.

[Ovu poruku je menjao Go! X dana 19.11.2002. u 17:56 GMT]
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Za nas koji ne znamo molim odgovor26.10.2002. u 16:08 - pre 261 meseci
1) sto se prvoga tice nisi bio jasan. Kako fajlove iz BLOB-a da prikazujes u kolonama? Ako si mislio na tekst, sta je problem. Imaš ...<tr><td> kolona 1 </td><td> kolona 2 </td></tr>... stim što se na kolona 1 i kolona 2 nalaze neke varijable iz niza koji vraca mysql_fetch_array.

2) imas mysql_connect na pocetku fajla i mysql_close na kraju.

3) izvuces iz baze ceo string, zatim ga sa string funkijama podelis kako god zelis i prikazes. Na drugoj strani prikazujes ceo tekst, bez podele stringa.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.107.EUnet.yu



+1 Profil

icon Re: Za nas koji ne znamo molim odgovor27.10.2002. u 00:37 - pre 261 meseci
konekcija se automatski zatvara na kraju skripta. nema potrebe za mysql_close()

Umesto cupanja celog stringa citas "SELECT ... (sve ostalo) ..., LEFT(newsText, 100) as Text ..."
Ovde ti je "newsText" naziv TEXT polja, a 100 je proizvoljan broj karaktera koji citas. Cupanje celog stringa ne poboljsava performanse, samo jos pogorsava. Ako hoces brze citanje, pisi SELECT ovako.

Kada neko klikne na na primer "read more" onda citas ceo tekst.
Goran Pilipović fka bluesman
 
Odgovor na temu

Divine
Miloš Šaković
IT Manager
Yugoslavia

Član broj: 883
Poruke: 108
195.66.187.*

ICQ: 16044064
Sajt: www.divine.cg.yu


Profil

icon Re: Za nas koji ne znamo molim odgovor27.10.2002. u 02:11 - pre 261 meseci
Ovo trece je jako jednostavno.
Ukoliko koristis LEFT(.. u SQL upitu, moze se desiti da ti u "preview" varijanti prikaze tekst kome je poslednja rec i recenica otkinuta.

Najlakse i bezbolno resenje je da imas 2 kolone u SQL tabeli. Jedna za preview varijantu, a druga za opsirniju. Na kraju prevew varijante stavljas link: Opsirnije ili kako god hoces (sliku ili nesto slicno); i saljes variablu kroz taj link na sledecu stranicu. Taj link treba da sadrzi ID od vijesti za koju zelis da prikazes opsirniju varijantu. A ovamo, ako zelis da prikazes izvlacis iz baze i opsirniju i eventualno prevju varijantu. Sve po potrebi. ;)


Sto se tice prvog pitanja, evo ti kod koji sam ja koristio da podijelim razglednice u 2 kolone. Fajl je prikacen uz porukicu.
I see dead people...
Prikačeni fajlovi
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.183.EUnet.yu



+1 Profil

icon Re: Za nas koji ne znamo molim odgovor17.11.2002. u 01:55 - pre 260 meseci
zamisli da imas milion recorda, ili zamisli da hoces da prosiris jednu kolonu da ne prikazuje prvih 20 karaktera vec 35. Osim toga, dodas na kraju teksta ... pa je jasno da ima nastavak
Goran Pilipović fka bluesman
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za nas koji ne znamo molim odgovor17.11.2002. u 02:38 - pre 260 meseci
Citat:
bluesman:
Umesto cupanja celog stringa citas "SELECT ... (sve ostalo) ..., LEFT(newsText, 100) as Text ..."
Ovde ti je "newsText" naziv TEXT polja, a 100 je proizvoljan broj karaktera koji citas....


Izvini čisto radi radoznalosti.... Šta bi tačno AS TEXT trebao da radi u ovom slučaju?
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
62.108.114.*

Sajt: localhost


+5 Profil

icon Re: Za nas koji ne znamo molim odgovor17.11.2002. u 05:28 - pre 260 meseci
as text menja ime kolone u sql-u, da bi posle mogao da je referencirash u nizu koji si dobio sa mysql_fetch_assoc()

recimo, ako imash:

Code:

$r=mysql_query('SELECT 1+1 AS zbir');

$a=mysql_fetch_assoc($r);

// onda mozes pisati

echo $a['zbir'];

// u suprotnom bi morao da koristish mysql_fetch_array($r)
// i posle echo $a[0] sto nije bash citljivo kao prethodno...



korisno za bilo koje kolone koje koriste aritmetiku, funkcije, i prilikom join-ova vise tabela...
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za nas koji ne znamo molim odgovor17.11.2002. u 10:58 - pre 260 meseci
Ohh... Kontam.Mada ja koristim mysql_fetch_row() pa najverovatnije zato nisam znao za AS.

Hvala :)
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.162.EUnet.yu



+1 Profil

icon Re: Za nas koji ne znamo molim odgovor18.11.2002. u 11:40 - pre 260 meseci
Pa nema to veze sta koristis, po defaultu se fetchuje numericki i asocijativni niz. Ti mozes da fetchujes ili jedne ili drug ili i jedne i druge. Sta to znaci? Recimo ako imas tabelu

id
username
password

kada dobijes rezultat (po defaultu) dobijas 2 niza:

rec[0][0], rec[0][1], rec[0][2]
i
rec[0]["id"], rec[0]["username"], rec[0]["password"]

sto znaci da mozes clanovima niza da pristupis preko 2 ideksa (na primer za polje username mozes da pristupis preko rec[0][1] ili rec[0]["username"]

Ako si ukljucio sam MYSQL_ASSOC dobijas samo asocijativni niz (2.), kada je ukljuceno MYSQL_NUM dobijas samo numericki niz (1.), a klada je (default) MYSQL_BOTH dobijas i jedan i drugi pa ti biras kako ces da ga koristis. Dobra ideja je da koristis ili jedan ili drugi, ne oba (MYSQ_BOTH), jer u slucaju da imas mnogo rezultata ubrzavas izvrsenje querija. MYSQ_ASSOC je (prema dokumentaciji) neznatno sporiji, ali (prema meni) znatno korisniji

Inace, ono AS Text nije nista drugo osim obican alias, znaci imas polje koje se zove TekstPoruke i ti hoces da iscupas samo deo sa LEFT(), da bi ti se pojavio u rezultatima tako kako hoces dodelis mu alias i pojavljuje se kao posebna kolona. I to nema veze sa PHP vec SQL!!!

Inace, nema veze da li koristis mysql_fetch_row ili mysq_fetch_object, taj alias ti se pojavljuje, jer to nema veze sa tim, ove dve funkcije ti samo vracaju red po red rezultata.

Tacno je da je od php 4.0.3 ubacen i mysql_fetch_assoc, ali ona nista drugo ne radi osim
mysql_fetch_array ( resource result, MYSQL_ASSOC)

znaci, komentar u odgovoru od zombie / DDG
Citat:

// u suprotnom bi morao da koristish mysql_fetch_array($r)

nije tacan.
Goran Pilipović fka bluesman
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za nas koji ne znamo molim odgovor18.11.2002. u 13:46 - pre 260 meseci
Ne nisi skontao.... samo sam hteo da kažem da ako koristiš mysql_fetch_row onda ne moraš da stavljaš AS

primer:

Code:

$brz=mysql_query("select left(tekst,100) from bzvz");
while($row=mysql_fetch_row($brz)) {
 echo "$row[0]<br />";
}


I videćeš da radi!
 
Odgovor na temu

dwarf
Beograd, Srbija

Član broj: 1328
Poruke: 336
*.yubc.net



Profil

icon Re: Za nas koji ne znamo molim odgovor18.11.2002. u 16:03 - pre 260 meseci
Naravno da je tacno. mysql_fetch_array vraca asocijativni niz, jos poznatiji kao hash, dok mysql_fetch_row vraca "obican" niz, dakle pristupas mu preko indeksa, odnosno "0", "1" itd..

A ovo objasnjenje "AS"-a u SQL-u je najludje koje sam cuo. AS prosto pravi alias na kolonu koji se dobija u konacnom rezutlatu. Ne samo da je lakse da se kasnije referencira iz PHP-a vec se moze koristiti i da se, recimo, sortira po rezultatu neke funkcije. Ovo vec zavisi od baze podataka do baze podataka i od funkcije do funkcije. Ali, recimo i to moze.

Toliko o tome.
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Za nas koji ne znamo molim odgovor18.11.2002. u 18:19 - pre 260 meseci
Citat:
bluesman:
Pa nema to veze sta koristis, po defaultu se fetchuje numericki i asocijativni niz. Ti mozes da fetchujes ili jedne ili drug ili i jedne i druge. Sta to znaci? Recimo ako imas tabelu

id
username
password

kada dobijes rezultat (po defaultu) dobijas 2 niza:

rec[0][0], rec[0][1], rec[0][2]
i
rec[0]["id"], rec[0]["username"], rec[0]["password"]


Jesi li siguran da je bas ovako? :)
Citat:

sto znaci da mozes clanovima niza da pristupis preko 2 ideksa (na primer za polje username mozes da pristupis preko rec[0][1] ili rec[0]["username"]

Jesi li siguran da je bas ovako? :)

Citat:

Ako si ukljucio sam MYSQL_ASSOC dobijas samo asocijativni niz (2.), kada je ukljuceno MYSQL_NUM dobijas samo numericki niz (1.), a klada je (default) MYSQL_BOTH dobijas i jedan i drugi pa ti biras kako ces da ga koristis. Dobra ideja je da koristis ili jedan ili drugi, ne oba (MYSQ_BOTH), jer u slucaju da imas mnogo rezultata ubrzavas izvrsenje querija. MYSQ_ASSOC je (prema dokumentaciji) neznatno sporiji, ali (prema meni) znatno korisniji

Sa ovim se slazem.

Citat:

Inace, ono AS Text nije nista drugo osim obican alias, znaci imas polje koje se zove TekstPoruke i ti hoces da iscupas samo deo sa LEFT(), da bi ti se pojavio u rezultatima tako kako hoces dodelis mu alias i pojavljuje se kao posebna kolona. I to nema veze sa PHP vec SQL!!!

I sa ovim se slazem.

Citat:

Inace, nema veze da li koristis mysql_fetch_row ili mysq_fetch_object, taj alias ti se pojavljuje, jer to nema veze sa tim, ove dve funkcije ti samo vracaju red po red rezultata.

Taj alias se ne pojavljuje sam od sebe, nego ga programeri koriste radi lakseg referenciranja pri obradi rezultata.
Primjer: "SELECT neko_ime_tablice.kategorija1356 AS kategorija FROM neko_ime_tablice".

while($red_rezultata = mysql_fetch_assoc($rezultat)) {
extract($red_rezultata);
...blabla..
}
Ako koristis extract() funkciju pri obradi rezultata, onda je lakse koristiti koristiti $kategorija (kreira se nakon extracta), nego $kategorija1356 ili pamtiti redoslijed (ili cak svako malo gledati strukturu tablice u mysqlu) polja u tablici.

Citat:

Tacno je da je od php 4.0.3 ubacen i mysql_fetch_assoc, ali ona nista drugo ne radi osim
mysql_fetch_array ( resource result, MYSQL_ASSOC)

znaci, komentar u odgovoru od zombie / DDG
Citat:

// u suprotnom bi morao da koristish mysql_fetch_array($r)

nije tacan.


Hmm, a zasto ne bi bio tacan? Pa sa mysql_fetch_row ne mozes koristiti asocijativni niz, nego samo numericki. Dakle, koristenje SELECT blabla AS bla FROM blatable nema smisla, jer ne mozes tom bla pristupiti kao $bla, nego samo kao $red_rezultata["0"]. Stoga logicno je da mora koristiti funkcije koje vracaju asocijativni niz, sto dovodi do zakljucka da je ipak tacan njegov komentar.

Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
62.108.114.*

Sajt: localhost


+5 Profil

icon Re: Za nas koji ne znamo molim odgovor19.11.2002. u 04:09 - pre 260 meseci
Citat:
bluesman:

Tacno je da je od php 4.0.3 ubacen i mysql_fetch_assoc, ali ona nista drugo ne radi osim
mysql_fetch_array ( resource result, MYSQL_ASSOC)

znaci, komentar u odgovoru od zombie / DDG
Citat:

// u suprotnom bi morao da koristish mysql_fetch_array($r)

nije tacan.


pa nisam siguran. ako imash "SELECT LEFT(bla+truc+'prvi', 30) FROM tabela" onda ne mozes da koristish asocijativni niz da bi pristupio vrednosti kolone, vec morash $row[0]. a nije bitno da li si taj $row dobio preko fetch_array ili fetch_row, zar ne?

btw, pa ni fetch_row() nije nista drugo do fetch_array($r, MYSQL_NUM)...

(dobro znam da ima razlike izmedju fetch_row, i fetch_array sto se tice performansi, ali to pocetniku nije toliko bitno, zar ne. ima mnogo vaznijih stvari koje mora da nauci ako ni ovo ne zna...)
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.160.EUnet.yu



+1 Profil

icon Re: Za nas koji ne znamo molim odgovor19.11.2002. u 13:41 - pre 260 meseci
Citat:
dwarf:
A ovo objasnjenje "AS"-a u SQL-u je najludje koje sam cuo. AS prosto pravi alias na kolonu koji se dobija u konacnom rezutlatu.

Jel' me ti zezas ili ne citas pazljivo. Sta sam ja rekao?
Citat:

Inace, ono AS Text nije nista drugo osim obican alias, ... I to nema veze sa PHP vec SQL!!!

Mozda ja ne citam pazljivo tvoj post, ali meni se cini da si rekao isto sto i ja. Osim ako nisam trebao da napisem sve mogucnosti za koriscenje aliasa?
Goran Pilipović fka bluesman
 
Odgovor na temu

dwarf
Beograd, Srbija

Član broj: 1328
Poruke: 336
*.yubc.net



Profil

icon Re: mysql i php, prikazivanje u dve kolone, mysql_fetch_array() i ostale funkcije, malo SQL-a19.11.2002. u 16:31 - pre 260 meseci
Groink...nisam rekao tebi. Da, to si rekao, samo sam hteo i ja da potvrdim. A i da nadovezem da, eto, postoji jedna jako lepa upotreba doticnih.
 
Odgovor na temu

[es] :: PHP :: mysql i php, prikazivanje u dve kolone, mysql_fetch_array() i ostale funkcije, malo SQL-a

[ Pregleda: 3709 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.