Jump to content
  • 0
Jack Oliveira

Salvar dados na tabela com JAVASCRIPT

Question

Ola pessoal boa noite preciso salvar umas coisas no banco de dados usando ao clicar no botão que esteja aparecendo sem que recarregue a página

 

Seria isso aqui

 

HTML do botão

                                                <div class="btn-group">
                                                    <a href="javascript:void(0)" class="rate-btn toggole-contnet">
                                                        <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> Sim
                                                    </a>
                                                    <a href="javascript:void(0)" class="rate-btn toggole-contnet">
                                                        <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> Não
                                                    </a>
                                                </div>

No PHP para salvar no banco esta da seguinte forma.

<?php  if(isset($_POST['AvaliComentario'])) {
		// Se o cookie ainda não foi setado
$cookie = isset($_COOKIE["avali_comentario_".$Comentario['id']]) ? $_COOKIE["avali_comentario_".$Comentario['id']] : null;
if (!isset($cookie)) {		
		
		$Adicionar = array(
			'comentario_id' 	=> $Comentario['id'],
			'up' 	            => post('up'),
			'down' 	            => post('down')
		);
		$Query = DBCreate('avali_comentario', $Adicionar);
		
   // Se for um sucesso a query
    if ($Query)
    {
        // Seta um cookie
        setcookie("avali_comentario_".$Comentario['id']."", true, time()+60*60*24*6004);
        // Retorna false, ou seja, sucesso
        echo false;
		
 Redireciona(''.$URLSHARE.'');	
    }else{
	//AbreAlerta("Erro! Ouve um erro ao  ".$dados['titulo']."!");
		 //Redireciona(''.$URLSHARE.'');
	}
			

	 }else{		
	//Sweet('Atenção!!!', 'Você já deu  sua Curtida para '.$dados['titulo'].'!', 'warning', 'Fechar');

	//AbreAlerta("Ops! Você já deu  sua Curtida para ".$dados['titulo']."!");
		//Redireciona(''.$URLSHARE.'');
		 
 }
 
}

Só preciso para quando clicar uns dos botão ele salvar sem precisar carregar a página...

 

Se ter um forma diferente para fazer fico grato pelas dicas que puderem dar ai..

 

 

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0
2 horas atrás, Jack Oliveira disse:

sem que recarregue a página

 

Use AJAX para carregar um arquivo que irá registrar a avaliação. Nesse arquivo não use redirecionamento.

Ao clicar no botão pode enviar a informação do que foi clicado por protocolo GET ou POST, tanto faz o que conta mesmo é como esse dado será tratado no back-end.

 

Só um detalhe usar um cookie pode não ser o mais ideal, uma vez que o usuário pode está com cookies bloqueados no browser o mesmo limpar o cache ele vai poder avaliar novamente.

Sugiro uma tabela para registrar o que o usuário já avaliou.

Mas caso não seja um problema o usuário poder avaliar diversas vezes a mesma coisa, desconsidere....

Share this post


Link to post
Share on other sites
  • 0
13 horas atrás, Omar~ disse:

uma vez que o usuário pode está com cookies bloqueados no browser o mesmo limpar o cache ele vai poder avaliar novamente

Ola @Omar~ Boa tarde então esta aparte que usará cookies seria bloquear para que os mesmo não fazem mais de uma vez...

 

Porem os usuários que poderá fazer as avaliações será quando fazerem algum comentário e sim poder dar sua avaliação, neste caso eles não teria login entende??

 

Teria como fazer pelo IP de uso do usuários ou seja da maquina ou mesmo da rede da internet IP?

Share this post


Link to post
Share on other sites
  • 0
13 horas atrás, Omar~ disse:

Use AJAX para carregar um arquivo que irá registrar a avaliação. Nesse arquivo não use redirecionamento.

Ao clicar no botão pode enviar a informação do que foi clicado por protocolo GET ou POST, tanto faz o que conta mesmo é como esse dado será tratado no back-end.

Sobre aqui certo vou fazer obrigado....

Share this post


Link to post
Share on other sites
  • 0
1 hora atrás, Jack Oliveira disse:

Teria como fazer pelo IP de uso do usuários ou seja da maquina ou mesmo da rede da internet IP?

Tem sim (pelo ip físico da máquina do usuário dizem que tem como obter o DNS também, mas não sei como).

