[ 0pt!mus @ 10.06.2003. 23:21 ] @
Prvi put se javljam ovde, u nadi da cu reshiti jedan, prilichno jednostavan problem.
Evo o chemu se radi:

PART I
Radim na nekom projektu za kompaniju u kojoj sam zaposlen, koja nudi odredjene servise (nije bitno koji su). Za sada sve se obavlja preko telefona, ali dobio sam zadatak da to sprovedem na web.
Znaci, svaki klijent ce imati svoj account ("manualno" odrzhavan), koji ce naravno biti zashticen log-inom. U svakom accountu (user.php), treba da postoje skrivene form kontrole (ime, prezime, etc...) za slanje u bazu podataka, odakle bi ih "izvlachio" PHP fajl sa podeshenim auto-refreshom iz razloga shto ce biti otvoren 0-24/7 u rachunaru odeljenja za servis klijentima; tako da bude faktichki istog momenta primljen.

Slanje bi se odvijalo samo na pritisak jednog dugmeta, ako je moguce.

PART II
Onog momenta kada klijent poshalje request, trebalo bi da mu se otvori jedan pop-up, recimo... koji bi odbrojao npr. 60 sekundi, za koje vreme servis treba da odpochne...


U principu, jedina poteshkoca mi je slanje requesta. Znam kako bi sve to ishlo teoretski, ali praktichki.... bash sam slab.
Znachi, na send u mysql se shanju podatci, odakle se vade po vremenu i sortiraju opadajuci na stranicu...

Da li bi neko bio ljubazan da mi pomogne :D
Prilichno je hitno...

Unapred hvala;)
[ arsa x @ 11.06.2003. 00:39 ] @
<?
$aSQL="select * from tvoja_tabela ORDER BY colona_datuma DESC";
$aQResult=mysql_query($aSQL);
while ($aRow=mysql_fetch_array($aQResult))
{
$podatak1=$aRow["colona1_u_tabeli"];
$podatak2=$aRow["colona2_u_tabeli"];
//...
//itd..

echo $podatak1."\n".$podatak2; //itd..
}
?>

eto mozda ti pomogne trebalo bi da radi ako sam uopste razumeo sta ti treba
usustini ova skripta cita podatke iz tabele tvoja_tabela i sortira po datumu opadajucim redosledom
jedino bi ti preporucio neku klasu za rad sa MySql-om
trebao bi ispitivati dal je upit izvrsen.
[ 0pt!mus @ 11.06.2003. 02:31 ] @
Ok, odlichno... nego imam malu nedoumicu.... da li mozhe ovako da se "sakrije" njegova informacija?

........etc
<?php

$user="Petar Petrovic";
$tel="5555555"

echo "<FORM METHOD=POST ACTION="xxxxx.php">"
echo "<INPUT TYPE=HIDDEN NAME=user VALUE='$user'>";
echo "<INPUT TYPE=HIDDEN NAME=tel VALUE='$tel'>";

echo "<INPUT TYPE=SUBMIT NAME=Posalji VALUE=SUBMIT>

?>
........etc

To bi se shibalo u DB. Znachi DB bi bio sachinjen od sledecih polja (prosta varijanta):
- Ime i prezime (mozhe i odvojeno)
- Tel.
- Vreme
- ID (auto-increment)

Kako bi izgledalo to sve onda?
[ arsa x @ 11.06.2003. 11:48 ] @
Pretpostavljam da HIDDEN polja koristis za prosledjivanje username-a i password-a
izmedju strana.
Ja sam koristio HIDDEN polja samo ne za tu svrhu.
Mislim da ti je bolje da koristis sesiju
Nije bas to bezbedno sa HIDDEN poljima jer ako strana ostane u histori i dodje neko i pogleda source code....
Elegantno resenje su definitivno sesije i eventualno cookie(za auto-login naravno ako se radi o poslu ja bih zaboravio na njih)
Znaci sesije za to i sluze pored ostalog.
[ arsa x @ 11.06.2003. 11:59 ] @
Sve ti pise gore al ajd evo coda
Code:

<?
$aSQL="select * from tvoja_tabela ORDER BY colona_datum DESC";
$aQResult=mysql_query($aSQL);
while ($aRow=mysql_fetch_array($aQResult))
{
  $ime=$aRow["colona_ime"];
  $prezime=$aRow["colona_prezime"];
  $telefon=$aRow["colona_telefon"];
  $datum=$aRow["colona_datum"];

  echo $ime."\n";
  echo $prezime."\n";
  echo $telefon."\n";
  echo $datum."\n";
}
?>

To je moj stil a timozes i skratiti kod
npr.
echo $aRow["colona_ime"];"\n";








[Ovu poruku je menjao leka dana 11.06.2003. u 13:39 GMT]
[ leka @ 11.06.2003. 13:37 ] @
Ovo je najgora realizacija gore navedenog problema koju si mogao da izmislis - svaka cast!
[ leka @ 11.06.2003. 13:42 ] @
Arso, vidis kako je lepse kad se koristi formatiranje teksta... Btw. ne znam zasto STRING "select ..." stavljas u promenljivu $sSQL, pretpostavljam da ono "a" znaci ARRAY, ja koristim slicnu notaciju, slicno pitanje vazi i za $aQResult, u kojoj nije nikakav niz...
[ Dejan Topalovic @ 11.06.2003. 14:04 ] @
Citat:
leka:
Ovo je najgora realizacija gore navedenog problema koju si mogao da izmislis - svaka cast!

