Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Przesyłanie POST
Forum PHP.pl > Forum > Przedszkole
Coyote94
Witam,

Nie wiem dlaczego zawsze jako ID przekazuje mi ostatni element a nie ten który kliknąłem np edytuj lub usuń

Plik z klasa db.php
<?php
class Baza
{
function __construct($host, $database, $port, $username, $password)
{
try {
$this->pdo = new PDO('mysql:host='.$host.';dbname='.$database.';port='.
$port, $username, $password);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo 'Połączenie nie mogło zostać utworzone:<br> ' . $e->getMessage();
}
}

function select_insert()
{
$lp = 1;
echo '<form method="post" action="index.php" name="formularz">
<table>
<tr>
<th>l.p</th>
<th>Imię</th>
<th>Nazwisko</th>
<th>Numer komórki</th>
<th>Waga</th>
<th>Aktualizacja</th>
<th>Usuń</th>
<th>Edytuj</th>
</tr>';

$stmt = $this->pdo->query('SELECT id_osoba, imie, nazwisko, nr_kom, waga, aktualizacja FROM klient');

foreach($stmt as $row)
{
echo '<tr>'.
'<td>'.$lp++.'</td>'.
'<td>'.$row['imie'].'</td>'.
'<td>'.$row['nazwisko'].'</td>'.
'<td>'.$row['nr_kom'].'</td>'.
'<td>'.$row['waga'].'</td>'.
'<td>'.$row['aktualizacja'].'</td>'.
'<td>
<input type="hidden" name="id" value="'.$row['id_osoba'].'">
<input type="submit" name="delete" onclick=\'return confirm("Usunąć ten wpis?");\' value="Usuń"></td>'.
'<td>
<input type="hidden" name="id" value="'.$row['id_osoba'].'">
<input type="submit" name="edit" value="Edytuj"></td>'.
'</tr>';
}

$stmt->closeCursor();

echo '<tr>
<td></td>
<td><input type="text" name="imie" ></td>
<td><input type="text" name="nazwisko" ></td>
<td><input type="text" name="nr_kom" ></td>
<td><input type="number" step="0.01" name="waga" ></td>
<td></td>
<td><input type="submit" name="insert" value="Dodaj" onclick="return sprawdz();"></td>
<td></td>

</tr>
</table></form>';
}

function select_update($id)
{
$lp = 1;
echo '
<form method="post" action="index.php" name="formularz">
<input type="hidden" name="insert" value="true">
<table>
<tr>
<th>l.p</th>
<th>Imię</th>
<th>Nazwisko</th>
<th>Numer komórki</th>
<th>Waga</th>
<th>Aktualizacja</th>
<th>Usuń</th>
<th>Edytuj</th>
<th>id</th>
<th>id_Kliknietego</th>
</tr>';
$stmt = $this->pdo->query('SELECT id_osoba, imie, nazwisko, nr_kom, waga, aktualizacja FROM klient');

foreach($stmt as $row)
{
if($row['id_osoba'] == $id)
{
echo '<tr>'.
'<td><input type="hidden" name="update" value="'.$row['id_osoba'].'">'.
$lp++.'</td>'.
'<td><input type="text" value="'.$row['imie'].'" name="imie"></td>'.
'<td><input type="text" value="'.$row['nazwisko'].'" name="nazwisko"></td>'.
'<td><input type="text" value="'.$row['nr_kom'].'" name="nr_kom" required ></td>'.
'<td><input type="number" step="0.01" value="'.$row['waga'].'" name="waga" required></td>'.
'<td>'.$row['aktualizacja'].'</td>'.
'<td><input type="submit" value="Zapisz" onclick="return sprawdz();"></td>'.
'<td><input type="button" value="Anuluj" '.
'onclick="document.location = \'index.php\';"></td>'.
'</tr>';
}
else
echo '<tr>'.
'<td>'.$lp++.'</td>'.
'<td>'.$row['imie'].'</td>'.
'<td>'.$row['nazwisko'].'</td>'.
'<td>'.$row['nr_kom'].'</td>'.
'<td>'.$row['waga'].'</td>'.
'<td>'.$row['aktualizacja'].'</td>'.
'<td></td>'.
'<td></td>'.
'<td>'.$row['id_osoba'].'</td>'.
'<td>'.$_POST['id'].'</td>'.
'</tr>';
}
$stmt->closeCursor();
echo '</table></form>';
}

function insert($imie,$nazwisko,$nr_kom,$waga)
{
try {
$dbquery = $this->pdo->prepare('INSERT INTO klient(imie, nazwisko, nr_kom, waga,aktualizacja) VALUES(?, ?, ?, ?, ?)');
$dbquery->execute(array($imie,$nazwisko,$nr_kom,$waga,date("Y-m-d H:i:s")));
header('Location: index.php');
}
catch(PDOException $e) {
echo $e->getMessage();
}
}

function delete($id)
{
try {
$dbquery = $this->pdo->prepare('DELETE FROM klient WHERE id_osoba= ?');
$dbquery->execute(array($id));
header('Location: index.php');
}
catch(PDOException $e) {
echo $e->getMessage();
}
}

function update($imie, $nazwisko, $nr_kom, $waga, $id)
{
try {
$dbquery = $this->pdo->prepare('UPDATE klient SET imie = ?, nazwisko = ?, nr_kom = ?, waga = ?, aktualizacja = ? WHERE id_osoba = ?');
$dbquery->execute(array($imie, $nazwisko, $nr_kom, $waga, date("Y-m-d H:i:s"), $id));
header('Location: index.php');
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
?>

Plik index.php:
<!DOCTYPE HTML>
<html>
<head>
<title>Baza danych w PHP przy użyciu biblioteki PDO - przykład</title>
<meta charset="utf-8">
<meta name="author" content="">
<meta name="description" content="">
<meta name="keywords" content="">
<link href="style.css" rel="stylesheet" type="text/css">
<script src="skrypty.js" type="text/javascript"></script>
</head>
<body>
<header>
<h1>Interfejs obsługi tabeli: klientów</h1>
</header>


<?php
require('db.php');
require('config.php');

$baza = new Baza($host,$dbname,$port,$login,$haslo);

if( isset($_POST['delete']) )
$baza->delete($_POST['id']);
elseif( isset($_POST['update']) )
$baza->update($_POST['imie'],$_POST['nazwisko'],$_POST['nr_kom'],$_POST['waga'],$_POST['update']);
elseif( isset($_POST['insert']) )
$baza->insert($_POST['imie'],$_POST['nazwisko'],$_POST['nr_kom'],$_POST['waga']);
elseif( isset($_POST['edit']) )
$baza->select_update($_POST['id']);
else
$baza->select_insert();

?>

</body>
</html>

Beniooo
1. Użyj może znacznika [code] bo po to został dodany
2. Jakiego ID? Bo my tu zajmujemy się językami programowania, a nie wróżeniem z fusów wink.gif
nospor
@Benioo z calym szacunkiem, ale wystarczylo spojrzec w kod...

@Coyote94 tworz formularz dla kazdej grupy id/usun oraz id/edytuj oraz insert, wowczas dostaniesz swoje ID. Teraz masz jeden z form z cala masa pol o tych samych nazwach, wiec sie nie dziw ze leci ostatnia ktora nadpisuje wszystkie wczesniejsze.

I uzywaj BBCODE. MA byc PHP a nie CODE jak wspomnial poprzednik...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.