Ir para conteúdo

POWERED BY:

Arquivado

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

jeffersonpd

Verificar se tem foto no registro ou se o Campo está NULL.

Recommended Posts

Cara, tb costumo usar inserção no banco no mesmo esquema que vc, sem identificar coluna, já que a tabela é pequena.

 

tenta algo como: Select * from suatabela where (not(foto)='') //negado campo foto com valor vazio...

 

Caso não dê certo, eu atribuiria um valor zero ao campo foto, e depois negaria o zero, já que vc está tendo problema com valor 0.

 

Opa dessa forma deu certo caso a foto não seja inserida o campo fica NULL, agora na parte de update como seria?

 

 

$sql = "UPDATE agenda SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia'";

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alan, vc não pode dar update na foto se o valor do campo for VAZIO, vai mandar NULL para o seu banco na certa, pois o valor em branco vai substituir o valor que vc tinha anteriormente.

 

Crie uma condição, por exemplo:

 

if(foto!=vazio){ $sql = "UPDATE agenda SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia'";}

else

{$sql = "UPDATE agenda SET titulo='$titulo', texto='$texto', categoria='$categoria', agencia='$agencia'";}

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar como está .

 

 

 
 
<?php
 
include("conect.php");
 
$variables=(strtolower($_SERVER['REQUEST_METHOD'])== 'GET') ? $_GET : $_POST;
foreach ($variables as $k=> $v)
$$k=$v;
 
 
if($acao== "insertbd"){                                                         // Essa aspa simples é o local da foto                                    
$sql = "INSERT INTO agenda VALUES ('', '$titulo', '$texto', (not(foto)=''), '$categoria', '$agencia' )";
 
$sql2 = mysql_query($sql);
 
$id_recuperado = mysql_insert_id();
 
$dir = "statica/agenda/$id_recuperado";
 
$pasta = @mkdir("$dir", 0777);  @chmod("$dir", 0777);
 
$uploaddir = "$dir/";
 
if(is_dir("$dir")){
 
       if ($foto != "none") {
       if (@copy($_FILES['foto']['tmp_name'], $uploaddir . $_FILES['foto']['name'] )){
       $foto1 = $_FILES['foto']['name'];
 
        $var1 = mysql_query("update agenda set foto='$foto1' where id='$id_recuperado'");
 
        } else {
        echo " A foto não pode ser enviada, Mesmo assim cadastramos seu contato!</div> </div>";
        }
        }
        } else {
        echo "A pasta agenda/$id_recuperado não existe!";
        }
 
       $mgs = "Cadastrado com Sucesso! Aguarde nosso contato.";
       echo "$mgs";
       }
  
//  UPDATE NO BD
 
if($acao== "updatebd"){
 
if($nova_foto == "S"){
$dir = "statica/agenda/$id";
    $uploaddir = "$dir/";
    if(is_dir("$dir")){
if($foto != "none") {
if (@copy($_FILES['foto']['tmp_name'], $uploaddir . $_FILES['foto']['name'])) {
$foto1 = $_FILES['foto']['name'];
 
} else {
echo "A foto não pode ser enviada, Mesmo assim ateramos sua agenda!!</div> </div>";
}
}
} else {
echo "A pasta agenda/$id não existe!";
}
 
@unlink("$dir/$foto_antiga");
} else {
$foto1 = "$foto_antiga";
}
 
   $sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'";
 
   $sql2 = mysql_query($sql);
   $mgs = "Agenda Alterada com Sucesso!";
   echo "$mgs";
   } 
   // FIM UPDATE NO BD
   ?>
 
<form action="cadastro_agenda.php" method="post" enctype="multipart/form-data" name="formulario">
<input name="acao" type="hidden" value="<?=(empty($id))?"insertbd":"updatebd";?>">
 
Titulo<p>
<input name="titulo" type="text"  class="campos" value="" size="55" />
 
Texto<p>
<textarea name="texto"  cols="55" rows="20"  class="tinymce" id="input" onblur="this.idName='input';" onfocus="this.idName='inputon';"></textarea>
 
Foto<p>
      <?
      if(empty($id)){
 echo "<img width='90' name='foto1' src='statica/sem_foto.jpg' border='0'>";
 } else {
  if(!empty($dados[foto])){
echo "<img width='90' name='foto1' src='statica/agenda/$id/$dados[foto]' border='0'>";
} else {
echo "<font color='#FF0000'>Erro na Foto</font>";
}
}
?>
    
