Jump to content


Photo

Update Tabelas Relacionadas + Checkbox


  • Faça o login para participar
4 replies to this topic

#1 Lau

Lau

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino

Posted 22/02/2010, 21:55

Buenas pessoal, só parei de encomodar porque fui viajar hehehehe, mas estamos de volta. Bom, a dúvida agora é a seguinte, com a ajuda do pessoal do fórum consegui chegar ao seguinte código abaixo, que claro, pode ser melhorado, mas isso vou fazendo aos poucos. A missão agora é a seguinte, essa página é a que exibe os detalhes da notícia para fazer as midificações. O titulo e texto estão atualizando perfeitos, meu problema está sendo em atualizar as imagens. Caso esteja selecionada a opção do checkbox para trocar a imagem, a função tem que ler o ID da checkbox que corresponde ao ID da imagem e atualizar a mesma. O ID está passando corretamente pela checkbox na variavel $valores. Minha dúvida é em questão do comando UPDATE, como eu tenho que montá-lo para que faça o update na tabela gvnews (que está ok) e o update na gvnews_img.

Ainda não coloquei o script para verificar a imagem, apaga-la do BD e fazer o upload da nova imagem, está apenas a função para pegar as váriaveis e fazer o update no BD. Segue abaixo o código:




<?php
require_once("verifica.php");
include ("include/conecta.php");
include("fckeditor/fckeditor2.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>

<body>

<form action="" method="post" enctype="multipart/form-data" name="form">
<?php
$id = (int)$_GET["id"];
$titulo = isset($_POST['titulo']) ? $_POST['titulo'] : '';
$texto = isset($_POST["texto"]) ? $_POST["texto"] : '';

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

$chk = $_POST["status"];
if($chk!="") {
foreach($chk as $valores) {

echo "Status checkbox - $valores <br>";

}
}
$dados = "UPDATE gvnews SET titulo='$titulo',texto='$texto' WHERE id='$id'";
$resultado = mysql_query($dados) or die ("Não foi possível realizar a consulta ao banco de dados");

$msg = "Notícia editada com sucesso!";
}

$dados1 = mysql_query("SELECT * FROM gvnews WHERE id=$id");
while($linha=mysql_fetch_array($dados1)) {

$id = $linha["id"];
$titulo = $linha["titulo"];
$texto = $linha["texto"];
?>
<?php
if(isset($msg)){
echo $msg;
}
?>
<table>
<tr>
<td>Titulo:</td>
<td>
<input name="titulo" type="text" value="<?php echo $titulo ?>" size="75">
</td>
</tr>
<tr>
<td>Texto:</td>
<td>
<?php
$oFCKeditor = new FCKeditor('texto');
$oFCKeditor->BasePath = 'fckeditor/';
$oFCKeditor->Value = "$texto" ;
$oFCKeditor->Create();
?> </td>
</tr>
<td>Imagem:</td>
<td rowspan="2">
<table width='500' border='0' cellspacing='0' cellpadding='0'>
<tr>
<?php
$dados2 = mysql_query("SELECT * FROM gvnews_img WHERE id_news=$id ORDER BY id");
while($linha2=mysql_fetch_array($dados2)) {
$id_img = $linha2["id"];
$imagem = $linha2["imagem"];
echo "<td><img src='thumb.php?imagem=../$imagem' width='100' height='100' alt='$id_img'>";
echo "<br>";
echo "<input name='status[]' type='checkbox' value='$id_img'/>Trocar imagem</td>";
}
}
?>
</tr>
</table>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<tr>
<td>Imagem 1:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td>Imagem 2:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td>Imagem 3:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Editar">
<input type="reset" name="reset" value="Limpar Formulario">
</td>
</tr>
</table>
</form>
</body>
</html>


#2 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 22/02/2010, 22:24

UPDATE gvnews, gvnews_img
SET gvnews.campo = 'atualiza', gvnews_img.campo = 'atualiza'
WHERE gvnews.id = gvnews_img.id_gvnews

Dê uma olhada no manual... http://dev.mysql.com.../en/update.html

(ok2)
  • Lau likes this
att,
Muller Dias
ex-administrador Fórum WMO

#3 Lau

Lau

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino

Posted 24/02/2010, 00:03

BAH< BAGUNCEI TODA MINHA RESPOSTA ANTERIOR, MAS VAI A PERGUNTA ABAIXO:








Buenas, coloquei a parte que faltava para upload, só que surgiu um probleminha como sempre, e que não consegui achar onde está o erro. Se selecionou um campo do "Trocar imagem" ele faz tudo certo, só que se seleciono dois ou tres campos, para trocar as 3 imagens ao mesmo tempo, ele até faz o upload da imagem para o servidor, só que não registra o caminho da imagem no BD. Um caminho ele sempre registra, mas os outros dois não. Postando código abaixo (tá bagunçado mas prometo que vou estudar bastante para resumir ele hehehe). ABRASS



