Witam.
Mam pytanie dotyczące dwóch <form> z których przekazuję dane i chciałbym aby w trakcie edycje tych <form> gdzie dane zapisują się do MySql pozostawiały na ekranie.
Mniej więcej jak na tym scrinie :
1. klikam na pokaz id
a) pokazuje mi sie druga lista
2. zmieniam dane, klikam edytuj
3. odświeża mi się strona i pozostaje tylko górna lista.
Probowałem z $_SESSION aby pamiętał ale nie pomaga. Proszę o wskazówki jak się powinno prawidłowo okodować takie dwa formy.
Poniżej mój kod, zapisałem go tu w jednym pliku ale normalnie robie przez include odnoszenie się do poszczególnych osobnych plików.
Sama idea tego projektu jest nie spójna bo mam np. w dwóch miejscach możliwość edycji pozycji czy możliwość skasowania, ale to tylko po to aby pokazać o co mi chodzi :) Dziękuję za pomoc.
<form action="#" method="POST">
Podaj imię: <input type="text" name="imie">
Podaj maila: <input type="email" name="email">
<input type="submit" name="przekaz" value="dodaj">
</form>
<?php
session_start();
require_once 'db.php';
# ----------dodaje do bazy :
if (isset($_POST['przekaz']) && !empty($_POST['imie']) && !empty($_POST['email']) ) {
$dodaj = $db -> prepare ("INSERT INTO test VALUES (NULL, :imie, :email)");
$dodaj -> bindValue (':imie',$_POST['imie'],PDO::PARAM_STR);
$dodaj -> bindValue (':email',$_POST['email'],PDO::PARAM_STR);
$dodaj -> execute();
} else {
echo ("nic nie podałeś...");
}
?>
#-----------pokazuje pierwszą listę
<?php
$odczyt = $db -> query ("SELECT * FROM test");
$odczytLista = $odczyt -> fetchAll();
?>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>IMIE</th>
<th>MAIL</th>
<th>EDYCJA</th>
</tr>
</thead>
<?php
foreach ($odczytLista as $wynik) {
echo "<form action='#' method='POST'>";
echo "<tbody>
<tr>
<td>".$wynik["id"]."</td>
<td><input type='text' name='imie' value=".$wynik["imie"]."></td>
<td><input type='text' name='email' value=".$wynik["email"]."></td>
<td>
<input type='hidden' name='id' value='".$wynik["id"]."'>
<input type='submit' name='kasuj' value='skasuj'>
<input type='submit' name='edycja' value='edytuj'>
<input type='submit' name='idp' value='pokaz id'>
</td>
</tr>
</tbody>";
echo "</form>";
}
?>
</table>
#----------spr co wybrałem z inputa:
<?php
if (isset($_POST['kasuj']) ) {
$skasuj = $db -> prepare ("DELETE FROM test WHERE id=:id");
$skasuj -> bindValue ('id',$_POST["id"]);
$skasuj -> execute();
// header ('refresh: 0;');
}
if (isset($_POST['edycja']) ) {
$edycja = $db -> prepare ("UPDATE test SET imie=:imie, email=:email WHERE id=:id");
$edycja -> bindValue ('id',$_POST["id"]);
$edycja -> bindValue ('imie',$_POST["imie"],PDO::PARAM_STR);
$edycja -> bindValue ('email',$_POST["email"],PDO::PARAM_STR);
$edycja -> execute();
// header ('refresh: 0;');
}
#----------pokazuje druga liste:
if (isset($_POST['idp']) ) {
$odczyt = $db -> query ("SELECT * FROM test WHERE id=$_POST[id]");
$odczytLista = $odczyt -> fetchAll();
?>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>IMIE</th>
<th>MAIL</th>
<th>EDYTUJ</th>
</tr>
</thead>
<?php
foreach ($odczytLista as $wynik) {
echo "<form action='#' method='POST'>";
echo "<tbody>
<tr>
<td>".$wynik["id"]."</td>
<td><input type='text' name='imie' value=".$wynik["imie"]."></td>
<td><input type='text' name='email' value=".$wynik["email"]."></td>
<td>
<input type='hidden' name='id' value='".$wynik["id"]."'>
<input type='submit' name='kasuj' value='skasuj'>
<input type='submit' name='edycja' value='edytuj'>
</td>
</tr>
</tbody>";
echo "</form>";
}
?>
</table>
<?php
}