<? if(empty($id)){?>
<input class="inputon" onchange="document.images.foto1.src=this.value" name='foto' type='file' size="16"  />
<? } else {?>
Trocar  Foto?:
    <input name="nova_foto" type="radio" value="N" checked="checked" onclick="javascript:DesabilitarFoto()" />
    Não
    <input name="nova_foto" type="radio" value="S" onclick="javascript: HabilitarFoto();" >
    Sim<br />
    <input class="inputon" onchange="document.images.foto1.src=this.value" name='foto' type='file' size="16" disabled="disabled"  />
<? }?>
 
Categoria<p>
<input name="categoria" type="text"  class="campos" value="" size="55" />
 
 
Agencia<p>
<input name="agencia" type="text"  class="campos" value="" size="55" />
 
<p>
<input type="submit" id="input" name='btgravar' value="Cadastrar" />
 
</form>
 
<?
  // fim da acao FORM DE CADASTRO 
?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele só não envia o valor da foto? o restante atualiza?



se enviar o restante e não enviar a foto, vc pode fazer um teste:

 

if (@copy($_FILES['foto']['tmp_name'], $uploaddir . $_FILES['foto']['name'])) {

$foto1 = $_FILES['foto']['name'];

 

coloque $foto1 = "teste 123"; // assim vc verifica se o problema está no arquivo enviado, se o texto for,

reduzimos o problema ao arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom da forma que está lá ele envia normal tudo até a foto, o problema é que mesmo que eu não coloque nada na input tipo só altere o titulo o valor NULL que estava anteriormente na coluna foto some e fica vazio.

 

e ai é que está o problema eu queria que continuasse NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Alan, não atualiza o campo foto se o valor da $_files['foto'][name] for nulo, se foto está vazio no banco,

não tem o pq vc atualiza-lo com valor nulo novamente... Por isso vc precisa criar uma condição em que um UPDATE

tenha o parametro foto, e outro não, ou seja, TEM VALOR FOTO, então vc atualiza tudo, NÃO TEM VALOR FOTO,

atualiza os outros campos, menos foto...



Algo como;

 

if($_files['foto']=""){

 

 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', categoria='$categoria', agencia='$agencia' WHERE id='$id'";

 

} else {

 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu criei essa condição funcionou perfeito eu alterei só os outros dados deu certo.

 

agora quando fui testar o sistema total

 

cadastro sem foto - ok

alteração sem foto - ok

 

cadastro com foto - ok

alteração com foto - erro ao alterar a foto, a foto não e alterada. mais os outros dados são.

 

eu fiz como vc falou criei a condição e ficou assim:

 

 

 
 
<?php
 
include("conect.php");
 
$variables=(strtolower($_SERVER['REQUEST_METHOD'])== 'GET') ? $_GET : $_POST;
foreach ($variables as $k=> $v)
$$k=$v;
 
 
if($acao== "insertbd"){                                                         // Essa aspa simples é o local da foto                                    
$sql = "INSERT INTO agenda VALUES ('', '$titulo', '$texto', '', '$categoria', '$agencia' )";
 
$sql2 = mysql_query($sql);
 
$id_recuperado = mysql_insert_id();
 
$dir = "statica/agenda/$id_recuperado";
 
$pasta = @mkdir("$dir", 0777);  @chmod("$dir", 0777);
 
$uploaddir = "$dir/";
 
if(is_dir("$dir")){
 
       if ($foto != "none") {
       if (@copy($_FILES['foto']['tmp_name'], $uploaddir . $_FILES['foto']['name'] )){
       $foto1 = $_FILES['foto']['name'];
 
        $var1 = mysql_query("update agenda set foto='$foto1' where id='$id_recuperado'");
 
        } else {
        echo " A foto não pode ser enviada, Mesmo assim cadastramos seu contato!</div> </div>";
        }
        }
        } else {
        echo "A pasta agenda/$id_recuperado não existe!";
        }
 
       $mgs = "Cadastrado com Sucesso! Aguarde nosso contato.";
       echo "$mgs";
       }
  
//  UPDATE NO BD
 
if($acao== "updatebd"){
 
if($nova_foto == "S"){
$dir = "statica/agenda/$id";
    $uploaddir = "$dir/";
    if(is_dir("$dir")){
if($foto != "none") {
if (@copy($_FILES['foto']['tmp_name'], $uploaddir . $_FILES['foto']['name'])) {
$foto1 = $_FILES['foto']['name'];
 
} else {
echo "A foto não pode ser enviada, Mesmo assim ateramos sua agenda!!</div> </div>";
}
}
} else {
echo "A pasta agenda/$id não existe!";
}
 
@unlink("$dir/$foto_antiga");
} else {
$foto1 = "$foto_antiga";
}
 
   if(foto!=vazio){  // Condição criada !! 
   $sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', categoria='$categoria', agencia='$agencia' WHERE id='$id'";
    }
    else
    { 
    $sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'";
    }
 
   $sql2 = mysql_query($sql);
   $mgs = "Agenda Alterada com Sucesso!";
   echo "$mgs";
   } 
   // FIM UPDATE NO BD
   ?>
 
<form action="cadastro_agenda.php" method="post" enctype="multipart/form-data" name="formulario">
<input name="acao" type="hidden" value="<?=(empty($id))?"insertbd":"updatebd";?>">
 
Titulo<p>
<input name="titulo" type="text"  class="campos" value="" size="55" />
 
Texto<p>
<textarea name="texto"  cols="55" rows="20"  class="tinymce" id="input" onblur="this.idName='input';" onfocus="this.idName='inputon';"></textarea>
 
Foto<p>
      <?
      if(empty($id)){
 echo "<img width='90' name='foto1' src='statica/sem_foto.jpg' border='0'>";
 } else {
  if(!empty($dados[foto])){
echo "<img width='90' name='foto1' src='statica/agenda/$id/$dados[foto]' border='0'>";
} else {
echo "<font color='#FF0000'>Erro na Foto</font>";
}
}
?>
    
<? if(empty($id)){?>
<input class="inputon" onchange="document.images.foto1.src=this.value" name='foto' type='file' size="16"  />
<? } else {?>
Trocar  Foto?:
    <input name="nova_foto" type="radio" value="N" checked="checked" onclick="javascript:DesabilitarFoto()" />
    Não
    <input name="nova_foto" type="radio" value="S" onclick="javascript: HabilitarFoto();" >
    Sim<br />
    <input class="inputon" onchange="document.images.foto1.src=this.value" name='foto' type='file' size="16" disabled="disabled"  />
<? }?>
 
Categoria<p>
<input name="categoria" type="text"  class="campos" value="" size="55" />
 
 
Agencia<p>
<input name="agencia" type="text"  class="campos" value="" size="55" />
 
<p>
<input type="submit" id="input" name='btgravar' value="Cadastrar" />
 
</form>
 
<?
  // fim da acao FORM DE CADASTRO 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

copia isso e cola lá:

 

if($_FILES['foto']!=""){

 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }     else     {     $sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz o teste, mais não resolveu,

 

1º o cadastro é feito sem foto, deu certo. - ok valor foto null

 

2º fiz a alteração mudei todos os outros dados menus no campo foto mais mesmo assim perdeu o valor null da coluna foto,

 

3º tentei colocar uma foto não foi enviada nem cadastro no bd.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos então utilizar o mesmo parametro que vc ja vem usando:

 

if($foto != ""){

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }     else     {     $sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }


não sei se costuma sempre utilizar

"<?", mas por padrão uso sempre "<?php", dependendo da versão utilizada

isso faz diferença.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste aqui rapidamente, me parece que deu certo.

 

o que eu fiz foi trocar coloquei o foto='$foto1', primeiro e tirando do segundo.

 

ficando assim

 

 

 
 
if($_FILES['foto']!=""){
 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='$foto1', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }     

else     {     
$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto',  categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }

 

mais deixa eu fazer o teste completo.

para ter absoluta certeza.

 

 

é deu certo mesmo.

 

 

 

 

cadastro sem foto - ok

alteração sem foto - ok

 

cadastro com foto - ok

alteração com foto - ok

 

só que não da pra fazer é tipo quando eu cadastrar uma com foto e depois tipo eu quiser alterar e remover a foto deixando sem foto a coluna 'foto' fica em branco, tem como deixa ela null ? :)

 

si tiver jeito e for fácil de fazer quero tentar.

 

para deixa o sistema completo mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode fazer um update no campo foto com:

 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto='', categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }

 

se não der certo, joga um nulo:

 

$sql = "UPDATE $tabela SET titulo='$titulo', texto='$texto', foto=Null, categoria='$categoria', agencia='$agencia' WHERE id='$id'"; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc já tem o campo no form para deletar a foto? se sim, basta vc pegar o valor dele, tipo:

 

Suponhamos que vc tenha um checkbox no form, chamado name="removefoto"

 

$deletafoto = $_post["removefoto"];

 

if($deletafoto==true){

$sql = "UPDATE $tabela SET foto='' WHERE id='$id'"; }

 

isso tem que vir depois do código que vc estava mexendo, pois se vc zera o valor antes daqueles códigos, vc acabará acionando

outras condições que trabalham com foto=valor vazio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo,

 

Quero agradecer a todos que ajudaram em especial o ronaldoribe e o rockrgo

 

brigadão mesmo.

 

se eu puder ajudar em alguma coisa que esteja ao meu alcance, pode pedir.

 

brigadão mesmo

 

valeu. :joia:

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.