• 0
Sign in to follow this  
bob_canastra

DÚVIDA COM CRUD PHP

Question

Caros amigos preciso de ajuda, vou mostrar dois códigos abaixo, um tem um campo em um form que tipo hidden e o outro não, porém ambos os códigos para crud são os mesmos. O problema é que no que não é hidden ele não aceita o seguinte código:

<code>

include 'conexao.php';

$codcliente=$_POST['codcliente'];

(...demais campos do form)

$operacao=$_POST['operacao']; //campo select com 4 opcoes

if($operacao==atualizar') {//atualizando

$codcliente=$_POST['codcliente];

$update='UPDATE `clinica_sangao`.`clientes` SET `nomecliente` =' . $nome .

' endereco=' . $endereco . ' telefone=' . $telefone .

' email=' . $email .' convenio=' . $convenio .

' senhaweb=' . $senhaweb .'WHERE `clientes`.`cod_cliente` ='.$codcliente;

$resultado=mysql_query( $update);

$linhas = mysql_affected_rows($resultado); //descobre o nº de linhas afetadas pela operação "mysql_query ($sql)" AQUI ELE DÁ ERRO!!

if($linhas==1)//VERIFICANDO SE A BUSCA PELO PRODUTO FOI EFETUADA,ATRAVÉS DO NUM DE LINHAS DO RESULTADO

{ echo "Produto excluído com sucesso!"; }

else

{ echo "Produto não encontrado!"; }

//header ("Location: cad_clientes.php");

}elseif($operacao=='atualizar' )demais ações: deletar,inserir e excluir

</code>

Para a inserção tá ok. O problema é que ele dá esse erro tanto para update quanto para delete: sendo que o banco contem o codigo recuperado pelo $_POST['codcliente']

<code>

( ! ) Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Clinica_sangao\cad_clientes2.php on line 45

Call Stack

# Time Memory Function Location

1 0.0055 387080 {main}( ) ..\cad_clientes2.php:0

2 0.0421 394888 mysql_affected_rows ( ) ..\cad_clientes2.php:45

Produto não encontrado!

</code>

NESSE CODIGO ABAIXO O CAMPO "operaçao" é um <input type="hidden" name="operacao" value="incluir"(excluir,inserir)>, porém em 3 forms diferentes

<code><form method="POST" action="administra.php">

"form1"

<input type="hidden" name="operacao" value="excluir">

demais input's

</form>

<form method="POST" action="administra.php">

"form2"

<input type="hidden" name="operacao" value="inserir">

demais input's

</form>

<form method="POST" action="administra.php">

"form3"

<input type="hidden" name="operacao" value="atualizar">

demais input's

</form>

ALGUÉM ME AJUDE~!!!

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

são 4 forms diferente cada um para um situação porem a ação fica tudo no mesmo arquivo ?

e ele não ta fazendo as outras ações so a do insert?

olha existe diversa formas de fazer isso sem ser no campo hidden

Primeiro - vou te pedir para por os codigos dentro do camp ode código para fica com uma visibilidade melhor.

Segundo - separe bem o texto e explique de uma forma direta e objetiva ( assim fica bem facil coomprender o que quer passar, as vezes rodeios de mais acaba atrapalahndo o nosso coomprendimento rsrs )

Terceiro - Bem, para você fazer isso é bem simples não requer nenhum campo hidden para complicar sua vida... como você já deve ter notado o seu botão é uma input sendo assim ele manda, valores também sendo assim coloque o name do input e o value

o value é o que aparece no botão

então se for para deleta deixei mostra

Deletar

Alterar

Cadastrar

os botoa ficaria assim

<input type="submit" name="botao" value="Cadastrar" />
<input type="submit" name="botao" value="Alterar" />
<input type="submit" name="botao" value="Deletar" />
depois no php você coloque condição
if($_POST['botao'] == 'Alterar') {

// Codigo Update

}

if($_POST['botao'] == 'Cadastrar') {

// Codigo Insert

}

if($_POST['botao'] == 'Deletar') {

// Codigo Delete

}

espero que tenha entendido

Share this post


Link to post
Share on other sites
  • 0

Amigo, acho q não fui claro, então. É o seguinte:

1- tenho um form com um campo "codcliente" e um menu dropdown com as opçoes " inserir,excluir,cadastrar e buscar" nessa ordem.

2- os demais campos ( nome, email,...) estão todos validados;

3- o campo "codcliente" so vai ser utilizado pra busca,atualização e exclusão,a inserção não o utiliza( id auto_increment);

4- para evitar colocar 4 ou 5 botoes no form (estética) e para que o usuario faça tudo na mesma pagina, achei melhor um só botão enviar, e o menu dropdown de operações. Sendo assim tenho:

<form name="formcliente" method="post" action="cad_clientes2.php" onsubmit="valida(this)" >    
        
        Código do cliente (buscas,atualizações e exclusão):<br>
        <input type="text" id="codcliente" name= "codcliente" maxlength="6" size=6 onfocus="validacod_cli(this)">
                
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <select id="operacao" name="operacao" >
             <option value="inserir" >Inserir</option>
             <option value="buscar" >Buscar</option>
             <option value="excluir" >Excluir</option>
             <option value="atualizar" >Atualizar</option>
             </select>

*Nome: <br>
            <input type="text" name= "nome" size=90 ><br>

[demais inputs]

                        <input type ="submit" value="Enviar" >
            <input type="button"  value="Pesquisar" onclick="buscacliente.php">
            <input type ="reset" value="Limpar Campos">
            <input type="button" value="inicio"  OnClick="parent.location.href='hub.php'">

</form>
Sendo assim, a opção que você me mandou de colocar 3 buttons com mesmo "name" e "value" diferente, cai na mesma. O problema tá na função mysql_affected_rows() que requer um parametro do tipo resource QUE DEVERIA SER RETORNADO pela expressão:
$resultado=mysql_query( $update);
que por ser um UPDATE, retorna um boolean, portanto não é aceito na função mysql_affected_rows() Mas quando usei a mesma expressão abaixo no input hidden que mencionei, ele aceitou. PORQUÊ???????? ( ! ) Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Clinica_sangao\cad_clientes2.php on line 45
if($operacao=='atualizar') {//atualizando
        $codcliente=$_POST['codcliente'];
        
        $resultado=mysql_query( $update);
                 
    $linhas = mysql_affected_rows($resultado); //descobre o nº de linhas afetadas pela operação "mysql_query ($sql)"
        if($linhas==1)//VERIFICANDO SE A BUSCA PELO PRODUTO FOI EFETUADA,ATRAVÉS DO NUM DE LINHAS DO RESULTADO
        { echo "Produto excluído com sucesso!"; }
        else
        { echo "Produto não encontrado!"; }
Espero ter sido mais claro agora. Por favor me ajude, pois ficar batendo cabeça com um CRUD simples desse ta me deixando P*** da vida... PS:Aproveitando o gancho, gostaria de saber como faço pra quando o usuario inserir o codigo do cliente, selecionar buscar(menu dropdown) e "enviar", mostrar os dados do cliente nos referidos campos do form ex: nomecliente->
$nome=$_POST['nome'];(lá do arquivo .php)

<input type="text" name="nome" value="<?php $nome ?>">

Agradeço a paciência e a atenção.

Edited by bob_canastra

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this