-
Total de itens
3967 -
Registro em
-
Última visita
-
Dias vencidos
47
Tudo que Williams Duarte postou
-
Você tem que selecionar o path da foto antes de efetuar o update. $result = $sqli->query("select foto clientes where id_cliente = $id_cliente"); $obj = $result->fetch_object(); $path = './fotos/'. $obj->foto; $sql = $sqli->query("update clientes set foto = '$nome_imagem' where id_cliente = $id_cliente"); .... if ($sqli->error) { echo "<p>Erro ao atualizar.</p>" . $sqli->error; } else { if (file_exists($path)) { unlink($path); } // vai forçar o recarregamento da imagem nova $fotoNova = '?' . microtime(true); }
-
Como criar subdomínios automáticos a partir de um formulário
Williams Duarte respondeu ao tópico de dutopfave em PHP
Em desenvolvimento ou em um Droplet "nuvem", você pode alterar o VirtualHost, colocando no ServerAlias, um * "coringa" como subdominio. ServerAlias example.com *.example.com <VirtualHost *:80> ServerName domain.com ServerAlias *.domain.com VirtualDocumentRoot /var/www/public </VirtualHost> http://httpd.apache.org/docs/2.4/vhosts/name-based.html Se for usar em hospedagens com CPanel ou outro, você pode criar um subdomínio * apontando para a pasta necessária (você precisará especificar o caminho no campo Raiz do documento ) outro detalhe é especificar o DNS Obs.: No ambiente de desenvolvimento, especifique os hosts no arquivo local, no linux é em /etc/hosts, no Windows C: » Windows » System32 » Drivers » etc PS.: O subdominio que você cadastrou no banco de dados, é só para encontrar o workspace daquele usuario, o restante ficará no automatico.- 5 respostas
-
- subdominios
- subdomínios
-
(e mais 2 )
Tags:
-
Como criar subdomínios automáticos a partir de um formulário
Williams Duarte respondeu ao tópico de dutopfave em PHP
Apache ou Nginx?- 5 respostas
-
- subdominios
- subdomínios
-
(e mais 2 )
Tags:
-
Entenda o contexto do que eu disse! Nem aqui no Fórum Imasters e, nem no StackOverflow em portugues entenderia, ja que você citou o StackOverflow. Seu problema não é a biblioteca como já disse, mas sim entender Padrões de Projeto. Comece estudando Facade Vai deixar seu codigo mais limpo e esconde a complexidade $facade = new EmailFacade(); $facade->email(getPost('email')) ->attach('...') ->send(); getPost() Com a função, __call, __callStatic() você abstrai todos os metodos de um Serviço "que usa o PHPMailer", mas se parou de funcionar, atualize o biblioteca que envia o email, ou mude para outra. Exemplo com __call e __callStatic <?php class MethodTest { public function __call($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** As of PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } } $obj = new MethodTest; $obj->runTest('in object context'); MethodTest::runTest('in static context'); // As of PHP 5.3.0 ?> Se não forem cobertos por testes, fica dificil mesmo. Praticamente todos os metodos de uso do PHPMailer já foram cobertos por testes, sendo assim, faça uso de testes para cobrir os seus. Mais em: https://phpunit.de/ Senão entender sobre, vai sempre depender de videos aulas, como esta acima, que ao meu ver, vale como aprendizagem, mas tenha em mente que tem um alto acoplamento e baixa coesão. Tornando seu código de dificil manutenção. Para uso de dados sensiveis, um padrão ja bastante difundido e o "environment" .env Existe um pacote para isto https://github.com/vlucas/phpdotenv
-
O problema acredito não ser no PhpMailer! Pois não sabemos oque este código acima faz. Se você abstraiu as funções do PHPMailer para outra layer. Só Deus e você sabe oque fez, nem aqui e nem no SoPT entenderá. Lá no Stack ja iria ser fechada ou negativada, por nao ser clara e fora do escopo do PHPMailer.
-
Vocẽ pode também pode utilizar Closures, vai deixar seu código mais organizado. <?php function createSelect($name) { return function ($data) use ($name) { $html ='<select name="'. $name .'" size="3" required>'; foreach ($data as $value) { $html .='<option>' . $value . '</option>'; } $html .= '</select>'; return $html; }; } $create = createSelect('cores'); $data = $create(array("verde" , "amarelo" , "azul")); print( $data ); $create = createSelect('carros'); $data = $create(array("gol" , "fiat" , "palio")); print( $data ); Bons estudos @Biel.
-
Há quatro possibilidades de deixar ativado automaticamente. 1 - Se tem acesso ao banco, ja deixa ativado como default 2 - Verique o codigo onde recebe os dados e seta para ativo. 3 - Passe um campo no formulário do tipo hidden com o valor true 4 - Passe um campo do tipo ckeckbox/select, com o valor true Independente de qual forma passar, vai ter que descobrir como esta o nome no banco.
-
Crie uma função fábrica e da um include nas paginas que necessita! Porque o que vejo é repitação de códigos e nada mais, existe outros paradigmas de programação, além do procedural, funcional é uma delas! <?php function createSelect($data, $name) { $html ='<select name="'. $name .'" size="3" required>'; foreach ($data as $key => $value) { $html .='<option>' . $value . '</option>'; } $html .= '</select>'; return $html; } $dados = array("verde" , "amarelo" , "azul" ); print(createSelect($dados, 'cores')); $dados = array("gol" , "fiat" , "palio" ); print(createSelect($dados, 'carros')) output <select name="cores" size="3" required> <option>verde</option> <option>amarelo</option> <option>azul</option> </select> <select name="carros" size="3" required> <option>gol</option> <option>fiat</option> <option>palio</option> </select> Você pode controlar inumeras coisas, passando uma queryString pela url. Ou seja nada é impossivel.
-
Como filtrar a superglobal $_SERVER['REQUEST_METHOD'] da melhor forma ao enviar id de formulário ?
Williams Duarte respondeu ao tópico de unset em PHP
Melhor ler a própria documentação para entender sobre os Linters, especificamente no Netbeans, particularmente prefiro o xDebug. E linteres, só uso Eslint para javascript, e xDebug no PhpStorm, porque além de depurar o código corrige com as melhores práticas. Não fica só apontando tipo o VsCode com o Typescript. Tempos atrás era deste jeito, aponta os erros e você tem que se virar pra descobrir os types que a comunidade já tinha criado. Não sei agora com a evolução da linguagem. Abaixo uma forma de resolver seu problema com o Netbeans. https://stackoverflow.com/questions/19767894/warning-do-not-access-superglobal-post-array-directly-on-netbeans-7-4-for-ph -
Como filtrar a superglobal $_SERVER['REQUEST_METHOD'] da melhor forma ao enviar id de formulário ?
Williams Duarte respondeu ao tópico de unset em PHP
Se seu aplicativo precisar reagir a pedido do tipo post, use o seguinte: if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { // if form submitted with post method // validate request, // manage post request differently, // log or don't log request, // redirect to avoid resubmition on F5 etc } -
Melhor fazer isto com javascript, utilizando socket Aqui tem um exemplo muito bom com php
-
https://github.com/dompdf/dompdf
-
Crie um novo arquivo info.php, com as informações abaixo : info.php <?php // Mostra todas as informações, usa o padrão INFO_ALL phpinfo(); // Mostra apenas informações dos módulos. // phpinfo(8) mostra um resultado identico. phpinfo(INFO_MODULES); ?> e rode diretamente pela url http://localhost:8080/info.php Se imprimir na tela as configurações do php, versão etc, não tem erro em seu php Sobre isto aqui Você espera duas variaveis no mesmo ternario, "fat e val" isset($_GET["fat"])?$_GET["val"]:1 Correto $fat = $f = isset($_GET["fat"]) ? $_GET["fat"] : 1; O ternario testa se a var $_GET['fat'] foi iniciada, e retorna o valor, senao retorna false ou seja true === true retorna true else false. Se que testar mais de uma variavel, faça outro ternario. Coloque nos seus codigos php, para reportar erros: <?php ini_set('display_errors', true); error_reporting(E_ALL);
-
$query = "SELECT * FROM users WHERE user_name='$user_name' AND user_pass='$user_pass'"; $results = mysqli_query($db_sys, $query); faz um debug nesta variavel $results print_r($results); exit(); e poste aqui o que retorna!
-
Habilite os erros do PHP, unica forma de encontrar o mesmo. https://www.melhorhospedagemdesites.com/dicas-e-ferramentas/mostrar-erros-php/
-
Bom, seu php nao há problemas, mas sim estes envio por get, em nenhum momento a string foi passada. Mas volto a repetir, postar imagens nao resolve. Tem que postar o código para que possamos copiar o codigo e corrigir. Veja em Factoria.php, você espera por fat e val e um ternario? Ja mostra o primeiro o erro.
-
Print não é código. Se está aprendendo, começa a saber diferenciar código <> de print de tela. Isto abaixo, é um código adicionado em code "<>" deste editor aqui no fórum. <?php echo "Olá Mundo!"; ?> E pelo que vi você tem 03 arquivos php, se quer ajuda, leia as regras do forum. Orientações 2. Use a Tag CódigoSempre que postar códigos, adicione-o entre as tags [ code ] e [ /code ] (sem os espaços), para facilitar a leitura.Você também pode usar o Botão Code (símbolo "<>"), ao lado do Botão Imagem, no editor de textos do fórum.
-
Caixa de dialogo que aparece quando marca uma palavra
Williams Duarte respondeu ao tópico de Sapinn em PHP
tooltips -
Nao consigo mostrar resultado do formulario.
Williams Duarte respondeu ao tópico de tiagodolf em PHP
Use a função isset $opt1 = isset($_POST["perg1"]) ? $_POST["perg1"] : ""; -
Você tem que adicionar um novo indice a cada entrada de itens, depois no indice de itens, os de igredientes. Fiz uma lógica rápida, usando Session e ArrayPush Note que: add_itens(Array de Produdos, Indice do Produto); add_extra( Indice do Produto, Adicionais e Id); <?php $produto = [ 'Copo 300ml', 'Copo 500ml', 'Copo 700ml', ]; $fruta = [ ['Morango', '1.00'], ['Banana', '1.00'], ['Uva', '1.00'], ]; $complementos = [ ['Ninho', '1.00'], ['Coco Ralado', '1.00'], ['Castanha', '1.00'], ]; $cobertura = [ ['Chocolate', '1.00'], ['Leite condensado', '1.00'], ['Morango', '1.00'], ]; $adicionais = [ ['Nutella', '1.00'], ['Bis', '1.00'], ['KitKat', '1.00'], ]; $_SESSION = []; function add_itens($produto, $item) { array_push($_SESSION, ['item' => $produto[$item]]); } function add_extra($produto, $item) { array_push($_SESSION[$produto], ['ingredientes' => $item]); } add_itens($produto, 1); add_extra(0, $fruta[2]); add_extra(0, $cobertura[1]); add_itens($produto, 2); add_extra(1, $fruta[1]); add_extra(1, $adicionais[1]); print_r($_SESSION); Saida Array ( [0] => Array ( [item] => Copo 500ml [0] => Array ( [ingredientes] => Array ( [0] => Uva [1] => 1.00 ) ) [1] => Array ( [ingredientes] => Array ( [0] => Leite condensado [1] => 1.00 ) ) ) [1] => Array ( [item] => Copo 700ml [0] => Array ( [ingredientes] => Array ( [0] => Banana [1] => 1.00 ) ) [1] => Array ( [ingredientes] => Array ( [0] => Bis [1] => 1.00 ) ) ) ) Bom trabalho!
-
Sem ver o código fica dicil, o erro mostra que é de required.
-
Veja o que retorna: use App\Arquiteto; $arquiteto = Arquiteto::with('clientes')->first(); dd($arquiteto->clientes);
-
Envia como Post e não Get E posta o código de que recebe o Formulario.php Outro coisa, crie um arquivo qualquer.php e coloque dentro o seguinte, em seguida execute pelo browser. <?php // Mostra todas as informações, usa o padrão INFO_ALL phpinfo(); // Mostra apenas informações dos módulos. // phpinfo(8) mostra um resultado identico. phpinfo(INFO_MODULES); ?> Se estiver tudo okay com php, o problema é seu codigo.
-
Por convenção, o Laravel espera que suas tabelas sejam todas em inglês, para que reconheça os parametros automaticamente. Mas se está em portugues, tem que passar manualmente. $this->hasMany('App\Cliente', 'foreign_key', 'other_key'); Como ficaria seu código public function clientes() { return $this->hasMany(Cliente::class, 'arquiteto_id', 'id'); }
-
Criando uma seleção no banco de dados quando produto estiver vencendo
Williams Duarte respondeu ao tópico de Marcio_123 em PHP
Frequentemente deixo algumas Schedules rodando! docker run -d image_name '*/30 * * * * ___cmdstring___' Se é uma recorrencia mensal, que vence daqui 7 dias, jogo em uma fila e disparo a cobrança. Um dia antes do vencimento, vejo quem ainda no pagou e disparo um outro aviso. 3 dias depois outro, nao pagou, dispara um aviso de bloqueio após alguns dias , isto você controla em flags no DB Se a recorrencia é trimestral, semestral ou anual, não faz diferença na consulta, o importante é declarar no select, qual é o intervalo. SELECT DATE_ADD( CURDATE(), INTERVAL 7 days ); SELECT DATE_ADD( CURDATE(), INTERVAL 1 days ); E fazer o filtro. Obs, você tem que ter outros Jobs analisando cadastro etc, para nao ter erro nas cobranças, mas tudo depende das regras de negocios.