[ Kusur @ 07.05.2003. 20:19 ] @
Pozdrav svima

Ovako prikazujem ili sakrivam red u tabeli kada ispunjava uslove koji su dole navedeni. Sve je OK kada su to brojevi (MySql baza, PHP)

<?php if ($RS->Fields("Proba")>0) { ?>

Red u tabeli

<?php } // end $($RS->Fields("Proba")>0 ?>


Kako da to isto uradim ali sa tekstom? Na primer:

Nešto je upisano u polje = prikaži red
Nije ništa upisano u polje = sakri red

Može li neko da mi pomogne

Unapred hvala!
[ bluesman @ 08.05.2003. 03:48 ] @
Najcesca greska (omaska) je "case". Znaci, kada uporedjujes stringove koristi ili case insensitive compare ili uradi za polje koje trazis strtolower() ili strtoupper(), sta ti vise odgovara. Na primer

umesto

if ($RS->Fields("Proba") == "tekst")

uradi

if (strtolower($RS->Fields("Proba")) == "tekst")

ili

if (strtoupper($RS->Fields("Proba")) == "TEKST")
[ bzero @ 08.05.2003. 11:18 ] @
Koristi funkciju empty():

<?php if (!empty($RS->Fields("Proba"))) { ?>


http://www.php.net/manual/en/function.empty.php
[ Kusur @ 09.05.2003. 00:29 ] @
Hvala na pomoći.
Nisam uspeo po vašim savetima ali sam rešio ovako

<?php if ($RS->Fields("Proba")!="") { ?>

Ovde red tabele

<?php } // end $($RS->Fields("Proba")!="" ?>


HVALA!
[ Ivan Stanojevic @ 18.05.2003. 00:22 ] @
ovo je offtopic...

nemoj da koristis { ?>
red tabele

} <?

zato sto onda prelazis iz php u html za svaki red tabele koji ispises...

koristi

{
echo "<tr><td> $moja_promenjiva </td></tr>"
}

da bi ubrzao iszvrsavanje skripte...

jos bolje je da koristis ono je je u ASP-u GetString ali ne znam da li postoji u php...
[ CONFIQ @ 18.05.2003. 00:29 ] @
A odakle ti to da to usporava PHP?
Si to pročitao negde ili....

bzero: Si znao da ne mora da se koristi empty? :)

naprimer:
if (!$RS->Fields("Proba"))
[ Ivan Stanojevic @ 18.05.2003. 00:42 ] @
confiq : prelazak sa ispisivanja html na ispisivanje php (ili bilo cega, ustvari , asp itd) ce usporiti izvrsavanje stranice...

imas na netu dosta dokumentacije o optimizaciji koda...
www.4guysfromrolla.com naprimer...
[ -zombie- @ 18.05.2003. 01:47 ] @
ivane, nemoj da lupaš o nečemu u čemu nisi baš preterano stručan (hint za http://www.elitesecurity.org/tema/22670 temu, vidi osnove na http://php.net/variables.scope)

možda ti znaš asp, i možda je to brže u njemu, ali php se "kompajlira" u byte-code pre izvršavanja, pa nema ama baš nikakve razlike u brzini pri izvršavanju ta dva koda (tj, kada se kompajlira, to je jedan te isti kod..)
[ bluesman @ 18.05.2003. 01:58 ] @
Nema veze to sto si napisao Ivane. Mozda si se zbunio. Jedino sto ubrzava je koriscenje single quotes (') umesto double quotes (") a zasto, mislim da ima negde na forumu. Ali, cak i to ubrzanje je neznatno (osim ako nemas 100k linija koda u jednom fileu :))

Iskreno, to mozda vazi za ASP, ali i to sumnjam...
[ Ivan Stanojevic @ 18.05.2003. 02:08 ] @
Citat:
nemoj da lupaš o nečemu u čemu nisi baš preterano stručan

iskoristi svoj savet zombi...

mozda ne znam php, ali ovo nema veze sa phpom direktno...

ovo sto sam napisao gore doslo je od nekih "top" ljudi na polju web developmenta(sa kojima sam radio), i potvrdjeno je u praksi... skini ako hoces i software za merenje performansi i testiraj svoj server sa 100 istovremenih konekcija... pokreni dva fajla identicna, samo neka razlika bude u nacinu ispisivanja tabele, i vidi razlike u brzini izvrsavanja stranice...

...

dalje kada u buducnosti vidis neki moj post, nemoj da brzas i donosis zakljucke tek tako, mozes nekoga da uvredis...

[ Ivan Stanojevic @ 18.05.2003. 02:10 ] @
bluesman, znam sta pricam...

isprobaj, videces da sam u pravu...
razlika postoji, i moze se izmeriti...


sto se tice brzine... nije to sad ne znam koliko ubrzanje, ali kada imate hiljadu ljudi istovremeno, onda znaci dosta naravno i u kombinaciji sa drugim sitnim stvarima...


p.s. jedino sto ne mogu da tvrdim je kako ovo sve radi na linuxu, al za windows garantujem...
[ -zombie- @ 18.05.2003. 02:34 ] @
aman, kad ti kažem da mi veruješ da php znam dovoljno dobro da ne iznosim olako ovakve tvrdnje..

ti možda znaš taj tvoj asp, ali nemoj da tvrdiš da znaš php bolje od mene. i ti tvoji "stručnjaci" su možda takođe stručni za asp, ali asp i php interpreteri su veoma različiti.


php se izvršava u dva koraka. prvo se parsira html i php kod i prevodi u zend op-code (zend engine operation codes), a zatim se izvršava.

kada ta dva koda prođu kroz prvi korak, ona se pretvaraju u iste zend operacije, tako da je i brzina izvršavanja za oba ista.

jedino se razlikuje vreme parsiranja ta dva dokumenta, ali je to *toliko* beznačajno, i za razliku od asp-a, parsiranje se vrši samo pri učitavanju dokumenta (a ne svaki put kada se prođe kroz for petlju). (mada asp ne znam tako dobro, i samo pretpostavljam kako asp interpreter radi)


čak šta više, što više ponavljanja imaš (tj što više redova u tabeli), iako bi po tvojoj logici razlika između takva dva skripta trebala da bude veća (jer po tebi, u svakom redu se "prelazi iz html moda u php mod i obrnuto" -- šta god to značilo), naprotiv, razlika je sve manja, zato što se u ukupnom vremenu parsiranja i izvršavanja skripte, parsiranje igra sve manju ulogu. (procentualno)

isto kao i za single i duple navodnike što reče bluesman, ovo možeš primetiti samo ako imaš 100k+ linija koda, ali mislim stvarno...

(a btw, korišćenje zend ili php acceleratora, ili bar optimizera *apsolutno* eliminiše ovaj overhead, jer kešira iskompajlirane skripte)


i btw, neki "top" ljudi što se *pravog* web developmenta tiče (znači php, perl i pyton) koje ja *ne* znam, i mogu samo da *sanjam* da ću sa njima ikada raditi nisu ni morali da vrše merenja jer su lepo oni pravili to u php-u (ili su lepo pogledali kako je to urađeno), pa su lepo potvrdili..

a ja i neki malo manje top ljudi smo proveravali, i naravno, razlika je nemerljiva..
[ bzero @ 18.05.2003. 15:04 ] @
Citat:
CONFIQ:
Si znao da ne mora da se koristi empty? :)

naprimer:
if (!$RS->Fields("Proba"))


U pravu si, to je zgodno i krace:-) Inace ja sam u PHP dosao iz Perla gde je ovo normalna srvar.
[ bluesman @ 19.05.2003. 14:28 ] @
Citat:
Ivan Stanojevic:
bluesman, znam sta pricam...

