Jump to content

[Resolvido] Apagar/alterar BD com PHP


Recommended Posts

Posted (edited)

Boas,

Tenho que fazer um projecto de manipulação de base de dasos mysql com php, consigo listar os dados, apagar, alterar, procurar um em especifico etc...

Agora foi-me pedido que na parte de listar tenha 2 imagens em cada linha da base de dados. uma para alterar e outra para apagar, e que ao carregar num deles ou apareça um formulário para alterar os dados dessa linha ou apague os dados dessa linha. Mas estou com dificuldades em perceber como é que ao carregar na imagem ela vai saber em que linha esta e a que id se refere para depois ser possível alterar/apagar os dados dessa linha.

Alguem me consegue dar umas ideias?

Ainda não tenho codigo feito com isto, apenas tenho o ficheiro com o listar ainda com as imagens do listar e do apagar...

Obrigado 😄

Edited by ivan919
Posted (edited)

basta meteres uma hiperligacao nas imagens, uma para a pagina de apagar, outra para a pagina de alterar.

<a href="apagar.php?id=8"><img src="img/apagar.png"></a>
<a href="editar.php?id=8"><img src="img/editar.png"></a>
Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

basta meteres uma hiperligacao nas imagens, uma para a pagina de apagar, outra para a pagina de alterar.

<a href="apagar.php?id=8"><img src="img/apagar.png"></a>
<a href="editar.php?id=8"><img src="img/editar.png"></a>

não é bem essa a minha duvida...

eu tenho este codigo:

while($row = mysql_fetch_array($result))
 {
 echo "<tr>";
 echo "<td>" . $row['personID'] . "</td>";
 echo "<td>" . $row['firstName'] . "</td>";
 echo "<td>" . $row['lastName'] . "</td>";
 echo "<td>" . $row['age'] . "</td>";
 echo"<td>" . $row['personID'] . "</td>";
 echo "<td> <input type=image src=\"editar.gif\" > </td>";
 echo "<td> <input type=image src=\"x.gif\" > </td>";
 echo "</tr>";
}

Mostra todos os dados e ainda acrescenta as imagens a cada linha.... mas preciso que as imagens fiquem com o ID da sua respectiva linha, para que quando carregue vá para a pagina do apagar ou alterar e que assim ja não seja necessário pedir o ID.

Não sei se me expliquei bem

Posted

não é bem essa a minha duvida...

A tua duvida e' criar inputs? mas porque que queres inputs? se quiseres podes guardar o id em algum campo desse input(por exemplo no "value")

<a href="apagar.php?id=<?php $row['personID'];?>"><img src="editar.gif"></a>
<a href="editar.php?id=<?php $row['personID'];?>">"><img src="x.gif"></a>

tens so que meter dentro dos td's

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted (edited)

A tua duvida e' criar inputs? mas porque que queres inputs? se quiseres podes guardar o id em algum campo desse input(por exemplo no "value")

<a href="apagar.php?id=<?php $row['personID'];?>"><img src="editar.gif"></a>
<a href="editar.php?id=<?php $row['personID'];?>">"><img src="x.gif"></a>

tens so que meter dentro dos td's

Eu tenho essa tabela com todos os dados que estão na tabela persons da base de dados e tenho que por ao lado da tabela dois botoes(em cada linha da tabela), um para eliminar e outro para editar a correspondente linha.

Antes tinha em paginas separadas o eliminar e o editar onde pedia o ID do person e só depois do pedido é que eliminava, e no caso do editar tinha um form com o ID,firstname, lastname e age, e ai eliminava...

Agora preciso de ter os botoes e quando carrego no eliminar, elimina a linha correspondente, e no editar vai para um formulário, mas ai ja nao pede o ID, basta alterar o firstname, lastname e age e faz as alteraçoes a linha da tabela.

fiz o que disseste:

<?php
$result = mysql_query("select * from persons");
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['personID'] . "</td>";
echo "<td>" . $row['firstName'] . "</td>";
echo "<td>" . $row['lastName'] . "</td>";
echo "<td>" . $row['age'] . "</td>";
echo "<td> <a href="apagar2.php?id=<?php $row['personID'];?>><img src="editar.gif"></a></td>";

echo "<td> <input type=image src=\"x.gif\" value='personID'> </td>";
echo "</tr>";
}
echo"</table>";
?>

mas da erro, tentei ver o que era mudei algumas coisas mas continuava o mesmo erro... voltei a por como disseste

erro: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp\htdocs\www\listar.php on line 31

Edited by ivan919
Posted

mas da erro, tentei ver o que era mudei algumas coisas mas continuava o mesmo erro... voltei a por como disseste

