tomaac Posted November 23, 2007 Report Share Posted November 23, 2007 Ir tabula ar rindām. Katra rinda atbilst kādam db ieraktam. Pie katras rindas ir "checkbox", kas nozīmē - Dzēst šo rindu no db vai nedzēst. Kad lietotājs ir saķeksējis "checkbox" un nospiež pogu, tad notiek dzēšana. Pie tam nepieciešams pārjautāt, vai tiešām vēlies dzēst? Un ja jā, tad vajag vērsties pie db un tad pārlādēt arī visu lapu. Tad šeit ir jautājums - kā šādas situācijas parasti labāk realizēt? 1) uz pogas nospiešanas pasaukt JavaScript funkciju, kas pajautās - vai tiešām dzēst? 2) šī funkcija arī savāks visus čekbokšu idus, un izveido sql query, kas būtu jāpilda php 3) izsauc ajaxu, kas izpilda šo queriju 4) pārlādē lapu, ja ir ok --------------------------------------------------------------------------------- vēl iespējams var uz pogas nospiešanas 1) vispirms pajautā, vai tiešām dzēst?, ja jā, tad 2) pārlāde lapu, padodot kā GET parametru, piemēram, dzest=1 3) atbilstoši apstrādā šo parametru Bet tad šajā gadījumā sanāks, ka Refereshojot šo lapu (ar dzest=1), kaut kas tiks izdzēsts atkal un atkal... --------------------------------------------------------------------------------- Varbūt var ari kaut kā nopostēt. Nezinu. Kā vajadzētu? Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 1 un 2. variants kopā, ja nevēlies izmantot ajax. 1) pajautā vai tiešām dzēst , to ar JS var. 2) pie checkboxiem liec name="checboxes[]" value="DB_ieraksta_id" 3) ja lietotājs apstiprina dzēšanu, tad nosubmito formu 4) izdzēs attiecīgos ierakstus pēc ID un redirektē viņu atpakaļ no kurienes viņš nācis ar header('Location: http://adrese'); Link to comment Share on other sites More sharing options...
Delfins Posted November 23, 2007 Report Share Posted November 23, 2007 (edited) submito formu iekš paslēpta iframe... visu melno darbu darīs PHP kā parasti... Ifreimam ieladējoties (pēc submit) - ieliec beigās (tur kur delete) window.parent.refresh() (f-jas neatceros no galvas, paskaties dokos) - vai arī pasauc f-ju uz parent loga, lai tas izdzēš Javaskriptiski tabulas row-us. (tas pats vien AJAX sanāk, tikai čerez iframe) Nekādā gadījumā nesūti SQL čerez AJAX... pilnīgs idiotisms šajā gadījumā. Edited November 23, 2007 by Delfins Link to comment Share on other sites More sharing options...
tomaac Posted November 23, 2007 Author Report Share Posted November 23, 2007 (edited) to Vebers: Ja pie name raksta checkboxes[] vai kaut ko tādā stilā kā xxx[], tas nozīmētu, ka postēšanas rezultātā tiek izveidots masīvs no šiem namiem? Un papildus - vai nosaukumā priekšā likt "db_" ir lietderīgi? Respektīvi, tā pieņemts... vai kāpēc? Edited November 23, 2007 by tomaac Link to comment Share on other sites More sharing options...
andrisp Posted November 23, 2007 Report Share Posted November 23, 2007 Par [] - jā, masīvs. Nosaukumus vari likt kādus gribi. Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 Paskaties pats ;) var_dump($_POST); to db_ vari likt un vari nelikt. Pēc paša izvēles, bet tā db vietā gan izdomā k-ko citu. Baigi acīs cērtās tas db_ Link to comment Share on other sites More sharing options...
tomaac Posted November 23, 2007 Author Report Share Posted November 23, 2007 Es biju domājusi, vai nevar likt vienkārši ID, bez db_id? (Saprotu jau, ka var, bet vai tās normāli?) Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 (edited) nu tev rezultātam ir jasanāk apmēram tādam <input type="checkbox" name="checkboxes[]" value="1" /> <input type="checkbox" name="checkboxes[]" value="3" /> <input type="checkbox" name="checkboxes[]" value="4" /> <input type="checkbox" name="checkboxes[]" value="19" /> un tad otrā galā (ar php) apstrādā $delStr = implode(', ', $_POST['checkboxes']); // te derētu arī pārliecināties vai checkbox value tiešām ir Integer (cipars) $q = "DELETE FROM tabula WHERE id IN (".$delStr.")"; mysql_query($q); Tas tā uz ātru roku, lai domu saproti. Edited November 23, 2007 by Vebers Link to comment Share on other sites More sharing options...
andrisp Posted November 23, 2007 Report Share Posted November 23, 2007 (edited) Vebers, man liekas tas diezgan nejedzīgi izmantot htmlspecialchars tur. htmlspecialchars ir jāizmanto, kad liec vērtības iekš HTML, nevis, kad taisies strādāt ar POST datiem un kabināt tos iekš kverija. (Protams, noslodzes mazināšānas nolūkos reizēm tekstu jau htmlspecialcharo pie ievietošanas, bet šis būs tas gadījums?) UPD: viltnieks :) paspēji izrediģēt :) Edited November 23, 2007 by andrisp Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 Šeit, nepieciešama pārbaude tikai pie tā vai šis postotais Id tiešām ir integer, lai nesanāk šmuces ar SQL injekcijām. Link to comment Share on other sites More sharing options...
bubu Posted November 23, 2007 Report Share Posted November 23, 2007 $delStr = implode(',', array_map(intval', $_POST['checkboxes'])); Tik uzmanīgi ar 0-to ID :) Link to comment Share on other sites More sharing options...
andrisp Posted November 23, 2007 Report Share Posted November 23, 2007 Vebers, es zinu, mans koments jau bija tikai par tavu sākotnējo kodu :) Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 (edited) htmlspecialchars ir jāizmanto, kad liec vērtības iekš HTML, nevis, kad taisies strādāt ar POST datiem un kabināt tos iekš kverija. Bet kāpēc gan lai htmlspecialchars sheit arī neizmantotu? Šī funkcija pārvērš SQL query`iem indīgās pēdiņas par & quot; utml. Protams ir labākas f-jas tam, kā, piemēram, mysql_real_escape_string, bet fakts kā tāds, ka der. Edited November 23, 2007 by Vebers Link to comment Share on other sites More sharing options...
andrisp Posted November 23, 2007 Report Share Posted November 23, 2007 Tāpēc, ka tas ir muļķīgi un stulbi izmantot funkcijas galīgi nepiemērotās vietās, it sevišķi, ja ir citas funkcijas, kas paredzētas tieši šim mērķim. Link to comment Share on other sites More sharing options...
Vebers Posted November 23, 2007 Report Share Posted November 23, 2007 Taisnība.. Link to comment Share on other sites More sharing options...
Recommended Posts