isprobaj, videces da sam u pravu...
razlika postoji, i moze se izmeriti...

sto se tice brzine... nije to sad ne znam koliko ubrzanje, ali kada imate hiljadu ljudi istovremeno, onda znaci dosta naravno i u kombinaciji sa drugim sitnim stvarima...

p.s. jedino sto ne mogu da tvrdim je kako ovo sve radi na linuxu, al za windows garantujem...


Nije da ti ne verujem, ali dozvoli i meni da znam sta pricam. Razlika se moze izmeriti ako ti je script preko 100k linija koda... a isto je na linuxu i windowsu jer to nema veze sa OS vec php interpreterom.

Druga stvar, kada ocekujes da ce 1000 ljudi istovremeno gledati stranu onda ti ne pomaze ni to sto pricas, vec se kod radi malo (mnogo) drugacije.
[ CONFIQ @ 20.05.2003. 01:24 ] @
Baš sam malo pre trebao neki CSV fajl da ubacim u bazu i prisetio sam se ove diskusije... evo kako sam uradio
Prvi put:
Code:

$fd = fopen("CSV.txt", "r"); 
   while($sadrzaj=fgets($fd,1024)) 
      { 
list($jed,$dva,$tri,$cet)=explode("\",\"",$sadrzaj); 
echo 'INSERT INTO `ip2county` (`from`,`to`,`country_2`,`zemlja`) VALUES ($jed\",\"$dva\",\"$tri\",\"$cet);<br />';
#$sql=mysql_query("INSERT INTO `ip2county` (`from`,`to`,`country_2`,`zemlja`) VALUES ($jed\",\"$dva\",\"$tri\",\"$cet);") OR die(mysql_error()); 
}
$endtime = micro_time();
$krajvremena = $endtime - $astarttime;
echo "<br>Uzeto je $krajvremena sekunde<br>";

Vreme 75.159842968

ovo je drugi put
Code:

$fd = fopen("CSV.txt", "r"); 
   while($sadrzaj=fgets($fd,1024)) 
      { 
list($jed,$dva,$tri,$cet)=explode("\",\"",$sadrzaj); 
#echo 'INSERT INTO `ip2county` (`from`,`to`,`country_2`,`zemlja`) VALUES ($jed\",\"$dva\",\"$tri\",\"$cetri);<br />';
#$sql=mysql_query("INSERT INTO `ip2county` (`from`,`to`,`country_2`,`zemlja`) VALUES ($jed\",\"$dva\",\"$tri\",\"$cet);") OR die(mysql_error()); 
<?
INSERT INTO `ip2county` (`from`,`to`,`country_2`,`zemlja`) VALUES ($jed\",\"$dva\",\"$tri\",\"$cet);<br />
?>
}
$endtime = micro_time();
$krajvremena = $endtime - $astarttime;
echo "<br>Uzeto je $krajvremena sekunde<br>";


Vreme: 79.070562005

Razlika je oko ~3,9 sekunde što je ipak razumno pošto je fajl velik oko ~800KB.
A pogotovo ova razlika neće da se oseti ako se skripta izvšava manje od 1sec.


P.S. Ako se neko buni zašto nisam koristio "LOAD DATA" u mysql-u, zato što mysql4.0 nema tako nešto :(
[ bluesman @ 23.05.2003. 02:00 ] @
ok, hvala na primeru, to je lep dokaz onoga o cemu sam govorio, nego hteo sam da te pitam zasto lepo ne koristis funkciju fgetscv. Ne da bih pametovao nego je ja stalno koristim za te stvari pa me interesuje da li mozda ima nesto sto ne znam u vezi toga?
[ Zoran Rašković @ 15.06.2003. 18:00 ] @
Ja tek malopre saznah za tu f-ju :/