Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anilton Veiga

[Resolvido] UPDATE e DELETE via php

Recommended Posts

Pessoal, estou fazendo um sisteminha para eu alterar e remover um categoria do meu banco de dados mysql, a partir de outra pagina ele manda via GET a ID dessa categoria para na pagina categoria_edita.php eu selecionar todos os dados dessa categoria e ai poder fazer a alteração ou a exclusão da categoria, mas tem um porém, eu não consigo me apropriar fazer as duas ações no mesmo arquivo!

 

Abaixo esta o meu código e espero que me ajudem!

 

Obrigado pela atenção!

 

 

 

<?php
include "configuracao/conexao.php";
include "restrito.php";

$id=$_GET['id'];

$sql = mysql_query("SELECT id_categoria,nome_categoria,`data_categoria`
				from categorias
				WHERE id_categoria = '$id'")
	or die(mysql_error());

if (@mysql_num_rows($sql) == 0){
echo '<div class="alert_atencao">Nenhuma categoria encontrada!</div>';
}




while($res=mysql_fetch_array($sql)){
$id = $res[0];
$nome = $res[1];
$data = $res[2];

}
?>

<div id="coluna_central">
 <h2 class="titulos_secao">Editar categoria <?php echo "'".($nome)."'"; ?></h2>
<!-- code !-->

<!-- code !-->

 <div>
<form name= method="post" action="administrador.php?pagina=categoria_edita&id=<?php echo $id ?>&acao=editar">
<h3>Preencha os campos abaixo!</h3>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="entrar">

 <tr>
   <td width="7%"><label>Nome da categoria:</label></td>
   <td width="93%"><input type="text" size="30" name="categoria" id="nome_categoria" value="<?php echo $nome;?>"/></td>
 </tr>
 <tr>
   <td> </td>
   <td><input name="input" value="Alterar" type="submit" class="button" />
     <input name="input2" value="Excluir" type="submit" class="button" />       </td>
 </tr>
 <tr>
   <td><a href="#">Voltar</a></td>
   <td> </td>
 </tr>
 </table>
 </form>
 </div>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- nao use '@' isso esconde os erros, nao os conserta

2- qual o problema ocorrido? nao aparece alguma coisa etc?

 

Ok, irei tirar o '@'

 

Então, queria ajuda para criar algum script ai dentro para alterar e excluir por esse mesmo form, pois todas as formas que tentei não obtive êxito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

já experimentou usar um select option dentro deste formulário ?

<select name='acao'>
<option value='editar'>Editar</option>
<option value='excluir'>Excluir</option>
</select>

depois é só pegar com o $_POST["acao"] em administrador.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

já experimentou usar um select option dentro deste formulário ?

<select name='acao'>
<option value='editar'>Editar</option>
<option value='excluir'>Excluir</option>
</select>

depois é só pegar com o $_POST["acao"] em administrador.php

 

Assim eu não tentei, estava tentando fazer assim, mas não consigo prosseguir com o código!

 

olha o exemplo de como ta o meu script

 

<?php
$id = $_GET['id'];
// Verificando ação a ser executada
$acao = $_GET['acao'];

// ACAO DE EDITAR CLIENTE
if ($acao == "editar") {

// Recupera as novas informações do cliente
$nome_categoria = $_POST['categoria'];

// Email
if(empty($nome_categoria)){
       $error[0] = "Preencha com um email válido";
       echo "$error[0]";
}


// Caso não haja erros
if (sizeof($error) == 0) {
	// Altera as informações do banco de dados
	$sql = mysql_query("UPDATE categorias SET nome_categoria = '".$nome_categoria."'
						WHERE id = '".$id."'");

	// Caso altere os dados com sucesso
	if ($sql) {
		echo "<script language='javascript'>alert('Cliente editado com sucesso'); window.location.href = 'cliente.php?id=".$id."'</script>";
	// Caso haja algum problema na alteração
	} else {
		echo "<script language='javascript'>alert('Não foi possível editar o cliente')</script>";
	}
}
}

// ACAO DE REMOVER CLIENTE
if ($acao == "remover") {

// Removendo cliente
$sql = mysql_query("DELETE FROM categoria WHERE id = '".$id."'");

// Caso temova o cliente com sucesso
if ($sql) {
	echo "<script language='javascript'>alert('Cliente removido com sucesso'); window.location.href = 'index.php'</script>";
// Caso haja algum problema na remoção
} else {
	echo "<script language='javascript'>alert('Não foi possível remover o cliente')</script>";
}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, recebi sua mensagem, pra falar a verdade tem muitoo tempo que não uso as funções nativas para iteração com banco de dados, tente com PDO que poderei te ajudar melhor. http://www.acordapraweb.com/pdo-bancos-de-dados-no-php5/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá não testei esse código porém acho que ele está correto, não tenho as tabelas para testar.

<?php
include "configuracao/conexao.php";
include "restrito.php";

$id=$_GET['id'];

$sql = mysql_query("SELECT id_categoria,nome_categoria,`data_categoria`
                                       from categorias
                                       WHERE id_categoria = '$id'")
               or die(mysql_error());

if (@mysql_num_rows($sql) == 0){
       echo '<div class="alert_atencao">Nenhuma categoria encontrada!</div>';
       }




while($res=mysql_fetch_array($sql)){
       $id = $res[0];
       $nome = $res[1];
       $data = $res[2];

}
?>

<div id="coluna_central">
 <h2 class="titulos_secao">Editar categoria <?php echo "'".($nome)."'"; ?></h2>
<!-- code !-->

<!-- code !-->

 <div>
<form name= method="post" action="administrador.php?pagina=categoria_edita&id=<?php echo $id ?>">
<h3>Preencha os campos abaixo!</h3>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="entrar">

 <tr>
   <td width="7%"><label>Nome da categoria:</label></td>
   <td width="93%"><input type="text" size="30" name="categoria" id="nome_categoria" value="<?php echo $nome;?>"/></td>
 </tr>
 <tr>
   <td>
   <select name='acao'>
       <option value=''>Escola a ação</option>
       <option value='editar'>Editar</option>
       <option value='remover'>Remover</option>
   </select>
   </td>
 </tr>
 <tr>  
   <td>
     <input name="enviar" value="Enviar" type="submit" class="button" /></td>
 </tr>
 <tr>
   <td><a href="#">Voltar</a></td>
   <td> </td>
 </tr>
 </table>
 </form>
 </div>
</div>
<?php
$id = $_GET['id'];
// Verificando ação a ser executada
$acao = $_POST['acao'];

// ACAO DE EDITAR CLIENTE
if ($acao == "editar") {

       // Recupera as novas informações do cliente
       $nome_categoria = $_POST['categoria'];

       // Email
       if(empty($nome_categoria)){
       echo "<div class=\"alert_atencao\">digite um nome para categoria</div>";
       }


       // Caso não haja erros
       if (sizeof($error) == 0) {
               // Altera as informações do banco de dados
               $sql = mysql_query("UPDATE categorias SET nome_categoria = '".$nome_categoria."' WHERE id = '".$id."'");

               // Caso altere os dados com sucesso
               if ($sql) {
                       echo "<script language='javascript'>alert('Cliente editado com sucesso'); window.location.href = 'cliente.php?id=".$id."'</script>";
               // Caso haja algum problema na alteração
               } else {
                       echo "<script language='javascript'>alert('Não foi possível editar o cliente')</script>";
               }
       }
}

// ACAO DE REMOVER CLIENTE
if ($acao == "remover") {

       // Removendo cliente
       $sql = mysql_query("DELETE FROM categoria WHERE id = '".$id."'");

       // Caso temova o cliente com sucesso
       if ($sql) {
               echo "<script language='javascript'>alert('Cliente removido com sucesso'); window.location.href = 'index.php'</script>";
       // Caso haja algum problema na remoção
       } else {
               echo "<script language='javascript'>alert('Não foi possível remover o cliente')</script>";
       }

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá não testei esse código porém acho que ele está correto, não tenho as tabelas para testar.

<?php
include "configuracao/conexao.php";
include "restrito.php";

$id=$_GET['id'];

$sql = mysql_query("SELECT id_categoria,nome_categoria,`data_categoria`
                                       from categorias
                                       WHERE id_categoria = '$id'")
               or die(mysql_error());

if (@mysql_num_rows($sql) == 0){
       echo '<div class="alert_atencao">Nenhuma categoria encontrada!</div>';
       }




while($res=mysql_fetch_array($sql)){
       $id = $res[0];
       $nome = $res[1];
       $data = $res[2];

}
?>

<div id="coluna_central">
 <h2 class="titulos_secao">Editar categoria <?php echo "'".($nome)."'"; ?></h2>
<!-- code !-->
<?php$id = $_GET['id'];// Verificando ação a ser executada$acao = $_POST['acao'];
// ACAO DE EDITAR CLIENTEif ($acao == "editar") {                // Recupera as novas informações do cliente        $nome_categoria = $_POST['categoria'];
       // Email        if(empty($nome_categoria)){        echo "<div class=\"alert_atencao\">digite um nome para categoria</div>";        }
               // Caso não haja erros        if (sizeof($error) == 0) {                // Altera as informações do banco de dados                $sql = mysql_query("UPDATE categorias SET nome_categoria = '".$nome_categoria."' WHERE id = '".$id."'");                        // Caso altere os dados com sucesso                if ($sql) {                        echo "<script language='javascript'>alert('Cliente editado com sucesso'); window.location.href = 'cliente.php?id=".$id."'</script>";                // Caso haja algum problema na alteração                } else {                        echo "<script language='javascript'>alert('Não foi possível editar o cliente')</script>";                }        }}
// ACAO DE REMOVER CLIENTEif ($acao == "remover") {                // Removendo cliente        $sql = mysql_query("DELETE FROM categoria WHERE id = '".$id."'");                // Caso temova o cliente com sucesso        if ($sql) {                echo "<script language='javascript'>alert('Cliente removido com sucesso'); window.location.href = 'index.php'</script>";        // Caso haja algum problema na remoção        } else {                echo "<script language='javascript'>alert('Não foi possível remover o cliente')</script>";        }        }?>

<!-- code !-->

 

<div>

<form name= method="post" action="administrador.php?pagina=categoria_edita&id=<?php echo $id ?>">

<h3>Preencha os campos abaixo!</h3>

<table width="100%" border="0" cellspacing="0" cellpadding="0" id="entrar">

 

<tr>

<td width="7%"><label>Nome da categoria:</label></td>

<td width="93%"><input type="text" size="30" name="categoria" id="nome_categoria" value="<?php echo $nome;?>"/></td>

</tr>

<tr>

<td>

<select name='acao'>

<option value=''>Escola a ação</option>

<option value='editar'>Editar</option>

<option value='remover'>Remover</option>

</select>

</td>

</tr>

<tr>

<td>

<input name="enviar" value="Enviar" type="submit" class="button" /></td>

</tr>

<tr>

<td><a href="#">Voltar</a></td>

<td> </td>

</tr>

</table>

</form>

</div>

</div>

 

Quer que eu te envie as tabelas, pois é, tem alguma coisa incorreta, mas não sei o que fazer para corrigir :/ o problema é que eu tenho dois botões no form e não sei como determinar cada ação!

 

Se souberem de outra forma de eu fazer a mesma coisa, alterar e excluir, me mostrem como porque eu vou me confundir na ação insert e delete

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim quero que me mande as tabelas porque assim eu posso testar e mandar para você ok se puder postar tudo aqui ficará mais fácil :natalsmile:

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro mostra o PHP nesse seu codigo?

 

sua acao vem como GET ou POST ?

 

seria algo assim:

//form.php

<a href="cadastrar.php?id=<?php echo $id_categoria;?>&acao=editar">Editar</a>

//cadastrar.php
error_reporting(E_ALL);

$id = isset($_GET['id'])? (int)$_GET['id'] : null; //ideal o id vim por hiden no $_POST....  

if($_GET['acao'] == 'editar'){

$nome_categoria = mysql_escape_string($_POST['categoria']);

   if(is_null($id)){
    echo 'Id não e um iteiro'; exit;}

$sql = mysql_query(
 "UPDATE categorias SET nome_categoria = '$nome_categoria' WHERE id = $id");

}

a ideia e essa!! ve ai que bicho da.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anilton, tente usar o PDO, isso vai deixar seu codigo muito mais simples e limpo.

 

Ronny eu poderia tentar, mas nunca mechi com PDO. Você tem um código mais ou menos parecido que faça o que eu quero pra me passar, assim eu poderia até tentar, por questões de segurança PDO é eficiente?

 

Anilton, tente usar o PDO, isso vai deixar seu codigo muito mais simples e limpo.

 

Ronny eu poderia tentar, mas nunca mechi com PDO. Você tem um código mais ou menos parecido que faça o que eu quero pra me passar, assim eu poderia até tentar, por questões de segurança PDO é eficiente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ronny eu poderia tentar, mas nunca mechi com PDO. Você tem um código mais ou menos parecido que faça o que eu quero pra me passar, assim eu poderia até tentar, por questões de segurança PDO é eficiente?

 

 

 

Ronny eu poderia tentar, mas nunca mechi com PDO. Você tem um código mais ou menos parecido que faça o que eu quero pra me passar, assim eu poderia até tentar, por questões de segurança PDO é eficiente?

 

Tente adaptar como desse tutorial

http://www.acordapraweb.com/pdo-bancos-de-dados-no-php5/

 

Sobre segurança, o PDO já trata todo comando dentro do query("SELECT...") e o prepare("SELECT...") tem muito mais opções de segurança.

O PDO é uma vasta biblioteca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

sua acao vem como GET ou POST ?

 

é mesmo eu tinha esquecido isso :natalsad: ou manda com Get ou com post com os dois ao mesmo tempo não dá certo :natalsad:

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro mostra o PHP nesse seu codigo?

 

sua acao vem como GET ou POST ?

 

seria algo assim:

//form.php

<a href="cadastrar.php?id=<?php echo $id_categoria;?>&acao=editar">Editar</a>

//cadastrar.php
error_reporting(E_ALL);

$id = isset($_GET['id'])? (int)$_GET['id'] : null; //ideal o id vim por hiden no $_POST....  

if($_GET['acao'] == 'editar'){

$nome_categoria = mysql_escape_string($_POST['categoria']);

   if(is_null($id)){
    echo 'Id não e um iteiro'; exit;}

$sql = mysql_query(
 "UPDATE categorias SET nome_categoria = '$nome_categoria' WHERE id = $id");

}

a ideia e essa!! ve ai que bicho da.

 

o erro é NOTICE: Undefined index: acao in C:\Program Files\EasyPHP-5.3.6.0\www\www.curitiba.online.com.br\categoria_edita.php on line 26

e quando eu executo a ação, pelo botão ela simplestemente não executa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é mesmo eu tinha esquecido isso :natalsad: ou manda com Get ou com post com os dois ao mesmo tempo não dá certo :natalsad:

 

 

Pode sim mandar com GET ou POST sem problemas, basta receber com REQUEST.

Eu uso e nunca tive problemas. Faça o teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é mesmo eu tinha esquecido isso :natalsad: ou manda com Get ou com post com os dois ao mesmo tempo não dá certo :natalsad:

 

o get é só para determinar a ação! Por ser no mesmo arquivo!

 

sim quero que me mande as tabelas porque assim eu posso testar e mandar para você ok se puder postar tudo aqui ficará mais fácil :natalsmile:

 

Ai esta a tabela

 

-- phpMyAdmin SQL Dump
-- version 3.3.9.2
-- http://www.phpmyadmin.net
--
-- Servidor: 127.0.0.1
-- Tempo de Geração: Dez 10, 2011 as 12:20 AM
-- Versão do Servidor: 5.5.10
-- Versão do PHP: 5.3.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Banco de Dados: `guia`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `categorias`
--

CREATE TABLE IF NOT EXISTS `categorias` (
 `id_categoria` int(5) NOT NULL AUTO_INCREMENT,
 `nome_categoria` varchar(50) DEFAULT NULL,
 `data_categoria` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id_categoria`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=111 ;

--
-- Extraindo dados da tabela `categorias`
--

INSERT INTO `categorias` (`id_categoria`, `nome_categoria`, `data_categoria`) VALUES
(109, 'Categoria', '2011-12-08 03:18:45'),
(110, 'Empresas', '2011-12-08 05:01:45');

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamo la manim..por partes ^^

 

oque se recupera no button e o "NAME" não o "VALUE".. note que seu value ta value="editar",( button submit)

 

SEndo q o certo seria (name="Editar")..

 

num tem erro so que você num ta passando as variaveis certas pra sua açaõ..

//form//
<form action="cadastro.php" method="post">
<label>Categoria</label>
<input  name="categoria" type="text" value="<?php echo $nomeCategoria?>" />

<input type="hidden" name="id" value="<?php echo $id;?>" id="idCategoria" />

<input type="submit" value="Editar" name="editar" />
</form>

//categoria.php//

error_reporting(E_ALL);

var_dump($_POST); ///veja oque ta acontecendo..... 

if(isset($_POST['editar']){

$nome_categoria = mysql_escape_string($_POST['categoria']);
$id = $_POST['id'];

$sql = mysql_query(
 "UPDATE categorias SET nome_categoria = '$nome_categoria' WHERE id = $id");

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.