| Ovidiu a întrebat:

Salutare tuturor, am si eu o mica problema si as vrea sa caut un raspuns, dupa o multime de incercari. Daca este cineva care este din domeniu.

Am o baza de date MySQL. O pagina index.php si un fisier extern tot de tip php.
In fisierul index.php am urmatoarea:


In fisierul extern php am codul de extragere din baza de date si afisarea lui.
$query=mysql_query("SELECT * FROM clienti") or die (mysql_error());
$randuri_raspuns=mysql_num_rows($query);
>if($randuri_raspuns0){
while ($row=mysql_fetch_row($query)) {
echo "";
echo "
$row[0]
$row[1]
$row[2]

// acest div 'popup' este in display: none; position: absolute, ca sa nu afecteze randul tabelului.
Editeaza
Sterge

";

-----------------------------
Acest echo din fisierul extern php este adus in fisierul index.php cu jquery si anume: $(".AfisareBazadeDate"). load(extern.php);
Ce inceamna acel?
Pentru fiecare rand vreau sa am un buton cu optiuni si anume: Editeaza sau Sterge pentru randul unde am facut clic pe buton;
Prima data am incercat asa:
$(document).ready(function(){
$("#optiuni").click(function(){
$(".popup"). tooggle();
});
});
dar, cand fac clic pe unul din butoanele 'optiuni', imi afiseaza acel popup pe toate randurile.
cum pot face ca sa se afiseze un singur popup, doar pentruun singur rand; am facut clic pe btn de pe randul 5 sa imi afiseze optiunile(acel popup) pentru randul nr 5;
cineva a zis ca asta este rezultatul care in caut eu:

jQuery(document).ready(function() {
jQuery("#optiuni").on("click", function() {
jQuery(this).parent().find(".popup"). toggle();
});
});
nu este asa. daca am un numar definit de randuri, dar care sunt create direct in fisierul principal - nu sunt generate dintr-o baza mysql, functioneaza; inca eu pot avea in acel tabel n randuri. 1 - 10 - 100 - 1000; este o baza de date;

Astept pareri din partea voastra si poate ma puteti ajuta; cam 1 zi(nu incontinuu laughing am stat sa gasesc un raspuns dar nu am avut niciun rezultat.

O zi buna!

Răspuns Câştigător
anonim_4396
| anonim_4396 a răspuns:

Ce ai postat aici e o mizerie. Nu mai posta cod pe TPU fiindca aici ti-l taie. Incearca un http://pastebin.com
Pui codul acolo si dai copy-paste la link aici.


Sper ca am inteles oricum ce te intereseaza.

Cand afisezi fiecare rand de tabel din PHP poti sa introduci fiecare coloana in cate un span tag cu un id = "tipcoloana_nrrecord", iar butonul de edit/delete corespunzator sa aiba link spre o functie JS cu parametru(record_id).

record_id ar trebui sa fie in principiu primul field column din tabel(tip Primary Key cu Auto_Increment).

Sa-ti descriu prototipurile functiilor de popup si editare:

function show_editpopup(record_id)
{
//DOM stuff: get span elements by id, unde id = recordtype1_record_id, recordtype2_record_id, etc.

//apoi generezi niste input fields carora le atribui valorile din acele spans.

//on submit apelezi functia de mai jos careia ii transmiti ca parametru un sir cu toate acele recordtypes...sau mai degraba un obiect gen record = {'recordtype_1':value, 'recordtype_2':value, etc.}

}

function edit_record(record_id, record)
{

//trimiti acesti parametri prin Ajax la un script extern PHP care ii va prelua prin POST sau GET, eventual facand o decodare JSON(daca ai nevoie) si apoi face UPDATE in tabel prin apel MySQL.
Si returneaza mesaj de succes/status in caz ca a fost succes...
}

Pentru delete e mai simplu fiindca doar trimiti record_id si atat. E singurul parametru.


Intrebari?

18 răspunsuri:
| Ovidiu explică (pentru anonim_4396):

Nu mi-am dat seama ca, codul va fi taiat big grin

| Ovidiu explică (pentru anonim_4396):

Nu prea am inteles ce ai zis, asa cat de cat big grin

anonim_4396
| anonim_4396 a răspuns (pentru Ovidiu):

Si eu ce sa iti spun? Spune si ce nu ai inteles. Sa stii ca nu te taxeaza TPU daca oferi si detalii. Crezi ca imi dau eu seama ce anume nu intelegi? Eu am scris cat se poate de clar pentru cineva care macar stie notiuni de baza.
Eu ti-am scris idei relativ simple de implementare, acum e culmea daca vrei cod functional mura-n gura(iar eu nu-mi permit timp sa stau sa-ti fac tie exemple). Daca vrei sa inveti programare Web atunci te mai si chinui. Insa vad ca tu te chinui de vreo 2 ani pe TPU cu intrebari cam simple. Observ ca nu prea avansezi usor. Dar ce faci in cea mai mare parte a timpului, de curiozitate? Te apuca asa o data la 3 luni cheful de asa ceva, in rest duci alta viata lipsita de stres? big grin

| Ovidiu explică (pentru anonim_4396):

"cand afisezi fiecare rand de tabel din PHP poti sa introduci fiecare coloana in
cate un span tag cu un id = "tipcoloana_nrrecord", iar butonul de edit/delete
corespunzator sa aiba link spre o functie JS cu parametru(record_id). "

de ce sa introduc coloana si nu randul?
ai scris undeva, function show_editpopup()...
am butonul Optiuni pe fiecare rand, adus din php impreuna cu celelalte date. cand fac clic pe unul din butoane, sa-mi afiseze acel popup cu optiunile care le-am: editeaza, sterge. atat. mai departe ma descurc sa fac codul pentru editare, stergere smd.

//tabel adus din php prin metoda $(selector). load() : //

id nume prenume
----------------------------------------------------------
1 ion ion [btn optiuni]
2 vasile vasile [btn optiuni]

cand fac clic pe unul din btn sa imi afiseze UN SINGUR popup(doar pentru randul respectiv) nu la toate cum am intalnit(cand faceam pe un btn imi aparea la toate).

// In interiorul btn am pus onclick="function("'.$row[0]'")", unde.$row[0] este id - auto increment. //

iar in fisierul.js am facut asa:
function popup(parametru)
{
cod de aisare la clic pe btn in jquery: show(); bla bla bla, cred ca tiai da seama
}

eh, dar tot nu merge, ca trebuie sa fac ceva cu parametrul ala. cred.

m-am gandit si asa:

// // sa vine popup_1, 2, 3, ...
edit
delete


dar nu stiu mai departe.
daca fac clic pe btn de pe r$ow[0] sai afiseze popup_$row[0].
logic as sti, dar nu si practic.

Deci doar atat vreau sa stiu cu aces popup. mai departe ma descur happy

Sa vezi ce factura imi vine de la TPU happy


| Ovidiu explică (pentru anonim_4396):

Iar mia taiat TPU: :)
intra aici: http://pastebin.com/RRJN8xY3

| Ovidiu explică (pentru anonim_4396):

Sau intra si aici, sa vezi cum am facut eu, si cum as vrea sa fac, dar nu stiu: http://pastebin.com/jk3yRRCX

anonim_4396
| anonim_4396 a răspuns:

Rand, da. Depinde cum privesti. Eu am zis coloana ca sa intelegi ca ma refer la tip de element(coloana), nu la numarul elementului(rand).

Faci un singur chenar tip popup. Nu faci cate unul pentru fiecare rand fiindca e nebunie.

Cand vrei sa-l afisezi vei genera dinamic in el niste input fields care vor lua valorile predefinite din ce ai afisat deja pe pagina, iar asta tinand cont de parametrii dati. (cazul editarii)
La afisare din PHP, elementele din tabel le bagi si tu in niste span-uri la care pui un id(sa le identifici in mod unic pe pagina), iar modelul considerat de mine = tipcoloana_nrrecord.

Intelegi ce zic pana aici?

Iar in acel chenar popup ai un buton de submit la ce faci acolo, iar on click pe el apelezi o functie JS cu parametri, iar record_id e parametrul esential atat la editare, cat si la stergere.

Record_id il obtii pentru fiecare rand afisat din PHP(iteratia nr. N). Unde il strecori? Pai intr-o ancora ideal. < a href="show_popupedit($record_id afisat din PHP)"> Edit</a>

Odata ce ai acest record_id te descurci sa manipulezi datele mai departe lejer. Vei sti ce editezi, vei sti ce stergi. Iti va iesi.

Normal ca tie iti apareau atatea popup-uri cate inregistrari aveai CU ACEEASI CLASA HTML. De-aia iti spun. Pune un ID diferit si iti va iesi.

Astept alte intrebari daca vor mai fi. Spor!

anonim_4396
| anonim_4396 a răspuns:

Si stai asa. Nu faci popup doar ca sa afisezi butoane! E aiurea.
Arunca o privire aici:

http://getbootstrap.com/components/#btn-dropdowns

Mult mai eficient! Faci caseta/chenar popup care reprezinta deja actiunea(editare sau stergere).

| Ovidiu explică (pentru anonim_4396):

Aha, sa vad cum iese treaba si pai revin. mersi happy

anonim_4396
| anonim_4396 a răspuns (pentru Ovidiu):

Http://pastebin.com/Wfs7H4ci

Vezi si acolo repede cum ti-am detaliat.

| Ovidiu explică (pentru anonim_4396):

Am reusit. Ms mult;

anonim_4396
| anonim_4396 a răspuns (pentru Ovidiu):

A iesit si fum acolo? laughing

| Ovidiu explică (pentru anonim_4396):

Neeee

| Ovidiu explică (pentru anonim_4396):

Mda,idei jumate de la mine, jumate de la tine laughing

acuma, cum sa fac, ca atunci cand fac clic in afara pouppului sa mi se inchida. cand fac clic pe bnt se inchide ca a pus toggle(). dar pe body?
//////////////////
$("body"). click(function(){
$(". popup"). hide();
});
/////////////////
Nu mergebig grin

| Ovidiu explică (pentru Ovidiu):

Sau nu pe body, neaparat, ca totul este intro fereastra creata de mine: modal window, daca zic bine. cand fac clic oriunde in afara acelui popup

| Ovidiu explică (pentru anonim_4396):

Inca ceva; ai inteles altceva big grin
eu am zis: am un buton de denumit OPTIUNIhappy cand fac clic pe el sami afiseze cele doua optiuni: editeaza si sterge.

lasa intreaga fereastra, unde sa pot pune noile date, pentru actualizare. eu vroaim, de exemplu, cum ai da clic dreapta pe desktop, cu un meniu, iar apoi cand faci clic pe optiune respectiva sati execute editarea sau stergerea, in functie ce aveam eu happy

| Ovidiu explică (pentru Ovidiu):

Hai ca am facut-o si pe asta big grin

anonim_4396
| anonim_4396 a răspuns (pentru Ovidiu):

Tocmai ce ti-am zis deja ca e o absurditate ceea ce faci. Nu-i de mirare ca te si blochezi atat pe parcurs.

Invata sa utilizezi Bootstrap. E foarte utilizat si usureaza munca enorm in design. Ti-am aratat mai sus si ce componenta sa utilizezi in aplicatia ta de santier. happy

Fa ca mine fix tot ce ti-am zis(si mai intrebi eventual unde te pierzi) si vei vedea ca e mult mai logica/fireasca toata treaba...si chiar si mai usoara, ceea ce inseamna mult!