7924 Posted November 5, 2006 Report Share Posted November 5, 2006 Tatad, lieta sekojoša: ir datubaze ar laukiem: A, B, C, D. 1. Lietotajs ievada infu caur tekstboxilaukā A; 2. tapat lietotājs ievada infu caur tekstboxi laukā B; 3. lietotājs ievada infu caur tekstboxi laukā C. bez tam lietotājs vēlas laukā C ievadīt vēl līdzigu informāciju, kam ir nepieciešams papildus textboxis, kurš parādās, kad tiek nospiesta poga "add additionl lines" (piemēram- laukā automašīnas, lietotājs ievada, ka viņam ir Opel Corsa, bet tā kā viņam ir vēl VAZ2103, tad vins grib papildus lauku un šo automašīnu arī velas uzrādīt) Jautājums - vai veidojot datubaze tabulu vajadzetu veido šadi: 1. lauks A- ar iespeju ievadit vienā šūnā datus; 2. lauks B- ar iespēju ievadīt vienā šūnā datus; 3. lauks C- jāsadala: C1- iespēju vienā šūnā ievadīt C2- iespēju otrā šūnā ievadīt C3- utt vai ir kaut kādi advancētāki triki, kā atrisināt šo itemu? paldies! Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 5, 2006 Report Share Posted November 5, 2006 Jaa ir UN netikai ir bet vajag izmantot citu variantu : resp 2 tabulas 1 tabula : ID, A, B 2 tabula id, 1_tabulas_id, C; un datu struktuura buus apmeeram saada: 1 abulaa: --- id=1, A=xxx, b=xxx --- id=2, a=xx cits useris, b= xxx citam serim 2 tabula: --- id=1, 1_tabulas_id=1, C=bla C1; id=2, 1_tabulas_id=1, C=bla C2; id=3, 1_tabulas_id=1, C=bla C13220; --- id=4, 1_tabulas_id=2, C=bla C1 citam userim; id=5, 1_tabulas_id=2, C=bla C2 citam userim ; ----------------- Liidz ar to tie c variaacijas varees buut no 0- Vairaakiem miljardiem ;) Katram lietotaajam Link to comment Share on other sites More sharing options...
Kaitnieks Posted November 5, 2006 Report Share Posted November 5, 2006 Varianti ir vairāki. Trīs no tiem 1) Tabula `galvenie dati` ar ID, A, B Tabula `sekundārie dati` ar ID, GALV_ID, C Pievienojot tabulā `galvenie dati` ierakstu, paņemam ieraksta ID un ievietojam tabulā `sekundārie dati` visus C kā atsevišķus ierakstus, norādot pie GALV_ID lauka ID vērtību no `galvenā tabula` 2) Veidot C kā serializētu masīvu. ($val = serialize(Array($c1, $c2, ...)) - atgriež stringu, kuru var noglabāt vienā šūnā) 3) Nu un protams, ja C skaits ir mazs un ierobežots, pastāv arī variants veidot `galvenā tabula` kā ID, A, B, C1, C2, C3. Protams, vari arī dinamiski likt tabulai laukus klāt cik vajag, bet tas rada šādas tādas problēmas ne tikai pie datu pievienošanas, bet arī atgriešanas un apstrādes. Link to comment Share on other sites More sharing options...
Delfins Posted November 5, 2006 Report Share Posted November 5, 2006 Nu Axapta iekš MSSQL piemēram glabā vairākos laukos vienā rindā... Potams kādam liekas līks variants.. bet tas viss atkarīgs no sistēmas :) Piemēram, ja jūzers uzrakstīts f-ju getDim($row,'dim'): function getDim($row,$dimName,$size) { for ($i=0;$i++$i<$size) { $dim[$i] = $row[$dimName.'_'.$i]; } } viss būs čikiniekā... Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 5, 2006 Report Share Posted November 5, 2006 (edited) :) Es tomeer iesaku glabaat 2 tabulaas jo: 1) nesi ierobezjots ar papildus lauku skaitu 2) ja peksnij paraadaas vajadziiba pievienot papildus lauku teiksim : Masinas marka, krasa, izlaiduma gads ... tad naksies pievienot tikai dazjus laukus , kardinali nemainot ne ievadiishanu ne nolasiisanu.... Nevis N laukus... + mainiit visu izvadi...... utt.... + Sadi glabaat datus ir gan logjiskaak gan parskataamak, gan.... 1 tabulaa glabaajam unikaalos datus.... Vards uzvards, dzimsanas gads , dzimums utt... 2 tabulaa sekundaros: preces marka utt.... (jo 1 pardeveejam/pircejam var buut N preces, Bet parasti Tikai 1 dzimsanas gads, vards, iesauka utt... Pat dzivesvietu jaglabaa atseviskjaa tabulaa, jo katram var buut N adreses.... P.S. pie ievades atceries ka formas name var buut masiivs ;) ... name="nosaukums[]"... un nolasi vinju ciklaa ;) Un arii ievadi veic ciklaa , sakuma ievadi Vardu, uzvardu utt, panjem ar mysql_insert_id() , Ievadiito ID un tad ciklaa aispildi 2 tabulu.... Visa beeda ;) Nolasisanai izmanto JOIN (INERR JOIN) Edited November 5, 2006 by Grey_Wolf Link to comment Share on other sites More sharing options...
Recommended Posts