Adaugare butoane la listare din mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
giulian9
Mesaje: 44

Adaugare butoane la listare din mysql

Salutare , acest site m-a ajutat mult pana acum.
Sunt blocat intr-o listare mysql care e putin mai complicata pentru cunostintele mele.
Listez baza de date in html folosind:

Cod: Selectaţi tot

while($row = $result->fetch_assoc()) {...}
Problema de care m-am lovit e faptul ca fiecare inregistare trebuie sa aiba 5 butoane ( Confirmare , Respingere , Stergere, Detalii ) . Mai exact baza de date contine datele clientilor ce vor sa se inregistreze , iar dupa listare trebuie sa fiecarui buton sa ii fie atribuita o functie . spre ex. Confirmare -> Se genereaza nr de inregistrare , Clientul primeste email cu nr generat intr-un fisier pdf s.a.m.d..
Ideea ca listarea e cu "bucla" while si orice schimb in prima coloana se modifica si la ceilalti. Are cineva idee cum as putea sa fac listarea / eventual schimba ceva la butoane ca sa pot modifica fiecare inregistrare (individual).
Stima

MarPlo Mesaje: 4343
Salut
Daca ai pune codul php pe care ai incercat sa-l faci, si ce cod html ai vrea sa rezulte, pate are cineva o idee sau solutie ajutatoare.

giulian9 Mesaje: 44

Cod: Selectaţi tot

result = $conn->query($sql);
if ($result->num_rows > 0) {
 while($row = $result->fetch_assoc()) {
   echo '<table align="center" border=3 width="50%" height="100">';
   echo '<tr><th>Firma</th><th>Data</th><th>Nr.Inreg</th><th>Articol</th></tr>';
    echo '<tr><td>'. $row['Firma']. '</td><td> '. $row['Data']. '</td>  <td>  '. $row['Nr.Inreg']. '</td><td colspan="5">  '. $row['Articol']. '</td>
          <td style="background-color:#f3f3f3" colspan="4" valign="middle" align="center"><input type ="button" value = "Confirmare" name="Confirmare"></button><input type ="button" value = "Refuz" name="Refuz"></button><input type ="button" value = "Stergere" name="Stergere"></button><input type ="button" value = "Mentiune" name="Mentiune"></button><input type ="button" value = "Detalii" name="Detalii"></button></tr> ';
 }    
}
else {
  echo 'Fara Informatii ! !';
}
echo '</table>';
Eu incerc sa fac ceva de genul in javascript:

Cod: Selectaţi tot

function OnConfirmare() {
document.Form1.action = "<?php include('database.php');
// generare nr inreg
// mail catre client
?>"
// document.Form1.target = "_blank"; // Open in a new window

document.Form1.submit(); // Submit the page
return true;
}
.., ca sa pot atribui o functie butonului , insa fiind intr-o bucla ...nu am idee / cunostinte

MarPlo Mesaje: 4343
Poti sa faci asa:
1. Adaugi butoanele intr-un <div> cu "class" si "id"-ul randului din mysql pentru folosire in javascript:

Cod: Selectaţi tot

<td style="background-color:#f3f3f3" colspan="4" valign="middle" align="center"><div class="frm_btns" id="frm_'. $row['id'] .'">
<input type ="button" value = "Confirmare" name="Confirmare"></button><input type ="button" value = "Refuz" name="Refuz"></button><input type ="button" value = "Stergere" name="Stergere"></button><input type ="button" value = "Mentiune" name="Mentiune"></button><input type ="button" value = "Detalii" name="Detalii"></button>
</div></td>
2. In codul html, dupa tabelul cu listarea, adaugi un <form> cu campuri "hidden" pt. id si actiunea butonului apasat, si scriptul JS din acest cod, care inregistreaza "click" la butoanele din acel <div> sa trimita datele la "scriptul.php".

Cod: Selectaţi tot

<table align="center" border="3" width="50%" height="100">
...
</table>
<form action="scriptul.php" method="post" target="_blank" id="frm_send">
 <input type="hidden" name="mode" value="">
 <input type="hidden" name="id" value="">
</form>
<script>
//get the clicked button, add mode and id data in form #frm_send, send the form
function sendFrm(btn){
  frm_send.mode.value= btn.value;
  frm_send.id.value= btn.parentNode.id.replace('frm_', '');
  frm_send.submit();
}
var frm_send = document.getElementById('frm_send'); //form to add and send data

//register click to buttons in .frm_btns, to call the sendFrm()
var all_btns = document.querySelectorAll('.frm_btns input');
for(var i=0;i<all_btns.length;i++) all_btns[i].addEventListener('click', function(ev){ sendFrm(ev.target);});
</script>
3. In acel fisier php preiei si folosesti cum stii datele trimise:

Cod: Selectaţi tot

if(isset($_POST['mode']) && isset($_POST['id'])){
  $mode = strip_tags($_POST['mode']);
  $id = (int) $_POST['id'];
  //etc..
}

giulian9 Mesaje: 44
Multumesc Marplo . Ruleaza ok ,pot identifica ce buton a fost ales, insa ma lovesc de aceeasi dilema care o aveam la inceput , cum identific pe ce linie sunt(daca sunt la clientul 1 sau 2 ,3 etc) , id = 0 indiferent ce buton aleg .

MarPlo Mesaje: 4343
ID-ul ar trebui sa fie in aceasta bucata de cod (poti sa verifici in sursa html a paginii cum e rezultat):

Cod: Selectaţi tot

<div class="frm_btns" id="frm_'. $row['id'] .'">
- unde $row['id'] e id-ul randului respectiv din baza de date. Ca sa functioneze, trebuie si el selectat in instructiunea sql care face Select-ul, impreuna cu celelalte coloane, dupa cum ai denumirea coloanei pentru id-ul randului din tabelul mysql.

giulian9 Mesaje: 44
giulian9 scrie:Multumesc Marplo . Ruleaza ok ,pot identifica ce buton a fost ales, insa ma lovesc de aceeasi dilema care o aveam la inceput , cum identific pe ce linie sunt(daca sunt la clientul 1 sau 2 ,3 etc) , id = 0 indiferent ce buton aleg .
Edit: Am adaugat Id la interogarea sql ( se pare ca uitasem ) si functioneaza. Ramane sa merg mai departe cu filtre / sortare pentru fiecare buton in parte .

Subiecte similare