Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja MySql probleem aastaarvudega märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 11.01.2011 00:05:48 PHP ja MySql probleem aastaarvudega vasta tsitaadiga

Nimelt mul on tabel kus 2 välja
ID - Toode - Aastaarvud

"1" - "Toode1" - "1970-1992, 1996, 1998"
"5" - "Toode2" - "1965-1978, 1992, 1994"
"9" - "Toode3" - "1978-1999, 2001, 2006"

Nüüd ma sooviks luua otsingu, mis otsiks aastaarvu vaste sealt välja näiteks:
Otsing aastaarvu kohta "1974" kohta tuleb vasteks Toode1 ja Toode2

Kuidas mul oleks võimalik seda kõige paremini lahendada ?
Või hoopis luua eraldi tabel aastarvude jaoks ?
ID - Toote_ID - Aasta kus oleks siis aastaarvud kõik olemas:
1 - Toode1 - 1970
2 - Toode1 - 1971
3 - Toode1 - 1972
jne...

??
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
kissu19
HV kasutaja

liitunud: 27.05.2004




sõnum 11.01.2011 00:22:54 vasta tsitaadiga

Miks selle toote juures aastaarv oluline on?
Kas kasutaja lisab tooteid?
Kas kasutaja otsib toodet aastaarvu vahemiku järgi?
Kas kasutaja saab üldse otsida toodet aastarvu järgi?

Igatpidi lollikindel lahendus on eraldi Aastaarv, Toote_ID vahetabel.

Sõltub ka toodete arvust, sellise lihtsa matemaatika saab põlve otsas ka otse koodis ära realiseerida.

_________________
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 11.01.2011 00:29:09 Re: PHP ja MySql probleem aastaarvudega vasta tsitaadiga

jaagupk kirjutas:

Kuidas mul oleks võimalik seda kõige paremini lahendada ?
Või hoopis luua eraldi tabel aastarvude jaoks ?
ID - Toote_ID - Aasta kus oleks siis aastaarvud kõik olemas:
1 - Toode1 - 1970
2 - Toode1 - 1971
3 - Toode1 - 1972
jne...

??
kui toimub nime otsing, siis vahet ei ole kuna aasta saad kontrollida koodis.
Kui aasta otsing, siis parem teha "toode_id, aasta_min, aasta_max" tabel aasta vahemikega, et iga toote kohta ~100+ rida ei tekiks.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 11.01.2011 00:32:04 vasta tsitaadiga

kissu19 kirjutas:
Miks selle toote juures aastaarv oluline on?
Kas kasutaja lisab tooteid?
Kas kasutaja otsib toodet aastaarvu vahemiku järgi?
Kas kasutaja saab üldse otsida toodet aastarvu järgi?

Igatpidi lollikindel lahendus on eraldi Aastaarv, Toote_ID vahetabel.

Sõltub ka toodete arvust, sellise lihtsa matemaatika saab põlve otsas ka otse koodis ära realiseerida.


Aastarv on oluline, kuna see märgib mis aastal neid tehtud on.
Kasutaja saab lisada tooteid kui soovib.
Kasutaja otsib tooteid kindla aastaarvu järgi, kuigi hea mõte oleks vist teha aastaarvude vahemik kunagi.
Jah kasutaja saab otsida aastaarvude järgi.

Aga sellepärast ma mõtlengi, et äkki on midagi lihtsamat kui eraldi tabel teha, kuna tooteid tuleb väga palju siis ma kardan, et need aastaarvude otsing võib võtta liiga kaua aega või liiga palju ressursse.

Eesmärk oleks, et kui kasutaja lisab toote siis ta saab aasta lahtrisse kohe kirjutada: "1978-1999, 2004"
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
kissu19
HV kasutaja

liitunud: 27.05.2004




sõnum 11.01.2011 00:41:39 vasta tsitaadiga

Kui tooteid palju ei ole, siis salvesta kõik tootega seotud aastaarvud toote kirje külge ja indekseeri veerg FULLTEXT indeksiga. MySQL MATCH saab sellised üles otsida.
_________________
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 11.01.2011 00:45:53 vasta tsitaadiga

kissu19 kirjutas:
Kui tooteid palju ei ole, siis salvesta kõik tootega seotud aastaarvud toote kirje külge ja indekseeri veerg FULLTEXT indeksiga. MySQL MATCH saab sellised üles otsida.


Tooteid plaani kohaselt kindlalt üle 10 000 (tulevikus 50 000 kanti).

Kas FULLTEXT ja MySQL MATCH-iga see liiga aeglaseks ei lähe ?
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
kissu19
HV kasutaja

liitunud: 27.05.2004




sõnum 11.01.2011 01:00:28 vasta tsitaadiga

50 000 kindlasti mitte.
_________________
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 11.01.2011 01:04:50 vasta tsitaadiga

kissu19 kirjutas:
50 000 kindlasti mitte.


Aga suured tänud ma proovin siis selle asja ära icon_smile.gif
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
kissu19
HV kasutaja

liitunud: 27.05.2004




sõnum 11.01.2011 01:21:36 vasta tsitaadiga

Proovi, aga ma ei mäleta mismoodi seda fulltext välja sorteerida sai kui juhuslikult tahad aasta järgi sortida.
_________________
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 17.01.2011 17:47:09 vasta tsitaadiga

Tekkis uus probleem ja ei hakka uut teemat tegema.

Nimelt kui mul on aasta 100 BC ehk 100 aasta enne kristust... Kuidas ma selle andmebaasi saaksin salvestada ? Või teha 2 välja ühes aasta ja teises valik kas BC või AC ?
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 18.01.2011 17:52:57 vasta tsitaadiga

