Topic: insert pries patikrindami
Susidūriau su problema, gal galite padėti ją išspręsti,
taigi idėja tokia: per formytę uploadinam studentų sąrašą (csv pavidalu), ir visą tą sąrašą insertinam į duomenų bazę.
Jei csv failas turi stuleplių pavadinimus, tai pirmą eilutę praskipinam.
Tačiau, prieš įterpdami turim patikrinti, ar tokio studento nėra duomenų bazėj. Kaip tą įgivendinti?
Bendrai paemus man reik patirkinti tris požymius:
jeigu login ir asm_id yra vienodi - neįterpiam išvis;
jeigu login ir asm_id yra skirtingi - update'inam tą įraša pagal asm_id;
jeigu login ir asm_id išvis tokia pora neegzistuoja (unikalus įrašas) - tokį įterpiam.
čia yra pirminis sprendimas, be jokių tirkinimų.
while (($data = fgetcsv($handle, 1000, "$skirtukas")) !== FALSE){
if($pirma_eilute){$pirma_eilute=false;continue;} //skip'inam pirma eilute, jeigu yra headeris.
$import="INSERT INTO testas (login,pwd,user_category_id,asm_id) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]')";
mysql_query($import);
}
}
čia bandžiau kažką kniurpti, tačiau toks sprendimas man visiškai nepagelbėjo:
while (($data = fgetcsv($handle, 1000, "$skirtukas")) !== FALSE){
if($pirma_eilute){$pirma_eilute=false;continue;} //skip'inam pirma eilute, jeigu yra headeris.
$tikrinam = "SELECT asm_id, login FROM testas WHERE asm_id = '$data[3]' and login = '$data[0]'";
$import="INSERT INTO testas (login,pwd,user_category_id,asm_id) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]')";
$tikrinam2 = mysql_num_rows($tikrinam);
if($tikrinam2==0){
mysql_query($import);
}
}
Kaip aš suprantu, čia maniškis kodas patikrina įrašą, jį radęs, nevygdo užklausos, tačiau jeigu jis neranda, įvygdo import užklausą, kur įterpia visą failo turinį, nebepatikrinęs likusių.
Niekaip nesugalvoju, kaip kad tikrintų kiekvieną įrašą esantį tam csv faile su duomenų bazėj esančiu įrašu.
Ačiū