DELETE/UPDATE - PHP, MYSQL

dani_popova134

Registered
Здравейте.
Не знам вече къде бъркам. Искам като натисна на Id и данните автоматично да се прехвърлят в update.php с възможност за редактиране и преместване отново обратно в таблицата. Грешката, която ми дава е:
Notice: Undefined index: Id in C:\wamp\www\Home2\update.php on line 18.

/update.php/

<!DOCTYPE HTML>
<html>
<head>
<title> Simple Site </title>
</head>
<body>
<h1><p align="center">SIMPLE WEBSITE</h1><br>
<h2><p align="center">UPDATE USER</h2>

<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

$query= mysqli_query ($con, "SELECT * FROM user1 WHERE Id= '".$_GET['Id']."'");
$row= mysqli_fetch_array($query);
?>

<form name="update_form" method="POST" action="updateprocess.php">
<p align="center"><label for="Id">Id</label>
<input name="Id" <?php echo $row['Id']; ?> type="hidden" value="<?php echo $row['Id']; ?>"<br>
<p align="center"><label for="First_name">First name</label>
<input name="First_name" placeholder="First_name" type="text" value="<?php echo $row['First_name']; ?>">
<p align="center"><label for="Surname">Surname</label>
<input name="Surname" placeholder="Surname" type="text" value="<?php echo $row['Surname']; ?>">
<p align="center"><button type="submit" value="submit">Change</button>
</form>
<div>
<ul>
<h3><li> <a href="index.php"> Home </a> </li></h3><br>
<h3><li> <a href="listUsers.php"> Users </a> </li></h3><br>
<h3><li> <a href="addUser.php"> Add User </a> </li></h3><br>
</ul>
</div>
</body>
</html>

/updateprocess.php/

<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

mysqli_query ($con, "UPDATE user1 SET First_name= '".$_POST['First_name']."' WHERE Id= '".$_POST['Id']."'");
header("Location: listUsers.php");
mysql_close($dbconnection);
?>

/listUsers.php/

<!DOCTYPE html>
<html>
<head>
<title> Simple Site </title>
</head>
<body>

<h1><p align="center"> SIMPLE WEBSITE</h1>
<h4><p align="center">USERS</h4>
<p align="center"> You can update the table with one click in ID number and delete users with Delete Form</p>

<p align="center"><button type="button" onClick="window.location.href='deleteform.php'">Delete Form</button><br>
<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

$result= mysqli_query ($con, "SELECT * FROM user1") or die (mysql_error());

echo '<table align="center" border=1>';
echo '<th>Id</th><th>First_name</th><th>Surname</th>';

while($row= mysqli_fetch_array($result)) {
echo '<tr><td>';
echo "<a href= 'update.php?id=".$row['Id']."'>".$row['Id']."</a>";
echo '</td><td>';
echo $row['First_name'];
echo '</td><td>';
echo $row['Surname'];
echo '</td></tr>';
}
echo '</table>';
?>

<ul>
<h3><li> <a href="index.php"> Home </a> </li></h3><br>
<h3><li> <a href="listUsers.php"> Users </a> </li></h3><br>
<h3><li> <a href="addUser.php"> Add User </a> </li></h3><br>
</ul>
</body>
</html>
Това е основната страница, в която се лисва таблица от DB.

Моля помогнете :idea:
 
dani_popova134 каза:
<!DOCTYPE HTML>
<html>
<head>
<title> Simple Site </title>
</head>
<body>
<h1><p align="center">SIMPLE WEBSITE</h1><br>
<h2><p align="center">UPDATE USER</h2>

<?php
$host ="Хоста ти";
$user = "root"';
$password = "";
$db = "cmssimple";
mysql_connect($host,$user,$password);
mysql_select_db($database) or die(mysql_error());
$id = (int)$_GET['id'];

$query= mysqli_query ("SELECT * FROM user1 WHERE Id= '$id'");
$row= mysqli_fetch_array($query);
?>

<form name="update_form" method="POST" action="updateprocess.php">
<p align="center"><label for="Id">Id</label>
<input name="Id" <?php echo $row['Id']; ?> type="hidden" value="<?php echo $row['Id']; ?>"<br>
<p align="center"><label for="First_name">First name</label>
<input name="First_name" placeholder="First_name" type="text" value="<?php echo $row['First_name']; ?>">
<p align="center"><label for="Surname">Surname</label>
<input name="Surname" placeholder="Surname" type="text" value="<?php echo $row['Surname']; ?>">
<p align="center"><button type="submit" value="submit">Change</button>
</form>
<div>
<ul>
<h3><li> <a href="index.php"> Home </a> </li></h3><br>
<h3><li> <a href="listUsers.php"> Users </a> </li></h3><br>
<h3><li> <a href="addUser.php"> Add User </a> </li></h3><br>
</ul>
</div>
</body>
</html>

/updateprocess.php/

<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

mysqli_query ($con, "UPDATE user1 SET First_name= '".$_POST['First_name']."' WHERE Id= '".$_POST['Id']."'");
header("Location: listUsers.php");
mysql_close($dbconnection);
?>

/listUsers.php/

<!DOCTYPE html>
<html>
<head>
<title> Simple Site </title>
</head>
<body>

<h1><p align="center"> SIMPLE WEBSITE</h1>
<h4><p align="center">USERS</h4>
<p align="center"> You can update the table with one click in ID number and delete users with Delete Form</p>

<p align="center"><button type="button" onClick="window.location.href='deleteform.php'">Delete Form</button><br>
<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

$result= mysqli_query ($con, "SELECT * FROM user1") or die (mysql_error());

