Jump to content
joaonunofz

INSERT PHP

Recommended Posts

joaonunofz

Boa tarde,criei um forum que mostra todos os posts do utilizador com sessao iniciada.

cada post tem um "editar" correspondente ao id da publicação o qual posso editar esse mesmo post num form fazendo um update (em que se vier um id pelo url, mostra o botao "editar")... .

Caso eu queira inserir um novo post, basta clicar num botao para criar um novo post, o qual me mela para o mesmo form,onde verifico se nao vier nu«enhum id pela url, os campos desse form ficam vazios, a espera de serem preenchidos para eu fazer um insert......porem QUANDO TENTO FAZER O INSERT, NENHUM NOVO POST É INSERIDO.....SOMENTE O UPDATE FUNCIONA......ALGUEM PODE VER SE O MEU SCRIPT DE INSERT TEM ALGUMA FALHA POR FAVOR?

<?php

include 'base_dados/ligacao_bd.php';

session_start();

//se nao houver nenhuma sessão...

if(!isset($_SESSION['nome_utilizador']))

{

include 'cabecalho.php';

echo '<div class="erro">

nao tem autorização para ver esta pagina. <br> <br>

<a href="index.php">retroceder</a>

</div>';

include 'rodape.php';

exit;//muito importante este EXIT; pois ja nao deixa executar nada mais abaixo

}

//-----------------------------------------------------------------------

include 'cabecalho.php';

//apresentar o utilizador logado

$mostrar_utilizador = $ligacao->query("SELECT * FROM utilizadores WHERE nome_utilizador = '".$_SESSION['nome_utilizador']."' ");

$mostrar = mysqli_fetch_array($mostrar_utilizador);

echo '<div class="dados_utilizador">

<img src="imagens/avatares/'.$mostrar['avatar'].'" title="foto de perfil de '.$_SESSION['nome_utilizador'].'" ><span>'.$_SESSION['nome_utilizador'].'</span> | <a href="logout.php">sair</a>

</div> <hr>';

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Editor publicação</title>

</head>

<body>

<?php

$id_publicacao = @$_GET['id_publicacao'];

$titulo = "";

$mensagem = "";

if(isset($_GET['id_publicacao']))//se vier um id pela url...

{

//vai buscar os dados da publicação á base dados correspondente a esse id_publicacao e mostra-os!

$buscar_dados = $ligacao->query("SELECT * FROM publicacoes WHERE id_publicacao = ".$id_publicacao." ");

$mostrar = mysqli_fetch_array($buscar_dados);

$titulo = $mostrar['titulo'];

$mensagem = $mostrar['mensagem'];

}

elseif (isset($_POST['botao_editar']))

{

$alterar = $ligacao->query("UPDATE publicacoes SET titulo = '".$_REQUEST['text_titulo']."' , mensagem = '".$_REQUEST['text_mensagem']."' WHERE id_publicacao = '".$id_publicacao."' ")or die(mysql_error());

}

elseif (isset($_POST['botao_gravar']))

{

$titulo = $_POST['text_titulo'];

$mensagem = $_POST['text_mensagem'];

$inserir = $ligacao->query("INSERT INTO publicacoes(id_utilizador,titulo,mensagem,data) VALUES('".$_SESSION['id_utilizador']."','$titulo','$mensagem','NOW()' ) WHERE id_utilizador = '".$_SESSION['id_utilizador']."' ")or die(mysql_error());

}

?>

<!--formulario para criar/editar publicação-->

<form class="form_publicacao" method="post" action="?">

<h3>publicação</h3> <hr /> <br />

<label for="title">Titulo</label> <br />

<input type="text" id="title" name="text_titulo" size="50" value="<?php echo $titulo ?>" /> <br /> <br />

<label for="msg">Mensagem</label> <br />

<textarea id="msg" name="text_mensagem" rows="10" cols="97"><?php echo $mensagem ?></textarea> <br /> <br />

<input type="hidden" name="id_utilizador" value="<?php echo $_SESSION['id_utilizador'] ?>" />

<input type="hidden" name="id_publicacao" value="<?php echo $id_publicacao ?>" />

<?php

if(isset($_GET['id_publicacao']))

{

?>

<input type="submit" name="botao_editar" value="editar" />

<?php

}

else

{

?>

<input type="submit" name="botao_gravar" value="gravar" />

<?php

}

?>

</form>

</body>

</html>

BASE DADOS (PUBLICACOES):

ID_PUBLICACAO

ID_UTILIZADOR

TITULO

MENSAGEM

DATA

Share this post


Link to post
Share on other sites
ruicosta.web
$inserir = $ligacao->query("INSERT INTO publicacoes(id_utilizador,titulo,mensagem,data) VALUES('".$_SESSION['id_utilizador']."','$titulo','$mensagem','NOW()' ) WHERE id_utilizador = '".$_SESSION['id_utilizador']."' ")or die(mysql_error());

}

Dicas:

1.

Se queres CRIAR um NOVO registo, fazes um insert. Não utilizas o WHERE.

Se queres ALTERAR um registo JÁ EXISTENTE utilizas o UPDATE e utilizas o WHERE para afetar registos específicos

SQL: http://www.w3schools.com/sql/default.asp

2.

Seja o teu site para brincar ou a sério, FILTRAS SEMPRE TODAS AS INFORMAÇÕES QUE NÃO CONTROLAS:

$titulo = $_POST['text_titulo'];
$mensagem = $_POST['text_mensagem'];

SUBSTITUI POR

$titulo = filter_var($_POST['text_titulo'], FILTER_SANITIZE_STRING);
$mensagem =  filter_var($_POST['text_mensagem'], FILTER_SANITIZE_STRING);

Aplica o filter_var a todas as variáveis que venham do exterior: $_GET, $_POST, $_SESSION, etc...

URL: http://www.w3schools.com/php/func_filter_var.asp

3. Utiliza Mysql PDO

URL: http://www.w3schools.com/php/php_mysql_connect.asp

Mais alguma questão, coloca aí!

Share this post


Link to post
Share on other sites
HappyHippyHippo

Aplica o filter_var a todas as variáveis que venham do exterior: $_GET, $_POST, $_SESSION, etc...

isso é a melhor solução caso o servidor tiver uma versão do PHP apropriada/recente o que não acontece em muitos sistemas que seguem a filosofia do só instalo o que é reconhecido/testado como estável, como o CentOS


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
ruicosta.web

isso é a melhor solução caso o servidor tiver uma versão do PHP apropriada/recente o que não acontece em muitos sistemas que seguem a filosofia do só instalo o que é reconhecido/testado como estável, como o CentOS

Tens razão. Versão PHP superior ou igual a 5.20

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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.


×
×
  • 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.