Há uma possibilidade de erro (duplicar o mesmo), mas se colocar-mos IP + dados da máquina + sistema operacional você terá uma margem bem alta de precisão, pode acontecer de duplicar, mas seria extremamente raro.

Veja essa classe com ela você pode obter o IP o SO e até o browser que o usuário esteja usando.

Spoiler

<?php
/**
 * ********************************************
 * @Copyright (c) 2017, Spell Master.
 * @version 1.2 : 2018 Spell Master
 * ********************************************
 * @Class: Retorna dados na máquina que está
 * acessamdo o servidor.
 * ********************************************
 */

class UserAgent {

    private $userData;
    private $userIP;
    private $setOS;
    private $setBrowser;
    private $osTrue = null;
    private $browserTrue = null;

    /**
     * ****************************************
     * Define os dados e chama os métodos.
     * ****************************************
     */
    function __construct() {
        $filterServe = filter_input_array(INPUT_SERVER, FILTER_DEFAULT);
        $filterIp = filter_input_array(INPUT_SERVER, FILTER_VALIDATE_IP);
        $this->userData = $filterServe['HTTP_USER_AGENT'];
        $this->userIP = $filterIp['REMOTE_ADDR'];
        $this->checkOs();
        $this->checkBrowser();
    }

    /**
     * ****************************************
     * Verifica o sistema operacional.
     * ****************************************
     */
    private function checkOs() {
        $os = ['/windows nt 10/i' => 'Windows 10', '/windows nt 6.3/i' => 'Windows 8.1', '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile'];
        foreach ($os as $reg => $value) {
            if (preg_match($reg, $this->userData)) {
                $this->setOS = (string) $value;
                $this->osTrue = true;
            }
        }
    }

    /**
     * ****************************************
     * Verifica o navegador.
     * ****************************************
     */
    private function checkBrowser() {
        $browser = ['/msie/i' => 'Internet Explorer', '/firefox/i' => 'Firefox', '/safari/i' => 'Safari', '/chrome/i' => 'Chrome', '/edge/i' => 'Edge', '/opera/i' => 'Opera', '/netscape/i' => 'Netscape', '/maxthon/i' => 'Maxthon', '/konqueror/i' => 'Konqueror', '/mobile/i' => 'Handheld Browser'];
        foreach ($browser as $reg => $value) {
            if (preg_match($reg, $this->userData)) {
                $this->setBrowser = (string) $value;
                $this->browserTrue = true;
            }
        }
    }

    /**
     * ********************************************
     * Retorna os dados da máquina que está
     * acessando.
     * ****************************************
     */
    public function getUserMachine() {
        return $this->userData;
    }

    /**
     * ********************************************
     * @Method: Retorna o sistema operacional da máquina
     * que está acessando.
     * ****************************************
     */
    public function getOs() {
        if (isset($this->osTrue)) {
            return $this->setOS;
        } else {
            return " ";
        }
    }

    /**
     * ********************************************
     * @Method: Retorna o navegador da máquina que está
     * acessando.
     * ****************************************
     */
    public function getBrowser() {
        if (isset($this->browserTrue)) {
            return $this->setBrowser;
        } else {
            return " ";
        }
    }

    /**
     * ********************************************
     * Obtem o endereço de IP da máquina que
     * está acessando.
     * ****************************************
     */
    public function requestIP() {
        return $this->userIP;
    }
}

 

 

No entanto de qualquer forma terá que registrar em algum lugar no servidor, seja um banco de dados, um XML JSON, TXT etc... Não importa tem que registrar em algum lugar para saber se o usuário já fez a sua avaliação.

Share this post


Link to post
Share on other sites
  • 0
16 horas atrás, Omar~ disse:

Use AJAX para carregar um arquivo que irá registrar a avaliação. Nesse arquivo não use redirecionamento.

Ao clicar no botão pode enviar a informação do que foi clicado por protocolo GET ou POST, tanto faz o que conta mesmo é como esse dado será tratado no back-end.

Ola @Omar~

 

Quero fazer usando data-value  Tu sabes como posso usar ou seja montar ele para que seja gravado apenas se for clicado em uns dos botões?

Na minha tabela fiz isso aqui, sem que não tem nada a ver aqui...