link :: link

jaagupk kirjutas:
Tekkis uus probleem ja ei hakka uut teemat tegema.

Nimelt kui mul on aasta 100 BC ehk 100 aasta enne kristust... Kuidas ma selle andmebaasi saaksin salvestada ? Või teha 2 välja ühes aasta ja teises valik kas BC või AC ?

Viimane variant töötab kohe kindlasti.

Samas Oracle toetab BC asja. Vaata linki.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
kissu19
HV kasutaja

liitunud: 27.05.2004




sõnum 18.01.2011 18:03:12 vasta tsitaadiga

Pane miinusmärk ette, siis töötab sortimine ka lihtsasti edasi. Kuvamisel lihtsalt kuva kas tavaline aastaarv või BC
_________________
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
jaagupk
HV kasutaja

liitunud: 10.01.2011




sõnum 27.01.2011 11:02:41 vasta tsitaadiga

Ei hakka uut teemat tegema aga probleem uute väljade genereerimisega javascriptis. Nimelt kui uue välja genereerin innerHTML-iga siis eelnev tekst väljas kaob ära. Kuidas oleks võimalik, et sisestatud tekst jääks alles. Ma saan aru, et peaks DOM-i kasutama aga see on mitu korda aeglasem. Või on mingi lihtsam variant ?
Kood:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript">
// JavaScript Document
fields = 0;
function addMints() {
if (fields != 25) {
document.getElementById('extra').innerHTML += "<hr><input name='notes[]' value='' type='text' />";
fields += 1;
} else {
document.getElementById('extra').innerHTML += "<br />Max 25 extra fields allowed.";
}
}

fieldsi = 0;
function addImages() {
if (fieldsi != 6) {
document.getElementById('images').innerHTML += "<div class='left'><label>Image(optional):</label><br /><input name='im_img[]' type='file'><br /><label>Image Description:</label><br /><textarea name='im_descr[]' class='image_d'></textarea></div>";
fieldsi += 1;
} else {
document.getElementById('images').innerHTML += "<br />Max 6 extra images allowed.";
}
}
</script>
</head>

<body>
<form method="post" action="?" id="add_form" enctype="multipart/form-data">
   <div id="images"></div>
    <br clear="all" />
    <a href="javascript:addImages()" class="add">Add more images</a><br /><br />
    <div id="extra"></div>
    <a href="javascript:;" onclick="addMints();" class="add">Add more extra fields</a>
</form>
</body>
</html>
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 27.01.2011 11:17:33 vasta tsitaadiga

jaagupk kirjutas:
Ei hakka uut teemat tegema aga probleem uute väljade genereerimisega javascriptis. Nimelt kui uue välja genereerin innerHTML-iga siis eelnev tekst väljas kaob ära. Kuidas oleks võimalik, et sisestatud tekst jääks alles. Ma saan aru, et peaks DOM-i kasutama aga see on mitu korda aeglasem. Või on mingi lihtsam variant ?
Kood:
html:
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Test</title>
  6. <script type="text/javascript">
  7. // JavaScript Document
  8. fields = 0;
  9. function addMints() {
  10. if (fields != 25) {
  11. document.getElementById('extra').innerHTML += "<hr><input name='notes[]' value='' type='text' />";
  12. fields += 1;
  13. } else {
  14. document.getElementById('extra').innerHTML += "<br />Max 25 extra fields allowed.";
  15. }
  16. }
  17.  
  18. fieldsi = 0;
  19. function addImages() {
  20. if (fieldsi != 6) {
  21. document.getElementById('images').innerHTML += "<div class='left'><label>Image(optional):</label><br /><input name='im_img[]' type='file'><br /><label>Image Description:</label><br /><textarea name='im_descr[]' class='image_d'></textarea></div>";
  22. fieldsi += 1;
  23. } else {
  24. document.getElementById('images').innerHTML += "<br />Max 6 extra images allowed.";
  25. }
  26. }
  27. </script>
  28. </head>
  29.  
  30. <form method="post" action="?" id="add_form" enctype="multipart/form-data">
  31.         <div id="images"></div>
  32.     <br clear="all" />
  33.     <a href="javascript:addImages()" class="add">Add more images</a><br /><br />
  34.     <div id="extra"></div>
  35.     <a href="javascript:;" onclick="addMints();" class="add">Add more extra fields</a>
  36. </form>
  37. </body>
  38. </html>
  39.  
Esiteks - kõnealune küsimus ei seostu kõigevähemalgi moel ülejäänud teemaga, seega oleks väärinud küll eraldi teema algatamist.

Aga asja juurde - kui sa innerHTML string sisule midagi otsa lisad, siis see on ekvivalentne kogu innerHTML sisu väljavahetamisega ja sellega seoses luuakse kogu DOM puu seal all uuesti ning kaovad ära ka varemsisestatud väärtused, mis innerHTML muutujas kuidagi ei kajastu.

Soovitaksin sul kasutusele võtta mõne JavaScript raamistiku, näiteks jQuery ning selle kaudu DOM'i manipuleerida lihtsalt ja turvaliselt ja kõigis brauserites ühtmoodi töötavalt.

Millest selline arvamus, et DOMi manipuleerimine kole aeglane on? Ma pole küll väga palju JavaScripti ise progenud kõrgtasemel, aga on ta siis kasutajale märgatavalt aeglane kõnealuse operatsiooni tegemisel?

PS. syntax tag on koodilõikude postitamiseks palju mõnusam, kui code tag. icon_smile.gif

_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja MySql probleem aastaarvudega
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.