How to fix this Undefined Variable error?

Asked

Viewed 15,763 times

1

I’ve been trying to figure this whole php but I’ve done everything and nothing works. (It’s a visitor control system) Follow my codes below.

form-visitors(html in php). php

<!DOCTYPE html>
<?php
include_once ("./classes/visitante.classe.php.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
<title>Controle de Visitantes</title>
<style type="text/css">

<!--
.style1 {
color: #FF0000;
font-size: x-small;
}
.style3 {color: #0000FF; font-size: x-small; }
</style>
<!---->
</script>
</head>
 
<body>
		<form name="form-cadastrarVisitantes"  method="POST" >
		<form id="visitantes" name="visitantes" method="post" action="visitantes.php" >
		<table width="625" border="0">
		<tr>
		<td width="69">Nome:</td>
		<td width="546"> <input name="nome" type="text" placeholder="Insira o nome do cidadão" required="required" id="nome" size="70" maxlength="60" />
        <span class="style1">*</span></td>
		</tr>
		<tr>
		<td>RG:</td>
		<td><input name="rg" type="number" placeholder="999.999.999-99" required="required" id="rg" size="11" maxlength="11"/>
		<span class="style1">*</span></td>
		</tr>
		<tr>
		<td>Sexo:</td>
		<td><input name="sexo" type="radio" value="Masculino" checked="checked" />
		Masculino
        <input name="sexo" type="radio" value="Feminino" />
        Feminino <span class="style1">*</span>  </td>
		</tr>
		<tr>
		<td>Telefone:<td/>
        <input name="telefone" type="number" placeholder="(99)99999-9999" required="required" id="telefone" />
        <span class="style3">Apenas números</span> </td>
		</tr>
		<tr>
		<td>Estado:</td>
		<td><select name="estado" required="required" id="estado">
        <option>Selecione...</option>
        <option value="DF">DF</option>
        <option value="MG">MG</option>
        <option value="PR">PR</option>
        <option value="RJ">RJ</option>
        <option value="RS">RS</option>
        <option value="SC">SC</option>
        <option value="SP">SP</option>
        </select>
        <span class="style1">*</span></td>
		</tr>
	    <tr>
		<td>Cidade:</td>
		<td><input name="cidade" type="text" placeholder="Insira a cidade do cidadão" required="required" id="cidade" maxlength="20" />
        <span class="style1">*</span></td>
		</tr>
		<tr>
		<td>Endereco:</td>
		<td><input name="endereco" type="text" placeholder="Insira a rua do cidadão" required="required" id="endereco" maxlength="20" />
        <span class="style1">*</span></td>
		</tr>
		<tr>
		<td colspan="2"><p>
		
        <input name="cadastrar" type="submit" id="cadastrar"  value="Concluir o cadastro!" />
       
 
        <input name="limpar" type="reset" id="limpar" value="Limpar campos preenchidos!" />
		
		
         
 
        <span class="style1">Campos com * são obrigatórios!</span></p>
		<p>  </p></td>
		</tr>
	</form>
	</body>
			
	
		<?php
 
						if (isset($_POST["nome"]) ){
                        $id = 0;
						$nome = $_POST["nome"];
						$rg = $_POST["rg"];
						$telefone = $_POST["telefone"];
						$estado = $_POST["estado"];
						$cidade = $_POST["cidade"];
						$endereco = $_POST["endereco"];
						$sexo = $_POST["sexo"];
						$visitante = new Visitantes ($id, $nome, $rg, $telefone, $estado, $cidade, $endereco, $sexo);
						$visitante->cadastrarVisitante();
						
                    }
									
                  ?>
				  

	
  </table>
</html>

visitors.classe.php

<?php

	class Visitantes {
		
		private $id;
		private $nome;
		private $rg;
		private $telefone;
		private $estado;
		private $cidade;
		private $endereco;
		private $sexo;
		
		function __construct($id, $nome, $rg, $telefone, $estado, $cidade, $endereco, $sexo) 
		{
			$this->id = $id;
			$this->nome = $nome;
			$this->rg = $rg;
			$this->telefone = $telefone;
			$this->estado = $estado;
			$this->cidade = $cidade;
			$this->endereco = $endereco;
			$this->sexo = $sexo;
			
		}

			function setId($id) {
			$this->id = $id;
		}
			function setNome($nome) {
			$this->nome = $nome;
		}
			function setRg($rg) {
			$this->rg = $rg;
		}		
			function setTelefone($telefone) {
			$this->telefone = $telefone;
		}				
			function setEstado($estado) {
			$this->estado = $estado;
		}
			function setCidade($cidade) {
			$this->cidade = $cidade;
		}		
			function setEndereco($endereco) {
			$this->endereco = $endereco; 	
		}
			function setSexo($sexo) {
			$this->sexo = $sexo;	
		}
		
			function getId() {
			return $this->id;
		}
			function getNome() {
			return $this->nome;
		}
			function getRg() {
			return $this->rg;
		}
			function getTelefone() {
			return $this->telefone;
		}
			function getEstado() {
			return $this->estado;
		}
			function getCidade() {
			return $this->cidade;
		}
			function getEndereco() {
			return $this->endereco;
		}
			function getSexo() {
			return $this->sexo;
		}
		
		
		function cadastrarVisitante(){
			
	
	
							include ("conexao.php");		
			
			{
						
						$sql = "INSERT INTO visitantes (id, nome, rg, telefone, estado, cidade, endereco, sexo)
							VALUES ('$id', '$nome', '$rg', '$telefone', '$estado', '$cidade', '$endereco', '$sexo')";
							
							$query = mysqli_query($link,$sql) or die (mysqli_error($link));
							echo "Erro ao adicionar a DB.";
							

						echo '<script type="text/javascript">
						alert("Salvo com Sucesso!");
						window.history.go(-1);
						</script>';
						echo "<script>location.href='listarVisitantes.php';</script>"; 
						
						mysqli_close($link);
							
			}	
		}
	
		}
		function buscarVisitante($visitanteBuscado){
	
			try {
					
				$pdo = new PDO('mysql:host=localhost;port=80;dbname=visitantes', 'bernardo', 'qweqweqwe1');
				$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				
				$consulta = $pdo->query("SELECT id, nome, MASK(rg, '### ### ### ##'), telefone, estado, cidade, endereco, sexo FROM visitante");
		
				if($visitanteBuscado != ""){
					$consulta = $pdo->query("SELECT id, nome, rg, telefone, estado, cidade, endereco FROM visitante WHERE nome like '%".$visitanetBuscado."%'or cns like '%".$visitanteBuscado."%';");
				} 
				echo "<div class='panel panel-info'>";
				echo "<div class='panel-heading'>Visitante</div>";
				include_once ("C:/xampp/htdocs/recepcao/buscarVisitante.php");
				
				echo "<table class=table>";
				echo "<thead>";
				echo "<tr>";
				echo "<th>Nome</th>";
				echo "<th>RG</th>";
				echo "<th>Telefone</th>";
				echo "<th>Estado</th>";
				echo "<th>Cidade</th>";
				echo "<th>Endereco</th>";
				echo "<th>Sexo</th>";
				echo "<th>Editar</th>";
				echo "</tr>";
				echo "</thead>";
				echo "<tbody>";
				while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) {
				
					echo "<tr>";
					echo "<td>". $linha["nome"] ."</td>";
					echo "<td>". $linha["MASK(rg, '### ### ### ##')"] ."</td>";
					echo "<td>". $linha["telefone"] ."</td>";
					echo "<td>". $linha["estado"] ."</td>";
					echo "<td>". $linha["cidade"] ."</td>";
					echo "<td>". $linha["endereco"] ."</td>";
					echo "<td>". $linha["sexo"] ."</td>";
					echo "<td><a href='atualizarVisitante.php?id=$linha[id]'><button type='button' class='btn btn-default' aria-label='Left Align' >
					  <span class='glyphicon glyphicon-pencil' aria-hidden='true'></span>
					</button></a></td>";
					echo "</tr>";
					
				}
				echo "</tbody>";
				echo "</table>";
				echo "<div class='panel-footer panel-info'>
						<form name='form-index' method='POST'>
							<button type='button' class='btn btn-default' onClick='history.go(-1)' style='margin-left:10px;'>Voltar</button>
						</form>
					</div>";
				echo "</div>";
				
			} catch(PDOException $e) {
				echo 'Erro ao buscar';
				echo $e;
			}
		}
				
		function buscaVisitante () {
	
			try {
					
				$pdo = new PDO('mysql:host=localhost;port=80;dbname=visitas', 'bernardo', 'qweqweqwe1');
				$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
							
				$consulta = $pdo->query("SELECT id, nome, rg, telefone, estado, cidade, endereco, sexo FROM visitante WHERE id =".$this->id.";");
			
				echo "<form name='form-atualizar-Visitante' method='POST' >";
				
				while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) {
					echo "<div class='form-group'>";
					echo "<label for='nome'>Nome</label>";
					echo "<input type='text' class='form-control' id='nome' 0 aria-describedby='emailHelp' placeholder='' name='nome' value='". $linha['nome'] ."'>";
					echo "</div>";
					echo "<div class='form-group'>";
					echo "<label for='rg'>RG</label>";
					echo "<input type='text' class='form-control' id='rg' 0 aria-describedby='emailHelp' placeholder='' name='rg' value='". $linha['rg'] ."'>";
					echo "<label for='telefone'>Telefone</label>";
					echo "<input type='date' class='form-control' id='telefone' 0 aria-describedby='emailHelp' placeholder='' name='telefone' value='". $linha['telefone'] ."'>";
					echo "</div>";
					echo "<div class='form-group'>";
					echo "<label for='estado'>Estado</label>";
					echo "<input type='text' class='form-control' id='estado' 0 aria-describedby='emailHelp' placeholder='' name='estado' value='". $linha['estado'] ."'>";
					echo "</div>";
					echo "<div class='form-group'>";
					echo "<label for='cidade'>Cidade</label>";
					echo "<input type='text' class='form-control' id='cidade' 0 aria-describedby='emailHelp' placeholder='' name='cidade' value='". $linha['cidade'] ."'>";
					echo "</div>";
					echo "<div class='form-group'>";
					echo "<label for='endereco'>Endereco</label>";
					echo "<input type='text' class='form-control' id='endereco' 0 aria-describedby='emailHelp' placeholder='' name='endereco' value='". $linha['endereco'] ."'>";
					echo "</div>";
					echo "<div class='form-group'>";
					echo "<label for='sexo'>Sexo</label>";
					echo "<input type='text' class='form-control' id='sexo' 0 aria-describedby='emailHelp' placeholder='' name='sexo' value='". $linha['sexo'] ."'>";
					echo "</div>";
				}
				echo "<div class='panel-footer panel-info'>
						<form name='form-index' method='POST'>
							<button type='button' class='btn btn-info' onclick='atualizar()'>Salvar</button>
							<button type='button' class='btn btn-info' onClick='history.go(-1)' style='margin-left:10px;'>Voltar</button>
						</form>
					   </div>";
				echo "</form>";
				
				echo "<script type='text/javascript'>
						function atualizar() {
							var nome = document.getElementById('nome');
							var rg = document.getElementById('rg');
							var telefone = document.getElementById('telefone');
							var estado = document.getElementById('estado');
							var cidade = document.getElementById('cidade');
							var endereco = document.getElementById('endereco');
							var sexo = document.getElementById('sexo');
							var end = '?id=$this->id&&nome='+nome.value+'&rg='+rg.value+'&telefone='+telefone.value+'&telefone='+telefone.value+'&estado='+estado.value+'&cidade='+cidade.value+'&endereco='+endereco.value+'&sexo='+sexo.value;
							window.location.replace('./atualizarVisitante.php'+end);
						}
					</script>";

			} catch(PDOException $e) {
				echo 'Não foi possível encontrar este visitante!';
			}
		}
				
			function atualizarVisitante() {
			if (isset ( $this->id )) {
					
				try {
					$pdo = new PDO('mysql:host=localhost;port=80;dbname=visitas', 'bernardo', 'qweqweqwe1');
					$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				
					$stmt = $pdo->prepare('UPDATE visitante SET nome = :nome, rg = :rg, telefone = :telefone, estado = :estado, cidade = :cidade, endereco = :endereco, sexo = :sexo WHERE id = :id');
					$stmt->execute(array(
							':id' => $this->id,
							':nome' => $this->nome,
							':rg' => $this->rg,
							':telefone' => $this->telefone,
							':estado' => $this->estado,
							':cidade' => $this->cidade,
							':endereco' => $this->endereco,
							':sexo' => $this->sexo,
					));
					
					echo $stmt->rowCount();
					echo "
					<script>
						var mensage = alert('Visitante atualizado com sucesso!');
						window.location.replace('./listarVisitantes.php');
					</script>";		
				} catch(PDOException $e) {
					echo 'Error: ' . $e->getMessage();
				}
			}
		}
		
			function excluirVisitante($id) {
			if (isset( $id )) {
				
				try {			
				$pdo = new PDO('mysql:host=localhost;port=80;dbname=visitas', 'bernardo', 'qweqweqwe1');
				$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
				
				$stmt = $pdo->prepare('DELETE FROM visitante WHERE id = :id');
				$stmt->bindParam(':id', $id);
				$stmt->execute();		
				
				echo $stmt->rowCount();
				echo "
					<script>
						var mensage = alert('Visitante excluído com sucesso!');
						window.location.replace('./listarVisitantes.php');
					</script>";		
				} catch(PDOException $e) {
					echo 'Error: ' . $e->getMessage();
				}
			}
			
		}
 ?>