<?php
require_once("verifica.php");
include ("include/conecta.php");
include("fckeditor/fckeditor2.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>

<body>

<form action="" method="post" enctype="multipart/form-data" name="form">
<?php
$id = (int)$_GET["id"];
$titulo = isset($_POST['titulo']) ? $_POST['titulo'] : '';
$texto = isset($_POST["texto"]) ? $_POST["texto"] : '';

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

$dados = "UPDATE gvnews SET titulo='$titulo',texto='$texto' WHERE id='$id'";
$resultado = mysql_query($dados) or die ("Não foi possível realizar a consulta ao banco de dados");

$chk = $_POST["status"];
if($chk!="") {
foreach($chk as $valores) {

echo "Status checkbox - $valores <br>";

}

$consulta = mysql_query("SELECT * FROM gvnews_img WHERE id = $valores");
while($resultado = mysql_fetch_object($consulta))
{
unlink("../$resultado->imagem");
}

$destino = '../imag/';
$destinobd = 'imag/';
$fotos = $_FILES['fotos'];
$conta = 0;

for($i = 0; $i < sizeof($fotos['name']); $i++){

$nome = $fotos['name'][$i];
$tamanho = $fotos['size'][$i];
$tipo = $fotos['type'][$i];
$tmpname = $fotos['tmp_name'][$i];

if($tamanho > 0 && strlen($nome) > 1){
if(preg_match("/\.(gif|GIF|png|jpg|jpeg)$/i", $nome, $tipo)){

$imagem_nome = md5(uniqid(time())) . "." . end(explode('.', $nome));
$caminho = $destino . $imagem_nome;
$caminhobd = $destinobd . $imagem_nome;

if(move_uploaded_file($tmpname, $caminho)){

$dados = "UPDATE gvnews_img SET imagem='$caminhobd' WHERE id='$valores'";
$resultado = mysql_query($dados) or die ("Não foi possível realizar a consulta ao banco de dados");

}
}
}

}
}
$msg = "Notícia editada com sucesso!";
}

$dados1 = mysql_query("SELECT * FROM gvnews WHERE id=$id");
while($linha=mysql_fetch_array($dados1)) {

$id = $linha["id"];
$titulo = $linha["titulo"];
$texto = $linha["texto"];
?>
<?php
if(isset($msg)){
echo $msg;
}
?>
<table>
<tr>
<td>Titulo:</td>
<td>
<input name="titulo" type="text" value="<?php echo $titulo ?>" size="75">
</td>
</tr>
<tr>
<td>Texto:</td>
<td>
<?php
$oFCKeditor = new FCKeditor('texto');
$oFCKeditor->BasePath = 'fckeditor/';
$oFCKeditor->Value = "$texto" ;
$oFCKeditor->Create();
?> </td>
</tr>
<td>Imagem:</td>
<td rowspan="2">
<table width='500' border='0' cellspacing='0' cellpadding='0'>
<tr>
<?php
$dados2 = mysql_query("SELECT * FROM gvnews_img WHERE id_news=$id ORDER BY id");
while($linha2=mysql_fetch_array($dados2)) {
$id_img = $linha2["id"];
$imagem = $linha2["imagem"];
echo "<td><img src='thumb.php?imagem=../$imagem' width='100' height='100' alt='$id_img'>";
echo "<br>";
echo "<input name='status[]' type='checkbox' value='$id_img'/>Trocar imagem</td>";
}
}
?>
</tr>
</table>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<tr>
<td>Imagem 1:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td>Imagem 2:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td>Imagem 3:</td>
<td>
<input name="fotos[]" type="file" size="63">
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Editar">
<input type="reset" name="reset" value="Limpar Formulario">
</td>
</tr>
</table>
</form>
</body>
</html>

Edição feita por: Lau, 24/02/2010, 00:04.


#4 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 24/02/2010, 00:08

Eu olhei só isso:

$dados = "UPDATE gvnews,gvnews_img SET gvnews.titulo='$titulo',gvnews.texto='$texto',gvnews_img.imagem='$
imagem' WHERE gvnews.id='$id' AND gvnews_img.id='$valores'";

Está errado, você pegou as duas tabelas mas não ligou elas na cláusula WHERE.
att,
Muller Dias
ex-administrador Fórum WMO

#5 Lau

Lau

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino

Posted 24/02/2010, 00:18

Eu olhei só isso:

$dados = "UPDATE gvnews,gvnews_img SET gvnews.titulo='$titulo',gvnews.texto='$texto',gvnews_img.imagem='$
imagem' WHERE gvnews.id='$id' AND gvnews_img.id='$valores'";

Está errado, você pegou as duas tabelas mas não ligou elas na cláusula WHERE.




Ae sem.Ponto' , essa parte pode ver no código que postei por ultimo agora que eu alterei, pra dar a escolha de se estiver selecionado algum campo do alterar imagem ae ele faz o update da tabela gvnews_img, se não estiver nada selecionado ele só atualiza os campos do titulo e texto da noticia.

A sua resposta me ajudou muito mesmo, principalmente a aprender como se faz esse tipo de update em multiplas tabelas. Mas meu problema agora está sendo caso eu selecione mais de um doas checkbox, ele faz o upload da imagem, mas só faz o update do caminho no BD de um dos registros, e não do numero total de checkbox selecionados.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq