Jump to content
php.lv forumi

viena veida datu ievotošana tabulā


7924

Recommended Posts

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

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

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

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

:)

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 by Grey_Wolf
Link to comment
Share on other sites

×
×
  • Create New...