CREATE TABLE `avali_comentario` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `comentario_id` int(11) NOT NULL,
  `up` int(11) NOT NULL,
  `down` int(11) NOT NULL,  
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Veja aqui no html como que posso bloquear se uns dos botão já tiver sindo clicado? 

                                                <div class="btn-group">
												<form method="post" action="" id="ajax_form">
                                                    <a href="javscript:void(0)" data-value="1" class="rate-btn toggole-contnet">
                                                        <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> Sim
                                                    </a>
                                                    <a href="javscript:void(0)" data-value="2" class="rate-btn toggole-contnet">
                                                        <i class="fa fa-thumbs-o-down" aria-hidden="true"></i> Não
                                                    </a>
													</form>
                                                </div>

No javascript fiz isso

 

	<script type="text/javascript">
	jQuery(document).ready(function(){
		jQuery('#ajax_form').submit(function(){
			var dados = jQuery( this ).serialize();

			jQuery.ajax({
				type: "POST",
				url: "ajax/avaliar_listagem.php",
				data: dados,
				success: function( data )
				{
					alert( data );
				}
			});
			
			return false;
		});
	});
	</script>

No avaliar_listagem.php seria o mesmo aqui no PHP

 

<?php  if(isset($_POST['AvaliComentario'])) {
		// Se o cookie ainda não foi setado
$cookie = isset($_COOKIE["avali_comentario_".$Comentario['id']]) ? $_COOKIE["avali_comentario_".$Comentario['id']] : null;
if (!isset($cookie)) {		
		
		$Adicionar = array(
			'comentario_id' 	=> $Comentario['id'],
			'up' 	            => post('up'),
			'down' 	            => post('down')
		);
		$Query = DBCreate('avali_comentario', $Adicionar);
		
   // Se for um sucesso a query
    if ($Query)
    {
        // Seta um cookie
        setcookie("avali_comentario_".$Comentario['id']."", true, time()+60*60*24*6004);
        // Retorna false, ou seja, sucesso
        echo false;
		
 Redireciona(''.$URLSHARE.'');	
    }else{
	AbreAlerta("Erro! Ouve um erro ao  ".$dados['titulo']."!");
		 //Redireciona(''.$URLSHARE.'');
	}
			

	 }else{		
	//Sweet('Atenção!!!', 'Você já deu  sua Curtida para '.$dados['titulo'].'!', 'warning', 'Fechar');

	AbreAlerta("Ops! Você já deu  sua Curtida para ".$dados['titulo']."!");
		//Redireciona(''.$URLSHARE.'');
		 
 }
 
}

Sobre o que tu mandou qui vou dar um estudada nele..

 

39 minutos atrás, Omar~ disse:

Tem sim (pelo ip físico da máquina do usuário dizem que tem como obter o DNS também, mas não sei como).

Há uma possibilidade de erro (duplicar o mesmo), mas se colocar-mos IP + dados da máquina + sistema operacional você terá uma margem bem alta de precisão, pode acontecer de duplicar, mas seria extremamente raro.

Veja essa classe com ela você pode obter o IP o SO e até o browser que o usuário esteja usando.

  Mostrar conteúdo oculto


<?php
/**
 * ********************************************
 * @Copyright (c) 2017, Spell Master.
 * @version 1.2 : 2018 Spell Master
 * ********************************************
 * @Class: Retorna dados na máquina que está
 * acessamdo o servidor.
 * ********************************************
 */

class UserAgent {

    private $userData;
    private $userIP;
    private $setOS;
    private $setBrowser;
    private $osTrue = null;
    private $browserTrue = null;

    /**
     * ****************************************
     * Define os dados e chama os métodos.
     * ****************************************
     */
    function __construct() {
        $filterServe = filter_input_array(INPUT_SERVER, FILTER_DEFAULT);
        $filterIp = filter_input_array(INPUT_SERVER, FILTER_VALIDATE_IP);
        $this->userData = $filterServe['HTTP_USER_AGENT'];
        $this->userIP = $filterIp['REMOTE_ADDR'];
        $this->checkOs();
        $this->checkBrowser();
    }

    /**
     * ****************************************
     * Verifica o sistema operacional.
     * ****************************************
     */
    private function checkOs() {
        $os = ['/windows nt 10/i' => 'Windows 10', '/windows nt 6.3/i' => 'Windows 8.1', '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile'];
        foreach ($os as $reg => $value) {
            if (preg_match($reg, $this->userData)) {
                $this->setOS = (string) $value;
                $this->osTrue = true;
            }
        }
    }

