Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

pret minim/maxim... problema la curs valutar
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Joi Aug 21, 2008 3:45 pm    Titlul subiectului: pret minim/maxim... problema la curs valutar  

am un form de cautare unde clientul poate scrie pretul minim si pretul maxim intre care sa se incadreze.

am tabelul cu inregistrari
- id
- nume
- ....
- pret - 23,43,49,234

si tabelul cu preturi
- id [contine inregistrarile 23, 43, 49, 234 etc]
- suma
- moneda

eu fac un select `tabel`.campurile_mele WHERE am_niste_clauze

ca sa pot scoate niste inregistrari concrete. Problema apare in momentul in care trebuie sa selectez preturile in functie de cursul valutar. Nea' user-ul poate sa caute pret minim 200E si pret maxim 100LEI si, eu trebuie sa calculez care e pretul minim [transformat intro moneda] si cel maxim [in aceeasi moneda comuna] introdus de el si sa le compar cu preturile din baza de date [in moneda comuna, evident]

idei?..
daca nu ati inteles ideea, mai explic..

am o solutie dar e foarte nasoala... [selectez preturile - ca asta nu e greu - si fac un sir lung de id-uri, despartite cu virgula... apoi verific daca sunt IN lista cu inregistrari. Problema apare cand am 2000 de preturi... va fi al dracu de lent].
Sus  
Quber



Data înscrierii: 27/Iun/2006
Mesaje: 807
Locație: localhost

Trimis: Joi Aug 21, 2008 3:59 pm    Titlul subiectului:  

O ideie ar fi sa transformi toate preturile in o moneta unica, adica in "lei" sau in "$" cind selectezi, inserezi in baza de date.. cred ca asta ar fi metoda cea mai buna!
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Joi Aug 21, 2008 4:34 pm    Titlul subiectului:  

pai asta am zis si eu.. :) ca trebuie sa transform intr-o moneda comuna

problema mea nu e una de insert ci una de select si apare cand fac select la alte monede.

teoretic... ar fi ceva de genul

select * FROM `tabel` WHERE
`pret`<suma_minima_in_moneda_pretului AND
`pret`>suma_maxima_in_moneda_pretului

pentru ca fiecare pret are moneda lui... asta e problema
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Joi Aug 21, 2008 4:39 pm    Titlul subiectului:  

Singura ta solutie este sa te folosesti de proceduri stocate.

http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 620

Trimis: Joi Aug 21, 2008 4:55 pm    Titlul subiectului:  

@vectorialpx, cateva intrebari ca sa ma lamuresc si eu.

1. Campul pret e de fapt un string de numere despartite prin virgula?
2. Campul id din tabelul de preturi e de tot un string de numere despartite prin virgula?
3. Tu lasi utilizatorul sa selecteze moneda in care introduce preturile minim si maxim?
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Joi Aug 21, 2008 5:15 pm    Titlul subiectului:  

1. Campul pret de la fiecare inregistrare da... e un string
2. Campul id din tabeleul de preturi e unic
3. da.. din pacate :)


iti dau un exemplu

tabel_records
-------------------------
inregistrarea cu id 3
titlu: o inregistrare varchar
descriere: o desriere long text
pret:1,5,18

tabel_preturi
-------------------------
id:1
pret:300
moneda:eur

id:5
pret:200
moneda:usd

id:18
pret:200
moneda:lei


*preturile se pot si repeta in tabela de preturi, pentru ca sunt asociate la randul lor userilor si... ma rog. Daca un user sterge un pret, e pretul lui si atat.

Capitolul asta cu Stored Procedures arata bine... nu stiu ce sa zic
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 656
Locație: Drobeta Turnu Severin

Trimis: Joi Aug 21, 2008 5:54 pm    Titlul subiectului:  

Inca doua precizari te rog :
- user-ii care introduc preturile si o fac intr-o anumita moneda vor sa vanda produsul neaparat in acea moneda ?
- user-ul care cauta si introduce preturile min si max vrea sa cumpere ceea ce se gaseste in moneda indicata de el ?

Daca raspunzi cu "da" la amandoua :
* pentru $min si $max introduse in aceeasi moneda
... WHERE moneda=moneda_min_max AND (pret BETWEEN $min AND $max)
* daca introduce $min intr-o moneda si $max in alta :
- se transforma $min1 = $curs1*$min in moneda lui $max
- se transforma $max1 = $curs2*$max in moneda lui $min
Se realizeaza selectul :
SELECT ... WHERE (moneda = $moneda_max AND pret BETWEEN $min1 and $max) OR
(moneda = $moneda_min AND pret BETWEEN $min and $max1)
Sus  
adix



Data înscrierii: 02/Oct/2007
Mesaje: 123

Trimis: Joi Aug 21, 2008 6:00 pm    Titlul subiectului:  

vectorialpx a scris:
Capitolul asta cu Stored Procedures arata bine... nu stiu ce sa zic

Ideea este ca ai tabela proiectata gresit.
Asadar trebuie sa faci o procedura stocata ce parseaza automat campul in discutir, face convertirea singura la ce moneda iti trebuie tie si proceseaza rezultatele asa cum ai tu nevoie.

Din cate vad, alta abordare nu ai.

De fapt ai putea sa regandesti baza de date un pic. :)
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE

Trimis: Vin Aug 22, 2008 8:57 am    Titlul subiectului:  

dechim, lucrurile sunt mult mai complicate de atat... pentru ca la mine sunt variabile monedele (monezile, whatever) si in baza de date si in input [ce introduce user-ul..]

asa ca... o sa regandesc problema


Citat: Ideea este ca ai tabela proiectata gresit.
da... la concluzia asta am ajuns si eu... deci o sa pun record-ul ca si cheie straina in pret... asa ar fi mai simplu.

multam pentru timp!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community