Ir para conteúdo

POWERED BY:

Arquivado

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

william_droops

[Resolvido] if dentro do switch pagina não retorna

Recommended Posts

Pessoal tenho uma pagina de cadastros(formularios), que joga para outra onde os dados são inseridos ou deletados do banco, e quero que volte com uma msg se foi inserido ou deletado ou se ja existe este dado no banco de dados mas não esta retornado para a pagina de cadastros, alguém pode me ajudar ?

 

Eu posso usar um if dentro de um switch ?

Porque não esta retornado ?

 

 

 

<?php

 

$acao = $_GET["acao"];

switch ($acao) {

case "cad": // CADASTRANDO NOV ITEM

 

// verifica se já existe cadastrado

$verifcad = $db->get_row("SELECT * FROM tabela WHERE nome='".$_POST["nome"]."'");

 

if($verifcad)

{

echo('<script>location.href="cad.php?aviso=existe";</script>');

}

 

else

{

$sql = "INSERT INTO tabela (nome) VALUES ('".$_POST["nome"]."')";

 

echo $sql;

 

$db->query($sql);

echo('<script>location.href="cad.php?aviso=ok";</script>');

}

 

break; // FIM CADASTRO novo item

 

case "del": // DELETA

$db->query("DELETE FROM cad WHERE id=".$_GET["id"]."");

 

 

echo('<script>location.href="cad.php?aviso=del";</script>');

break; // FIM DELETA }

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste você mesmo:

<?php
$a=1;
$b=1;
switch($a){
case 1: if($b==$a){echo 'São iguais';}else{echo 'São diferentes';}
break;
}
?>

Enquanto ao seu script, verifique se o seu POST está recebendo valor de um

print_r($_POST);
- Mais de qualquer forma dei uma estabilizada em seu código, teste ai ;)

 

<?php

$acao = $_GET["acao"];
switch ($acao) {
case "cad":

// verifica se já existe cadastrado
$verifcad = $db->get_row("SELECT * FROM tabela WHERE nome='{$_POST['nome']}'");

if($verifcad){
echo('<script>location.href="cad.php?aviso=existe";</script>');
}else{
$sql = "INSERT INTO tabela (nome) VALUES ('{$_POST['nome']}')";
$db->query($sql);
echo ("<script>Window.location=('cad.php?aviso=ok');</script>");
}
break;
case "del": // DELETA
$db->query("DELETE FROM cad WHERE id='{$_GET['id']}'");
echo("<script>window.location=('cad.php?aviso=del');</script>");
break;
}
?>
Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção.

 

Dentro do comando

print_r($_POST);

ele retornou assim

Array ( [marca] => BMW [acao] => cad )

 

Mas a pagina ainda esta não retorna a pagina incial.

Compartilhar este post


Link para o post
Compartilhar em outros sites

lembrando que o post é marca mesmo, e não nome, ja alterei aqui.

 

$verifcad = $db->get_row("SELECT * FROM tabela WHERE nome='{$_POST['marca']}'");

 

 

Tanto

window.location - echo ("<script>Window.location=('cad.php?aviso=ok');</script>");

Como

location.href - echo('<script>location.href="cad.php?aviso=existe";</script>');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como asim amigo, não retorna quando o cadastro já existe ou o que ? pois a sua verificação de cadastro para ver se já existe ou não está meio que incorreta... responda minha pergunta, em que parte ocorre o erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A pagina cad_exe (essa que postei) não retorna para a de cadastro (onde esta o form), no caso de existir ou não, o item no bando de dados, a pagina não retorna, caso eu deletar um item, ai sim retorna.

 

O meu problema é com o retorno da pagina, mas eu acredito que o problema esteja no if, pois mesmo a pagina não retornando para a principal, eu vejo no bando de dados e não foi cadastrado nada.

 

Desculpe se não estou conseguindo me expressar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem problema vamos com calma e tudo se resolve.. teste isso:

 

SÓ MAIS UMA COISA, TU NÃO ESTÁ ESQUECENDO DE COLOCAR O NOME DE TUA TABELA AI NÃO ? ESTOU VENDO AQUI E ESTÁ ASIM: SELECT * FROM ' TABELA' ...

 