php connection.

<?php
$link = mysqli_connect('localhost', 'bernardo', 'qweqweqwe1', 'visitas');
if (!$link) {
    die('Erro ao conectar ao banco: ' . mysqli_error());
}
echo 'Conectado com sucesso! ';
?>

Do not notice the other PDO functions. I am focusing only on the Register Visitor.

Error:

Notice: Undefined variable: id in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: nome in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: rg in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: telefone in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: estado in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: cidade in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: endereco in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87

Notice: Undefined variable: sexo in C:\xampp\htdocs\recepcao\classes\visitante.classe.php.php on line 87
Duplicate entry '' for key 'rg'

2 answers

2


None of the variables passed in Insert exist. You must pass class attributes instead.

Change:

$sql = "INSERT INTO visitantes (id, nome, rg, telefone, estado, cidade, endereco, sexo)
VALUES ('$id', '$nome', '$rg', '$telefone', '$estado', '$cidade', '$endereco', '$sexo')";

To:

$sql = "INSERT INTO visitantes (id, nome, rg, telefone, estado, cidade, endereco, sexo)
VALUES ('$this->id', '$this->nome', '$this->rg', '$this->telefone', '$this->estado', '$this->cidade', '$this->endereco', '$this->sexo')";

1

Mine, I found that the error came from a trailer with error when using squeeze in the related encapsulation. type, was to be $this->valoredida; i put $this->$valormedida, ie was calling a non-existent variable, since to reference the class variable, you have to put the $this before and put the dollar only in the $this, was like this then:

$this->valormedida;

and if it was on set, it would be:

$this->valormedida = $valormedida

I hope I’ve helped.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.