Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
pessoal , não estou conseguindo definir um valor para uma variavel caso seja nula , irei explicar :
no cadastro o usuario nao definira uma foto , somente os valores como email e por ai vai , so que o campo foto eu quero que puxe uma foto padrao e guarde , entao depois o usuario ira modificar quando fizer login ou caso o usuario n selecione nenhuma foto , ai sim ele pega a foto padrao ou se o usuario selecionar , ai quarda a foto dele , cadastro com foto , eu consigo , porem o meu codigo nao pega a foto padrao
peço ajuda
$foto = $_FILES["fotouser"];
if (empty($foto)) $foto ?: 'img/imgfoto.png';>
Experimenta assim:
<?php
$foto = $_FILES["fotouser"];
$foto = !empty($foto) ? $foto['name'] : 'img/imgfoto.png';
bom eu tentei antes mas grava o nome da varialve sem nada , bom vou postar o codigo completo pra ver se alguem me ajuda
case dadosUsuario:
$id = (int)$_GET["id"];
$foto = $_FILES["fotouser"];
$extençoes = array('jpg', 'png', 'gif');
$foto = !empty($foto) ? $foto['name'] : 'img/imgfoto.png';// aqui onde preciso da troca da variavel
if (!empty($foto["name"])) {
// Largura máxima em pixels
$largura = 400;
// Altura máxima em pixels
$altura = 400;
// Tamanho máximo do arquivo em bytes
$tamanho = 10000;
// Verifica se o arquivo é uma imagem
$extensao = strtolower(end(explode('.', $_FILES['fotouser']['name'])));
if (array_search($extensao, $extençoes) === false) {
echo "somente jpg, png ou gif";
echo "$extensao";
exit;
}
// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["tmp_name"]);
// Verifica se a largura da imagem é maior que a largura permitida
if($dimensoes[0] > $largura) {
session_start();
$_SESSION['msg'] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
echo "<script>history.go(-1)</script>";
}
// Verifica se a altura da imagem é maior que a altura permitida
if($dimensoes[1] > $altura) {
session_start();
$_SESSION['msg'] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
echo "<script>history.go(-1)</script>";
}
// Verifica se o tamanho da imagem é maior que o tamanho permitido
if($arquivo["size"] > $tamanho) {
session_start();
$_SESSION['msg'] = "A imagem deve ter no máximo ".$tamanho." bytes";
echo "<script>history.go(-1)</script>";
}
// Se não houver nenhum erro
if (count($error) == 0) {
// Pega extensão da imagem
preg_match("/\.(gif|png|jpg){1}$/i", $foto["name"], $ext);
// Gera um nome único para a imagem
$nome_imagem = user.(md5(uniqid(time()))) . "." . $ext[1];
}
}
$query2 = mysqli_query($conecta,"INSERT INTO img (id, fotouser) VALUES ('1', '$nome_imagem')")or die (mysqli_error());
session_start();
if($query2=true){
// Caminho de onde ficará a imagem
$caminho_imagem = "img/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);
$_SESSION['msg'] = "Usuario Atualizado com sucesso";
header("Location: {$_SERVER['HTTP_REFERER']}");
} else{
$_SESSION['msg'] = "Erro ao Atualizar";
header("Location: {$_SERVER['HTTP_REFERER']}");
}
break;$foto nunca estará vazio, é um array, deve usar o índice:
$foto = !empty($foto['name']) ? $foto['name'] : 'img/imgfoto.png';
Se for o PHP 7, pode usar o operador null coallesce:
$foto = $foto['name'] ?? 'img/imgfoto.png';
>
$foto nunca estará vazio, é um array, deve usar o índice:
$foto = !empty($foto['name']) ? $foto['name'] : 'img/imgfoto.png';
Se for o PHP 7, pode usar o operador null coallesce:
$foto = $foto['name'] ?? 'img/imgfoto.png';
fiz mas sempre grava somente o id no banco , a logica faz sentido mas n funciona , ate tentei fazer o seguinte :
$foto = empty($foto['name']) {
$foto['name'] : '/img/imgfoto.png';
}
mas n deu certo , pesquisei na net , li sobre empty no manual php , fiz os procedimentos mas n sei pq n da certo
O que tu fez no último exemplo não existe em php.
O que nós exemplificamos é conhecido como if ternário ou operador ternário, ou seja, um if/else "compacto".
Se os exemplos que nós passamos não lhe ajudou, o problema é o dado existente na variável ou a forma que você implementou.
>
$foto nunca estará vazio, é um array, deve usar o índice:
$foto = !empty($foto['name']) ? $foto['name'] : 'img/imgfoto.png';
Se for o PHP 7, pode usar o operador null coallesce:
$foto = $foto['name'] ?? 'img/imgfoto.png';
fiz alguns testes e descobri que o nome da image grava no banco , porem nao grava a extenção e nao move a image para outro diretorio tambem :/
>
O que tu fez no último exemplo não existe em php.
O que nós exemplificamos é conhecido como if ternário ou operador ternário, ou seja, um if/else "compacto".
Se os exemplos que nós passamos não lhe ajudou, o problema é o dado existente na variável ou a forma que você implementou.
e pra finalizar ele grava no banco o nome "/img/imgfoto.png" entao ele n esta pegando o arquivo e sim o texto da variavel , desculpa fazer esse monte de perguntas , estou tentando aprender php por conta ate subir algum dinheiro e finalmente fazer um curso especializado
coloque o código (antes de alterar o valor):
var_dump($foto);
Assim você verá o que está vindo na variável e poderá compreender melhor o que está acontecendo de errado.
>
coloque o código (antes de alterar o valor):
var_dump($foto);
Assim você verá o que está vindo na variável e poderá compreender melhor o que está acontecendo de errado.
array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }
>
UPLOAD_ERR_NO_FILE
Value: 4; No file was uploaded.
Experimenta assim: