Jump to content
php.lv forumi

rindu dzesana no db pec checkboxiem


tomaac

Recommended Posts

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

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

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

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

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

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

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

×
×
  • Create New...