    /**
     * ****************************************
     * Verifica o navegador.
     * ****************************************
     */
    private function checkBrowser() {
        $browser = ['/msie/i' => 'Internet Explorer', '/firefox/i' => 'Firefox', '/safari/i' => 'Safari', '/chrome/i' => 'Chrome', '/edge/i' => 'Edge', '/opera/i' => 'Opera', '/netscape/i' => 'Netscape', '/maxthon/i' => 'Maxthon', '/konqueror/i' => 'Konqueror', '/mobile/i' => 'Handheld Browser'];
        foreach ($browser as $reg => $value) {
            if (preg_match($reg, $this->userData)) {
                $this->setBrowser = (string) $value;
                $this->browserTrue = true;
            }
        }
    }

    /**
     * ********************************************
     * Retorna os dados da máquina que está
     * acessando.
     * ****************************************
     */
    public function getUserMachine() {
        return $this->userData;
    }

    /**
     * ********************************************
     * @Method: Retorna o sistema operacional da máquina
     * que está acessando.
     * ****************************************
     */
    public function getOs() {
        if (isset($this->osTrue)) {
            return $this->setOS;
        } else {
            return " ";
        }
    }

    /**
     * ********************************************
     * @Method: Retorna o navegador da máquina que está
     * acessando.
     * ****************************************
     */
    public function getBrowser() {
        if (isset($this->browserTrue)) {
            return $this->setBrowser;
        } else {
            return " ";
        }
    }

    /**
     * ********************************************
     * Obtem o endereço de IP da máquina que
     * está acessando.
     * ****************************************
     */
    public function requestIP() {
        return $this->userIP;
    }
}

 

 

No entanto de qualquer forma terá que registrar em algum lugar no servidor, seja um banco de dados, um XML JSON, TXT etc... Não importa tem que registrar em algum lugar para saber se o usuário já fez a sua avaliação.

 

Vou criar uma tabela para pegar as informações necessárias

Obrigado pela esta ajuda 

Share this post


Link to post
Share on other sites
  • 0

Aqui eu estou supondo que haja apenas uma postagem ou várias a avaliar por página.

Se for várias apenas os form's devem ser gerados dentro de um loop das postagens.

Vou resumir, apesar de ser algo bem simples requer algumas manipulações do front para termos a coisa dinâmica, mas nada complicado.

<?php
$postID = 99;
?>
<form method="post" action="" id="ajax_form_<?= $postID ?>">
    <input type="hidden" name="alvo_da_postagem" value="<?= $postID ?>" />
    <input type="text" name="avaliar" value="" /> <!-- Mude para type="hidden" está como text para você testar aí -->

    <a data-value="1" class="voto">Sim</a>
    <a data-value="2" class="voto">Não</a>
</form>

<script>
    var botoes = document.getElementsByClassName('voto'); // Obtenho os botões de avaliação
  	if (typeof botoes !== 'undefined' && botoes !== null) { // Depois eu digo o porque disso
    	for (var i = 0; i < botoes.length; i++) {
        	botoes[i].addEventListener('click', salvarForm, false); // Adiciono evento click a cada botão
    	}
    }

    function salvarForm(e) {
        var alvo = e.target; // Obtenho o correto botão clicado
        var pai = alvo.parentNode; // Obtenho o elemento pai é o form "alvo.parentNode"
      	/*
        O primeiro elemento filho é um input que irá identificar o id da postagem "children[0]"
        Encontro o input para adicionar o valor da avaliação que é o segundo filho "children[1]"
        Então nesse filho que é o que tenho de manipular adiciono o valor do atributo data do botão clicado
        */
        pai.children[1].value = alvo.dataset.value;
       
       /*
       	AQUI então você salva o form por ajax
        Caso precise identificar o id do formulário lembre-se que já o encontramos
        então caso precise o "pai.id"
        será o mesmo valor que o foi renderizado no HTML id="ajax_form_<?= $postID ?>"
        */
    }
</script>

 

Então no arquivo que vai receber os dados do form você terá o

$_POST['alvo_da_postagem'] >>>> Que é o id da postagem para avaliar

$_POST['avaliar'] >>>> Que é data-value clicado pelo usuário

 