Eh leka, leka ...
Čovjek se barem potrudio da ponudi neko rješenje, a ti ga pljuješ i ukopavaš. Loše, veoma loše ....

Optimuse: Nemoj da stavljaš "skrivene" podatke u hidden polja, jer će se u source-u vidjeti ti podaci. Iskreno, nisam baš skontao kako to želiš tačno izvesti, ali moj prijedlog je:
- Ako već ne postoji neki formular za unos podataka o klijentu, onda napravi login formular pomoći kojeg će se unositi ti podaci.
- Za ispis možeš koristiti onaj princip koji ti je napisao arsa, ali "malo" promijenjen (kompletan kod ti mogu i ja napisati, ako ne znaš kako)
- Pop-up prozor odradi u Javascriptu


[Ovu poruku je menjao StRiPy dana 11.06.2003. u 16:14 GMT]
[ CONFIQ @ 11.06.2003. 14:13 ] @
Ali ipak Leka je pozitivno ciničan :).

Stvarno kôd nema nikvakve veze sa pitanjem, samo će još više da zbuni autora ove teme....

P.S.Ajde ako ćemo da izučavamo Arsov kôd, i ako mu smeta array....

while (list($prva_kolona,$druga_kolona,$treca)=mysql_fetch_array($aQResult)) {


~Say FiQ
[ arsa x @ 11.06.2003. 17:50 ] @
slazem se sa lekom lose je
[ 0pt!mus @ 11.06.2003. 23:34 ] @
StRiPy puno bi ti bio zahvalan, ako bi mogao da mi napishesh. Tako bi izbegao petljanje i experimentisanje, shto u neku ruku i nije loshe ali sam zaista kratak sa vremenom (bolje reci, kasnim)...

Hvala unapred!
[ Goran Rakić @ 12.06.2003. 01:18 ] @
Molim cenjenog korisnika koji je otvorio temu da se malo potrudi i detaljnije (ali sa manje reči) objasni svoj problem. Da li je cilj uneti podatke u bazu, održavati vezu sa korisnikom, prikazati podatke iz baze, prijaviti korisnika, zanti koji korisnik je prijavljen ili šta već? Onda će možda i dobiti odgovor.

Za StRiPy-a: Lansiranjem gotovih rešenja samo ohrabruješ korisnike da i ove retke preostale normalne forume zaplahnu sa "treba mi ovo i ovo" pitanjima.
[ 0pt!mus @ 12.06.2003. 02:00 ] @
Cilj je da korisnik sa shto manje muke poshalje zahtev da mu se pruzhi X servis. A na meni je da smislim kako ce to biti najbrzhe i najefikasnije.......
Zato sam doshao na ideju da u browseru centra za uslugu klijentu stoji http://ip/zahtevi.php, koji bi se automatski ovezhavao..... a da klijent na svojoj report stranici ima jedno dugme, koje bi poslalo request. Tu je nastaje PHP/MySQL petljancija.......

Ne treba nikakva veza sa klijentom ili ishta... vec samo obichno "obaveshtenje" za centar...

Servis je online, tako da bi posle zahteva trebao da se otvori pop-up, i tu je otprilike kraj priche.......
[ Dejan Topalovic @ 12.06.2003. 02:27 ] @
Citat:
Goran Rakić:
Molim cenjenog korisnika koji je otvorio temu da se malo potrudi i detaljnije (ali sa manje reči) objasni svoj problem. Da li je cilj uneti podatke u bazu, održavati vezu sa korisnikom, prikazati podatke iz baze, prijaviti korisnika, zanti koji korisnik je prijavljen ili šta već? Onda će možda i dobiti odgovor.

Za StRiPy-a: Lansiranjem gotovih rešenja samo ohrabruješ korisnike da i ove retke preostale normalne forume zaplahnu sa "treba mi ovo i ovo" pitanjima.


Ok, nema problema :)

Optimuse nisi bas najbolje objasnio kako zelis da to bude izvedeno ili sam ja glup (Bosanac sam :) ), pa ne kontam. Hajde pokusaj prvo sam nekako da odradis, a mi cemo ti pomoci usput.
[ 0pt!mus @ 12.06.2003. 22:27 ] @
Ok... evo idemo:

KLIJENT: ima svoj profile/dir na sa sajtu gde se nudi servis. Sve je manuelno odrzhavano, nishta nije SS. Login ne postoji vec je to direktorijum sa .htaccess fajlom... a klijent zna URL...
INDEX.HTML sadrzhi informaciju, to jest profile...

TO DO: omoguciti klijentu na bilo koji nachin da poshalje zahtev da mu se isporuchi servis, ali na shto jednostavniji nachin. Bez formulara ako je moguce, idealno bi bilo jedno obichno dugme, sa odgovarajucim nazivom.


