Pobranie id, edycja rekordu PHP+Oracle

0

Witam,
Mam nastepujacy problem. Stworzylem formularz logowania oraz dodawanie, usuwanie uzytkownikow z bazy danych oracle. Chcialbym jeszcze stworzyc mozliwosc edycji rekordow, ale mam problem z pobraniem ID. Gdy w pliku edit_h.php w poleceniu $stid = oci_parse($con, "UPDATE uzytkownik SET LOGIN = :login WHERE id = :id"); wpisuje numer id recznie wszystko dziala jak powinno, ale chciałbym, żeby id było pobierane automatycznie. Ponizej zalaczam kod. Z góry dziękuje za pomoc.

view.php

 
<?php
include_once "polacz.php";
session_start();
if (!isset($_SESSION['id']))
{
	header("Location: login.php");
	die();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Logowanie</title>
<style>
table {
    border-collapse: collapse;
    width: 100%;
}

th, td {
    text-align: left;
    padding: 8px;
}

tr:nth-child(even){background-color: #f2f2f2}

th {
    background-color: #af504c;
    color: white;
}
</style>
</head>

<body>

<?php

echo "Witaj ".$_SESSION['login'];

echo '<br><a href="2logout.php">WYLOGUJ SIĘ</a><br>';

$con = polacz();


if (isset($_GET['sort']))
{
	$sort = (int)$_GET['sort'];
	if ($sort == 1)
	{
		$sort = 2;
	}
	else
	{
		$sort = 1;
	}
}
else
{
	$sort = 1;
}
$dbsort =array(1=>'ASC',2=>'DESC');
$stid = oci_parse($con,"SELECT id, login FROM uzytkownik ORDER BY login ".$dbsort[$sort]);
oci_execute($stid);

echo "<table>";
echo "<tr><th>ID</th><th><a href=\"view.php?sort=$sort\">Login<th>Usun</th><th>Edytuj</th>

</th></tr>";
while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false)
{
	
	$id = $row['ID'];
	$login = $row['LOGIN'];
	
	
	echo "<tr><td>$id</a></td><td>$login</td>
	<td><a href=\"delete.php?id=$id\">Usun</a>
	<td><a href=\"edit.php?id=$id\">Edytuj</a></tr>";
}
echo "</table>";
echo '<br><a href="add.php">Dodaj uzytkownika</a><br>';

?>

</body>

</html>

edit.php

 
<?php
session_start();

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Edytowanie uzytkownikow</title>
</head>

<body>


<form action="edit_h.php" method="post">
	Login:<br>
	<input type="text" name="login">
	<br>
	<input type="submit" value="Edytuj">
</form>

</body>

</html>


edit_h.php

 
<?php

include_once "polacz.php";




$id = $_GET['id'];
$login = $_POST['login'];

$con = polacz();



$stid = oci_parse($con, "UPDATE uzytkownik SET LOGIN = :login WHERE id = :id");

oci_bind_by_name($stid,':login',$login); 
oci_bind_by_name($stid,':id',$id);   
 

  
  

if (oci_execute($stid))
{
	header("Location: view.php");
}
else
{
	echo "blad";
}
0

Formularz jest wyświetlany z edit.php?id=14, a post z formularza jest obsługiwany przez edit_h.php (bez parametru id). $_GET['id'] w edit_h.php nie będzie miał przy takim układzie wartości.

0

Zmiana <form action="edit_h.php?id=$id\" method="post"> powinna pomoc? Teraz wyskakuje mi blad:
Warning: oci_execute(): ORA-01722: niepoprawna liczba in E:\xamppehh\htdocs\edit_h.php on line 24

0

Id prawdopodobnie wpada jako string zamiast jako int. Możesz tutaj sobie kod przedebugowac w IDE. Jeżeli piszesz w notatniku lub podobnym, jest magiczna kombinacja
var_dump($id); die();
którą możesz dokleić do edit_h.php za linijka $id = $_GET['id']; i przetestować co ci wyświetli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1