Nesse mesmo arquivo ao salvar a avaliação poderemos manipular o HTML

Como o #ID do form está assim ajax_form_<?= $postID ?> e $_POST['alvo_da_postagem'] será o mesmo que $postID então podemos chegar ao formulário para manipular qualquer um de seus elementos filhos no caso remover o ouvinte de eventos click do botão clicado 

Assim sendo não podendo clicar novamente no mesmo ou em ambos, sei lá como vai querer fazer...

document.getElementById('ajax_form_<?= $_POST['alvo_da_postagem'] ?>')

 

Ao caso do usuário recarregar a página fechar e reabrir a página sempre estará disponível os botões de avaliação.

Por isso a importância de também haver registro de qual postagem aquele usuário postou

Aqui eu estarei apenas usando a própria tabela que você apresentou, mas poderá criar outra apenas para essa finalidade de checagem

CREATE TABLE `avali_comentario` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `comentario_id` int(11) NOT NULL,
  `usuario_id` int(11) NOT NULL DEFAULT '1' COMMENT 'ID do usuario que avaliou',
  `up` int(11) NOT NULL,
  `down` int(11) NOT NULL,  
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Nesse meu caso é só checar se o usuário já fez sua avaliação no post que se segue:

SELECT
    comentario_id,
    usuario_id
FROM
    avali_comentario
WHERE
    comentario_id = '$ID_DO_COMENTARIO'
AND
    usuario_id = '$ID_DO_USUARIO'

Se por exemplo essa query retornar algum valor podemos apenas escrever o html sem executar a função dos botões

<?php
$retornoDaQuery = true; /* Supondo que o usuario já votou porque a query retornou algum valor */
?>

<a <?= ($retornoDaQuery ? 'data-value="1" class="voto"' : null) ?>>Sim</a>
<a <?= ($retornoDaQuery ? 'data-value="2" class="voto"' : null) ?>>Não</a>

Assim sendo se os botões não tem as propriedades necessárias o voto não acontece ou até mesmo poderíamos colocar um IF se sim nem escreveríamos o html deles.