MI: treba da primimo taj zahtev shto brzhe, faktichki instant. Tako da email sending varijanta otpada.


Moja ideja je da se napravi jedna obichna aplikacija, koja bi chitala iz baze podataka zahteve klijenata i sortirala u opadajucem redu...
Za to treba da se napishe script koji bi stavljao/input vrednosti hidden fields u bazu podaka, a potom drugi script koji bi radio output iz baze u web stranicu (recimo requests.php). Ta stranica bi bila 0-24h bila otvorena u centru za servis/podrshku klijentu. Mislim da je tako minimalan delay, chim nov request stigne u bazu u roku od par sekundi vec je na stranici...

To je to........ valjda je sada ok objashnjeno.
[ Goran Rakić @ 12.06.2003. 22:45 ] @
Čekaj, caka je dobiti obaveštenje o novom klijentu u servis centru na što brži način (odmah), nakon što klijent klikne na dugme, i onda mu dodati njegovu stranicu???

Rešenje koje si ti opisao je problematično jer ako imaš 3 operatera, svake sekunde će njihov browser tražiti od servera novu stranicu koja će raditi konekciju na mysql server što može lepo da zakuca stvar i jede mrežnu konekciju... Mnogo je bolje rešenje napraviti neku server-klijent varijantu. Korisnik klikne na dugme i pozove skriptu koja pomoću socket-a šalje obaveštenje o novom klijentu. Ovaj server je u suport centru (pričamo o serverskom programu, ne uređaju) i ima stalnu vezu sa 3 klijenta. Kada dobije poruku od korisnika, prikazuje obaveštenje njegovim klijentima.
[ 0pt!mus @ 13.06.2003. 02:17 ] @
hmm.... sad' sam se malo zagubio......... a tek nemam predstavu kako to izvesti u praksi...

Josh neko reshenje?
[ bOkIcA @ 13.06.2003. 18:16 ] @
instaliraj im ICQ
;-))))

[ arsa x @ 13.06.2003. 18:36 ] @
Da, definitivno kad bi mi stranka postavila takav zadatak ja bi ih odbio ;)
osem ako nebi pojasnli malo
[ 0pt!mus @ 14.06.2003. 02:50 ] @
Zanima me malo opshirnije reshenje koje je ponudio Goran... ako mozhe...

Sve u svemu, mislim da moje reshenje nije tako loshe........ to jest, najjednostavnije mozhe da se izvede.......................................
[ Goran Rakić @ 14.06.2003. 16:09 ] @
Evo ovako. Tvoje rešenje podrazumeva stalno osvežavanje stranice, odnosno stalne zahteve serveru. Šta se dešava:

Zahtev serveru => Server prima zahtev => Server poziva PHP parser => PHP parser ostvaruje konekciju na mysql server => PHP parser generiše izlaz => server hvata izlaz i šalje ga klijentu => osvežena stranica se prikazuje u browser-u u centru

Problemi su:

- web server prima previše zahteva, naročito ako imaš 3 ili više operatera
- u trenucima zauzetosti mašine, web server može da padne ili da postane mnogo spor
- mysql server pada zbog prevelikog broja konekcija
- opterećenje sistema je ogromno
- ako server nije u lokalnoj mreži u servisnom centru, trošiš CIR mrežne konekcije, tj stalno šalješ/primaš podatke, iako 48h ne stigne ni jedan novi korisnik, ti osvežavaš stranu na par sekundi

Kako to rešiti:

Pa recimo, treba omogućiti da se stranica osveži samo kada novi klijent zatraži servis. Kako? Jedno rešenje jeste da se okidač za obaveštenje izvrši kada korisnik klikne na "dugme". Kada korisnik zatraži servis, on klikne na dugme, otvaraš mu php skriptu koja treba na neki način da obavesti servisni centar o tom korisniku. Rekao si da je mail sporo, pa ja predlažem sledeće:

Imaš poseban connection server, posebno razvijen u C, C++,... koji će biti podignut na mašini sa web serverom (ako je ona u servisnom centru, ili na nekoj drugoj mašini u servisnom centru koja ima stalnu vezu ka internetu). Imaš posebne klijente, na mašinama gde rade operateri u servisnom centru (takođe programe razvijene u C, C++-u...). Kada korisnik klikne na dugme, pozivaš skriptu koja preko ugrađenih socket funkcija PHP-a ostvaruje vezu sa connection serverom i signalizira mu da je došao novi korisnik. Taj server pronalazi klijente (aplikacije) na mreži i šalje im poruku koja iskače kao popup, ili se pojavljuje u listi poput u ICQ-u.

Na sličnom rešenju, baziranom na Jabber protokolu sam radio, te ako ste zainteresovani možete me kontaktirati na email ili mi poslati privatnu poruku. Radilo se o korisničkoj podršci i sistem poseduje kako aplikaciju za servisnog operatera i server koji prima obaveštenja, tako i deo skripta koji se integriše u websajt. Ceo sistem je dosta prilagodljiv i ima i napredne opcije tipa zauzetost operatera, radno vreme, arhiviranje poruka, generisanje mesečnih izveštaja i slično.