erro: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp\htdocs\www\listar.php on line 31

e' normal, eu como nao gosto de imprimir HTML com o echo, meti o codigo para chamar o php

echo '<td> <a href="apagar2.php?id='.$row['personID'].'"><img src="editar.gif"></a></td>';
  • Vote 1

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

e' normal, eu como nao gosto de imprimir HTML com o echo, meti o codigo para chamar o php

echo '<td> <a href="apagar2.php?id='.$row['personID'].'"><img src="editar.gif"></a></td>';

Obrigado já consegui resolver este problema, agora vou alterar ,o que já tinha feito do apagar e alterar, e adaptar a esta pagina, se tiver mais alguma duvida pergunto aqui 😄

Muito obrigado pela ajuda

Posted

Ola de novo,

Estou com um problema com o alterar, problema que já tive antes com outros trabalhos e que nunca consegui resolver sempre tive que o contornar...

Então é suposto eu carregar na imagem do alterar da linha a que corresponde ele ir para um form com os campos firstname, lastname e o age, ao introduzir os novos dados ele altere na base de dados...

Problema: quando carrego na imagem ele assume o id e vai para a seguinte pagina com o form... mas quando submeto e vai para a outra pagina( a de alterar na bd) ele não envia o id para a 3ª pagina...

Codigo Listar:

<html>
<body>
<?php
include "init.php";
include "benvindo.php";
echo"<br>";
?>
<center>
<fieldset style="width:437px">
<?php
$result = mysql_query("select * from persons");
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>";
while($row = mysql_fetch_array($result))
 {
 echo "<tr>";
 echo "<td>" . $row['personID'] . "</td>";
 echo "<td>" . $row['firstName'] . "</td>";
 echo "<td>" . $row['lastName'] . "</td>";
 echo "<td>" . $row['age'] . "</td>";
 echo '<td><a href="alterar.php?id=' . $row['personID'] . '"><img src="editar.gif"></a></td>';
 echo '<td> <a href="apagar2.php?id=' . $row['personID'] . '"><img src="x.gif"></a></td>';
 echo "</tr>";
 }
echo"</table>";
?>
</fieldset>
</center>
</body>
</html>

codigo alterar:

<html>
<body>
<?php
include "init.php";
include "benvindo.php";
?>
<br>
<center>
<fieldset style ="width:437px">
<form action="alterar2.php" method="post">
Firstname: <input type="text" name="firstname"><br>
Lastname: <input type="text" name="lastname"><br>
Age : <input type="text" name="age"><br>
<input type="submit" value="Alterar">
</form>
</fieldset>
</center>
</body>
</html>

Codigo alterar2 (alterar a base de dados):

<html>
<body>
<?php
include "init.php";
include "benvindo.php";
mysql_query("update persons set firstName='$_POST[firstname]', lastName='$_POST[lastname]', age='$_POST[age]'  where personID='$_POST[id]'");
?>
<script type="text/javascript">
alert("Alterado com sucesso!");
</script>
</form>
</body>
</html>
Posted (edited)

na pagina onde tens o formulário para alterar os dados tens de colocar um input com o id para que o possas passar para o alterar2

ps: coloca code=php dentro das tags

Edited by MASNathan
Posted

na pagina onde tens o formulário para alterar os dados tens de colocar um input com o id para que o possas passar para o alterar2

ps: coloca code=php dentro das tags

tentei algo assim:

ID: <input type="text" name="id" value='$_GET[id]'><br>

mas está errado pois no input aparece mesmo escrito " '$_GET[id]' " e não o ID

a parte do code=php não percebi consegues dar algum exemplo?

obrigado

Posted (edited)

mas está errado pois no input aparece mesmo escrito " '$_GET[id]' " e não o ID

tens de por

<?php echo $_GET['id']; ?>

a parte do code=php não percebi consegues dar algum exemplo?

ex:

echo 'boas';

echo 'boas';

quando colocas código php aqui no post usa

 em vez de [code]
Edited by MASNathan
Posted
<html>
<body>
<?php
include "init.php";
include "benvindo.php";
?>
<br>
<center>
<fieldset style ="width:437px">
<form action="alterar2.php" method="post">
ID: <input type="text" name="id" value=<?php echo $_GET['id']; ?>><br>
Firstname: <input type="text" name="firstname"><br>
Lastname: <input type="text" name="lastname"><br>
Age : <input type="text" name="age"><br>
<input type="submit" value="Alterar">
</form>
</fieldset>
</center>
</body>
</html>

Resolveu o que eu queria muito obrigado 🙂

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.