Por isso a identificação da existência pelo typeof antes de adicionar ouvintes nos botões se eles não existirem vai gerar erro de console.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By b2black
      Quando preencho o cadastro e clico em cadastrar, a informação não é salva no banco de dados, e também, como pode ver na imagem action2, as informações digitadas permanecem nos campos imput e o nome vai para o alerta de erro de mensagem em baixo do campo....
       
      <?php require_once "config.php"; $idclient = $fullname = $cpfclient = $gender = $phone = $email = $dayagend = $houragend = ""; $idclient_err = $fullname_err = $cpfclient_err = $gender_err = $phone_err = $email_err = $dayagend_err = $houragend_err = ""; if($_SERVER["REQUEST_METHOD"] == "POST"){ // $input_idclient = trim($_POST["idclient"]); if(empty($input_idclient)){ $idclient_err = "ID de identificação do cliente."; } else{ $idclient = $input_idclient; } $input_fullname = trim($_POST["fullname"]); if(empty($input_fullname)){ $fullname_err = "Por favor, insira o nome completo do cliente."; /*} elseif(!filter_var($input_fullname, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){ $fullname_err = "Por favor, insira um nome válido de cliente.";*/ } else{ $fullname = $input_fullname; } $input_cpfclient = trim($_POST["cpfclient"]); if(empty($input_cpfclient)){ $cpfclient_err = "Por favor, insira o CPF do cliente."; } elseif(!ctype_digit($input_cpfclient)){ $cpfclient_err = "Por favor, coloque apenas números do CPF."; } else{ $cpfclient = $input_cpfclient; } $input_gender = trim($_POST["gender"]); if(empty($input_gender)){ $gender_err = "Por favor, escolha o gênero do cliente."; } else{ $gender = $input_gender; } $input_phone = trim($_POST["phone"]); if(empty($input_phone)){ $phone_err = "Por favor, insira o telefone do cliente."; } elseif(!ctype_digit($input_phone)){ $phone_err = "Por favor, é necessário inserir o telefone de contato do cliente."; } else{ $phone = $input_phone; } $input_email = trim($_POST["email"]); if(empty($input_email)){ $email_err = "Por favor, insira o e-mail do cliente."; } else{ $email = $input_email; } $input_dayagend = trim($_POST["dayagend"]); if(empty($input_dayagend)){ $dayagend_err = "Por favor, coloque a data do atendimento do cliente."; } elseif(!ctype_digit($input_dayagend)){ $dayagend_err = "Por favor, é necessário uma data de atendimento para o cliente."; } else{ $dayagend = $input_dayagend; } $input_houragend = trim($_POST["houragend"]); if(empty($input_houragend)){ $houragend_err = "Por favor, coloque a data do atendimento do cliente."; } elseif(!ctype_digit($input_houragend)){ $houragend_err = "Por favor, é necessário uma data de atendimento para o cliente."; } else{ $houragend = $input_houragend; } if(empty($idclient) && empty($fullname_err) && empty($cpfclient_err)&& empty($gender_err)&& empty($phone_err)&& empty($email_err)&& empty($dayagend_err)&& empty($houragend_err)){ $sql = "INSERT INTO schedule (idclient, fullname, cpfclient, gender, phone, email, dayagend, houragend) VALUES (?, ?, ?)"; if($stmt = mysqli_prepare($link, $sql)){ mysqli_stmt_bind_param($stmt, "sss", $param_idclient, $param_fullname, $param_cpfclient, $param_gender, $param_phone, $param_email, $param_dayagend, $param_houragend); $param_idclient = $idclient; $param_fullname = $fullname; $param_cpfclient = $cpfclient; $param_gender = $gender; $param_phone = $phone; $param_email = $email; $param_dayagend = $dayagend; $param_houragend = $houragend; if(mysqli_stmt_execute($stmt)){ header("location: index.php"); exit(); } else{ echo "Ops! Algo deu errado. Por favor, tente novamente mais tarde."; } } if($stmt = mysqli_prepare($link, $sql)){ // [...] mysqli_stmt_close($stmt); } } mysqli_close($link); } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>Agenda dos Clientes</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <style> .wrapper{ width: 600px; margin: 0 auto; } </style> </head> <body> <div class="wrapper"> <div class="container-fluid"> <div class="row"> <div class="col-md-12"> <h2 class="mt-5">Cadastro do Cliente</h2> <p>Por favor, preencha os campos abaixos para agendar o cliente.</p> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post"> <div class="form-group"> <label>ID DO CLIENTE</label> <input type="text" name="idclient" class="form-control <?php echo (!empty($idclient_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $idclient; ?>"> <span class="invalid-feedback"><?php echo $idclient_err;?></span> </div> <div class="form-group"> <label>NOME COMPLETO</label> <input type="text" name="fullname" class="form-control <?php echo (!empty($fullname_err)) ? 'is-invalid' : ''; ?>"><?php echo $fullname; ?> <span class="invalid-feedback"><?php echo $fullname_err;?></span> </div> <div class="form-group"> <label>CPF</label> <input type="text" name="cpfclient" class="form-control <?php echo (!empty($cpfclient_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $cpfclient; ?>"> <span class="invalid-feedback"><?php echo $cpfclient_err;?></span> </div> <div class="form-group"> <label>GÊNERO</label> <input type="text" name="gender" class="form-control <?php echo (!empty($gender_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $gender; ?>"> <span class="invalid-feedback"><?php echo $gender_err;?></span> </div> <div class="form-group"> <label>Telefone</label> <input type="text" name="phone" class="form-control <?php echo (!empty($phone_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $phone; ?>"> <span class="invalid-feedback"><?php echo $phone_err;?></span> </div> <div class="form-group"> <label>E-mail</label> <input type="text" name="email" class="form-control <?php echo (!empty($email_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $email; ?>"> <span class="invalid-feedback"><?php echo $email_err;?></span> </div> <div class="form-group"> <label>Agendar Dia</label> <input type="text" name="dayagend" class="form-control <?php echo (!empty($dayagend_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $dayagend; ?>"> <span class="invalid-feedback"><?php echo $dayagend_err;?></span> </div> <div class="form-group"> <label>Agendar Horário</label> <input type="text" name="houragend" class="form-control <?php echo (!empty($houragend_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $houragend; ?>"> <span class="invalid-feedback"><?php echo $houragend_err;?></span> </div> <input type="submit" class="btn btn-primary" value="Submit"> <a href="index.php" class="btn btn-secondary ml-2">Cancel</a> </form> </div> </div> </div> </div> </body> </html>  


    • By Air-Gear
      Olá, na parte de enviar eu conseguir, mas manter até terminar o cadastro eu não conseguir. Eu vou contar toda a história para ficar mais claro possível.
       
      Eu precisei implementar um Upload de qualquer imagem ou PDF na página de solicitar compras. O site utiliza AngularJS, a primeira versão do Angular. Eu tentei fazer sem depender de PHP, mas na internet achava só a parte de Front-End e ninguém sabia fazer no Back-End. Então eu resolvi fazer com PHP mesmo.
       
      Nó código PHP, ele aceita todos as extensões de imagens mais o PDF e é possível envia-los todos de uma vez na quantidade que quiser. Todos os arquivos serão renomeados, contendo no nome o ID do usuário logado pego pela função javascript, o dia do mês, o mês, o ano, o dia da semana, a hora, o minuto, o segundo, se é AM ou PM e uma numeração aleatório. O arquivo PDF vai continuar sendo PDF e todas as imagens serão JPG. No final, todos serão enviados para uma pasta chamada upload.
       
      Só que agora eu preciso jogar de volta para página para salvar os novos nomes dos arquivos para continuar o cadastro da solicitação de compras. Como AngularJS utiliza Javascript, eu tentei usa-lo dentro do PHP utilizando EOF, mas não tive resultado. Eu só consigo com HTML com as diretivas do AngularJS. Na parte do API, nos atributos, eu declarei "nomeArquivo: []," , para salvar os nomes dos arquivos.
       
      Seguem o código.
      <div class="row"> <div class="col-sm-12 col-md-6 "> <div class="upload_form_cont"> <form id="upload_form" enctype="multipart/form-data" method="post" action="/profile-upload"> <div> <div><label for="image_file">Selecione o arquivo de imagem</label></div> <div><input type="file" name="image_file" id="image_file" accept="image/*" onchange="fileSelected();" /></div> </div> <div> <input type="button" value="Upload" onclick="startUploading()" /> </div> <div id="fileinfo"> <div id="filename"></div> <div id="filesize"></div> <div id="filetype"></div> <div id="filedim"></div> </div> <div id="error">Você deve selecionar apenas arquivos de imagem válidos!</div> <div id="error2">Ocorreu um erro ao enviar o arquivo</div> <div id="abort">O upload foi cancelado pelo usuário ou o navegador interrompeu a conexão</div> <div id="warnsize">Seu arquivo é muito grande. Não podemos aceitar isso. Selecione arquivos pequenos</div> <div id="progress_info"> <div id="progress"></div> <div id="progress_percent">&nbsp;</div> <div class="clear_both"></div> <div> <div id="speed">&nbsp;</div> <div id="remaining">&nbsp;</div> <div id="b_transfered">&nbsp;</div> <div class="clear_both"></div> </div> <div id="upload_response"></div> </div> </form> </div> </div> </div> upload.php
      <?php function bytesToSize1024($bytes, $precision = 2) { $unit = array('B','KB','MB'); return @round($bytes / pow(1024, ($i = floor(log($bytes, 1024)))), $precision).' '.$unit[$i]; } //Pega o id do usuário logado $id_url = $_GET['id']; // Numero de campos de upload $numeroCampos = count($_FILES['image_file']['name']); // Tamanho máximo do arquivo (em bytes) $tamanhoMaximo = 1024*1024*2; // Extensões aceitas $extensoes = array(".jpg", "jpeg", ".gif", ".png", ".pdf", ".bmp", ".pdf", ".tiff"); //Local da pasta $_UP['pasta'] = '../upload/'; $substituir = false; for ($i = 0; $i < $numeroCampos; $i++) { // Informações do arquivo enviado $sFileName = $_FILES['image_file']['name'][$i]; $sSize = $_FILES['image_file']['size'][$i]; $sFileSize = bytesToSize1024($sSize, 1); $nomeTemporario = $_FILES['image_file']['tmp_name'][$i]; // Verifica se o arquivo foi colocado no campo if (!empty($sFileName)) { $erro = false; // Verifica se o tamanho do arquivo é maior que o permitido if ($sSize > $tamanhoMaximo) { $erro = "O arquivo " . $sFileName . " não deve ultrapassar " . $tamanhoMaximo. " bytes"; } // Verifica se a extensão está entre as aceitas elseif (!in_array(strrchr($sFileName, "."), $extensoes)) { $erro = "A extensão do arquivo <b>" . $sFileName . "</b> não é válida"; } // Verifica se o arquivo existe e se é para substituir elseif (file_exists($_UP['pasta'] . $sFileName) and !$substituir) { $erro = "O arquivo <b>" . $sFileName . "</b> já existe"; } else{ //Pega a extensão do arquivo $TipoExtensao = pathinfo($sFileName, PATHINFO_EXTENSION); // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta // Primeiro verifica se deve trocar o nome do arquivo $unixTime = time(); $timeZone = new \DateTimeZone('America/Sao_Paulo'); $time = new \DateTime(); $time->setTimestamp($unixTime)->setTimezone($timeZone); $formattedTime = $time->format('d-m-Y_l_h-i-s-a'); $aleatorio = rand(); if($TipoExtensao == 'pdf'){ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.pdf'; }else{ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.jpg'; } // Depois verifica se é possível mover o arquivo para a pasta escolhida if (move_uploaded_file($nomeTemporario, $_UP['pasta'] . $nome_final)) { // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo echo "Upload do arquivo ".$sFileName." foi efetuado com sucesso!"; echo "</br>"; echo<<<EOF <p>Eu tentei implementar o retorno da página aqui!</p> <p></br></p> <p></br></p> EOF; } else { // Não foi possível fazer o upload, provavelmente a pasta está incorreta echo "Não foi possível enviar o arquivo, tente novamente"; echo "</br>"; } } } else { echo "Selecione algum arquivo de imagem ou PDF para fazero upload."; } } ?>  
    • By Danilo CS
      Olá
      Uma das formas que encontrei para incluir nosso próprio PHP nas páginas Wordpress foi por meio desse tutorial
       https://www.icloud.com.br/2357/criar-uma-pagina-no-site-wordpress-com-um-arquivo-php
       
      Mas um colega disse que essa técnica não é segura. Você concorda com isso?
       
      <?php /* Template Name: Nome da Página */ ?> <?php get_header(); ?>  
    • By belann
      Olá!
       
      Estou tentando fazer upload de arquivo e estou tendo problemas com as variáveis dá o erro: Notice: Undefined index: fileimg 
      Notice: Undefined index: uploadfile :
       
      O código segue abaixo
      html
      <input type="file" accept="image/*" name="fileimg" id="lerarq" class="jump"> php
      <?php $uploaddir = "imagem/";   if (isset($_POST)) {       $uploadfile = $uploaddir . basename($_FILES["fileimg"]["name"]);     $imgFileType = strtolower(pathinfo($uploadfile,PATHINFO_EXTENSION));     $checkimg = getimagesize($_FILES["uploadfile"]["tmp_name"]);     if($check !== false) {         if (!file_exists($target_file)) {             if ($_FILES["fileToUpload"]["size"] <= 500000) {                         if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $uploadfile)) {                     echo "Arquivo válido e enviado com sucesso.\n";                 } else {                     echo "Possível ataque de upload de arquivo!\n";                 }             } else {               echo "Arquivo muito grande";             }           } else {           echo "Arquivo já existe";         }     } else {        echo "Arquivo não é uma imagem";     }     } else {       echo "Selecione uma imagem" . $arquivo; }   ?>
    • By Marceloely
      Eu gostaria de saber como fazer para preencher automaticamente(pré populado) uma página de pagamentos a partir dos dados inseridos em uma página anterior pelo plugin do contact form 7 do wordpress
       
      Os campos até são preenchidos, mas não com a informação inserido no formulário mas sim com a id mesmo que coloquei na URL
        
      <label> Seu nome
          [text nome id:nome class:nome] </label>
      <label> Seu DDD
      [tel DDD id:DDD class:DDD]</label>
      <label> Seu Celular
      [tel celular id:celular class:celular]</label>
      <label> Seu e-mail
      </label>
      <label> Assunto
          [text* your-subject] </label>
      <label> Sua mensagem (opcional)
          [textarea your-message] </label>
      [submit "Enviar"]
      <script>
       document.addEventListener('wpcf7mailsent', function (Event) {
         location = 'https://pay.hotmart.com/A48773288I?ap=5181&name=id:nome&phoneac=id:ddd&phonenumber=id:celular&email=id:email';
       }, false);
      </script>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.