Veja se te retorna algum erro ao executar as ações.

<?php
$acao = $_GET['acao'];
$marca=$_POST['marca'];
$id=$_GET['id'];
switch ($acao) {
case "cad":
$verifcad = $db->get_row("SELECT count(*) FROM tabela WHERE nome='$marca'");
$result=mysql_result('nome',0,$verificard);
if($result!=0){
echo("<script>window.location=('cad.php?aviso=existe')</script>");
}else{
$sql = "INSERT INTO tabela (nome) VALUES ('$marca')";
$db->query($sql);
echo ("<script>Window.location=('cad.php?aviso=ok')</script>");
}
break;
case "del": // DELETA
$db->query("DELETE FROM cad WHERE id='$id'");
echo("<script>window.location=('cad.php?aviso=del')</script>");
break;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu coloquei o nome da tabela, e fiz algumas alterações, e ficou resolvido em parte.

 

Alteração feita:

$acao = $_GET["acao"];

para

$acao = $_POST["acao"];

 

O que resolveu:

 

Quando ja existe no banco algo cadastrado com o mesmo nome, já esta retornado para a pagina de cadastro e exibindo a msg que ja existe esse dado cadastrado, perfeito!.

 

O que não resolveu:

 

Quando não existe nada cadastrado, ele cadastra no banco de dados, perfeito!, mas a pagina não retorna para a pagina de cadastro, fica ali parado.

 

Obrigado pela paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troquei este

echo("<script>window.location=('cad.php?aviso=okl');</script>");

por esse

 

echo ('<script>location.href="cad.php?aviso=ok";</script>');

Agora retorna para a pagina de cadastro tanto inserindo, ou retornando como ja existe, e parou de responder quando

deleto, vou fazer o seu teste.

 

Obrigado por ajudar .

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se inseriu teria que voltar sim, caso contrário verifique em sua página cad.php se tem alguma função verificando a variável " AVISO " que faz parte de sua URL... de qualquer maneira substitua:

 

echo("<script>window.location=('cad.php?aviso=ok')</script>");

Compartilhar este post


Link para o post
Compartilhar em outros sites

$acao = $_POST["acao"];

//print_r($_POST);

switch ($acao) {

case "cad":

 

// verifica se já existe cadastrado

$verifcad = $db->get_row("SELECT * FROM cad_marca WHERE nome='{$_POST['marca']}'");

 

if($verifcad){

echo('<script>location.href="cad.php?aviso=existe";</script>');

}else{

$sql = "INSERT INTO cad_marca (nome) VALUES ('{$_POST['marca']}')";

$db->query($sql);

echo('<script>location.href="cad.php?aviso=ok";</script>');

}

break;

case "del": // DELETA

$db->query("DELETE FROM cad_marca WHERE id='{$_POST['id']}'");

 

echo("<script>window.location=('cad.php?aviso=del')</script>");

break;

}

 

/*$acao = $_GET["acao"];

switch ($acao) {

case "cad": // CADASTRANDO NOVA MARCA

 

// verifica se já existe cadastrado

$verifcad = $db->get_row("SELECT * FROM cad_marca WHERE nome='".$_POST["marca"]."'");

 

if($verifcad)

 

echo('<script>window.location("cad.php?aviso=existe")</script>');

 

 

else

{

$sql = "INSERT INTO cad_marca (nome) VALUES ('".$_POST["marca"]."')";

 

echo $sql;

 

$db->query($sql);

echo('<script>location.href="cad.php?aviso=ok";</script>');

}

 

break; // FIM CADASTRO NOVA MARCA

 

case "del": // DELETA MARCA

$db->query("DELETE FROM cad_marca WHERE id=".$_GET["id"]."");

 

 

echo('<script>location.href="cad.php?aviso=del";</script>');

break; // FIM DELETA MARCA

}

 

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido

 

O problema estava no método de envio = POST, quando eu cadastro eu informo o valor dentro de um Hidden, mas quando deleto eu passo o valor em um link ex : pagina.php?acao=del, e ai náo funcionava, coloquei o metodo como = GET, e tudo se resolveu.

 

Obrigado.

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.