echo '<table align="center" border=1>';
echo '<th>Id</th><th>First_name</th><th>Surname</th>';

while($row= mysqli_fetch_array($result)) {
echo '<tr><td>';
echo "<a href= 'update.php?id=".$row['Id']."'>".$row['Id']."</a>";
echo '</td><td>';
echo $row['First_name'];
echo '</td><td>';
echo $row['Surname'];
echo '</td></tr>';
}
echo '</table>';
?>

<ul>
<h3><li> <a href="index.php"> Home </a> </li></h3><br>
<h3><li> <a href="listUsers.php"> Users </a> </li></h3><br>
<h3><li> <a href="addUser.php"> Add User </a> </li></h3><br>
</ul>
</body>
</html>
Това е основната страница, в която се лисва таблица от DB.

Моля помогнете :idea:
Така?
 
Да, поправила съм го въф файла всичко е с I, но пак дава че не я идентифицира на този ред:

$Id = (int)$_GET['Id'];
 
dani_popova134 каза:
Да, поправила съм го въф файла всичко е с I, но пак дава че не я идентифицира на този ред:

$Id = (int)$_GET['Id'];
Махни този ред и пробвай пак.
 
От къде го взимаш това id? От url-a ли от къде? Този нотис го дава когато, имаш недефинирана стойност в масив. В твоя случай $_GET['Id'].
 
PHP:
<?php
$host ="localhost";
$user = "root";
$password = "";
$db = "cmssimple";
mysql_connect($host,$user,$password);
mysql_select_db($db) or die(mysql_error());
$id = (int)$_GET['id'];
$query= mysql_query("SELECT * FROM user1 WHERE Id= '$id'");
$row = mysql_fetch_array($query);
?>
index.php fixed :lol:
 
teroristd каза:
От къде го взимаш това id? От url-a ли от къде? Този нотис го дава когато, имаш недефинирана стойност в масив. В твоя случай $_GET['Id'].

Един вид трябва да имаш в урл-а нещо такова sait.com/update.php?Id=1 за да може php да вземе стойноста на Id и да направиш сравнението в заявката към базата.
 
От URL, да.
После му добавих това:

$Id = (int)$_GET['Id'];
$query= mysqli_query ($con, "SELECT * FROM user1 WHERE Id= '$Id'");

и пак дава грешка на този ред: $Id = (int)$_GET['Id']; , че има неидентифициран индекс Id
 
Другия скрипт е този: updateprocess.php, в който се извършва процеса

<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

mysqli_query ($con, "UPDATE user1 SET First_name= '".$_POST['First_name']."' WHERE Id= '".$_POST['Id']."'");
header("Location: listUsers.php");
mysql_close($dbconnection);
?>
 
и другия свързан с update.php е този, в който се намира таблицата от DB и избираме Id-то от линка, за да се редактира listUsers.php

<!DOCTYPE html>
<html>
<head>
<title> Simple Site </title>
</head>
<body>

<h1><p align="center"> SIMPLE WEBSITE</h1><hr>
<h4><p align="center">USERS</h4>
<p align="center"> You can update the table with one click in ID number and delete users with Delete Form</p>

<p align="center"><button type="button" onClick="window.location.href='deleteform.php'">Delete Form</button><br>
<?php
$con=mysqli_connect("localhost","root","","cmssimple");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db($con,"cmssimple");

$result= mysqli_query ($con, "SELECT * FROM user1") or die (mysql_error());

echo '<table align="center" border=1>';
echo '<th>Id</th><th>First_name</th><th>Surname</th>';

while($row= mysqli_fetch_array($result)) {
echo '<tr><td>';
echo "<a href= 'update.php?id=".$row['Id']."'>".$row['Id']."</a>";
echo '</td><td>';
echo $row['First_name'];
echo '</td><td>';
echo $row['Surname'];
echo '</td></tr>';
}
echo '</table>';
?>

<ul>
<h3><li> <a href="index.php"> Home </a> </li></h3><br>
<h3><li> <a href="listUsers.php"> Users </a> </li></h3><br>
<h3><li> <a href="addUser.php"> Add User </a> </li></h3><br>
</ul>
</body>
</html>
 
Не виждам смисъл да са разделени в два файла. Може и от там да идва грешката. Събери ги в един файл. Направи в update.php нещо от типа на

Код:
if(isset($_POST['submit'])){

mysqli_query ($con, "UPDATE user1 SET First_name= '".$_POST['First_name']."' WHERE Id= '".$_POST['Id']."'"); 

}

също да не забравиш да смениш екшъна на формата на update.php
 
Аз в първата страница съм дал фикса за index-a обаче няма кой да чете. Иначе за какво ти е този скрипт, който не става за нищо ...
 
Silverlight каза:
Аз в първата страница съм дал фикса за index-a обаче няма кой да чете. Иначе за какво ти е този скрипт, който не става за нищо ...

Не става по този начин който си дал, защото след натискане на бутона се губи стойността на ид-то и за това и дава грешката.

Всъщност решението е съвсем просто. Можеш да оставиш всичко както ти беше първоначално, или да го направиш както е показал Silverlight, няма значение но трябва да направиш екшъна на формата така:

Код:
action="updateprocess.php?id=<?php echo $row['id']; ?>"

Това е естествено ако разделяш скрипта в два файла, което е безмислено за мене но ти си решаваш. Ако сложиш всичко в update.php екшъна става така:
Код:
action="update.php?id=<?php echo $row['id']; ?>"

Всичко е тествано и работи.
 

Back
Горе