Ilano 0 Denunciar post Postado Novembro 5, 2014 Olá pessoal, Estou iniciando em PHP e confesso estar sofrendo um bom bocado. Mas vamos lá. Tenho o seguinte objeto: function consulta($parametro, $pordem) { $sql = "SELECT Pais_Codigo, Pais_Nome "; $sql .= "FROM a001_paises "; if ($parametro != "") { $sql .= "WHERE ".$parametro; } if ($pordem != "") { $sql .= "ORDER BY ".$pordem; } else { $sql .= "ORDER BY Pais_Nome"; } $query = mysql_query($sql); while ($res = mysql_fetch_assoc($query)) { echo($res['Pais_Codigo'].". ".$res['Pais_Nome'].'<br />'); } } E tenho o formulário: <?php include('objeto/paises.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PÁGINA INICIAL</title> <link rel="stylesheet" type="text/css" href="estilos.css"/> </head> <body> <div class="div arredonda"> <div class="titulo">Consultar Países</div> <div> <form method="get" enctype="multipart/form-data" action=""> <div>Digite uma parte do nome do país:</div> <div><input name="busca" type="text" class="campos1" /></div> <div style="margin-top:10px;"><input name="btnConsulta" type="button" value="Consultar" class="button pesquisa" /></div> </form> </div> <div style="margin-top:20px;"> <?php $busca = $_GET['busca']; if (isset($busca)) { consulta("Pais_Nome LIKE '%".$busca."%'", "Pais_Nome"); } ?> </div> </div> </body> </html> Ao executar esta página, aparece o erro: Notice: Undefined index: busca in C:\xamp\htdocs\aulas\PaisConsulta.php on line 27 Onde estou errando? Grato, Ilano Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 <?php $busca = $_GET['busca']; if (isset($busca)) { consulta("Pais_Nome LIKE '%".$busca."%'", "Pais_Nome"); } ?> Nessa parte $busca = $_GET['busca'];, você está usando a variavel $_GET['busca'] sem ela ter sido criada. Tente fazer assim: <?php $busca = @$_GET['busca']; if (isset($busca)) { consulta("Pais_Nome LIKE '%".$busca."%'", "Pais_Nome"); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Novembro 5, 2014 Não é um erro é um avisoUndefined index: busca quer dizer que $_GET['busca']; esta sem valorse $_GET['busca'] você pega da url e na url não tiver o parâmetro aparece isso.site.com?busca=chilesite.com : aki ao tentar $busca = $_GET['busca']; terá um avisovocê pode trocar: $busca = $_GET['busca']; if (isset($busca)) { por if (isset( $_GET['busca'])) { $busca = $_GET['busca']; oudelisgar o avisooupor '@' na frente de $_GET['busca']; Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 Não é um erro é um aviso Undefined index: busca quer dizer que $_GET['busca']; esta sem valor Na realidade não é sem valor, é literalmente que não existe. Compartilhar este post Link para o post Compartilhar em outros sites
Ariane Magalhães 0 Denunciar post Postado Novembro 5, 2014 Bom dia sou nova aqui no fórum e não entendo nada de scripts rsrsrsrs, mas preciso da ajuda de vocês. Queria colocar esse formulário no meu site, mas quando clico no botão enviar dá uma mensagem de erro. :( <form action="admin/form/envio.php" method="post" name="f_contato" id="f_contato" onsubmit="MM_validateForm('Nome','','R','Email','','RisEmail','DDD','','RinRange11:99','Telefone','','R','DDD2','','NinRange11:99','Qtd_Pessoas','','RisNum','data_evento','','R','security_code','','R');return document.MM_returnValue"> <h2>Dados Pessoais</h2> <p> <span class="col1_form">Empresa: *</span> <input name="Nome" class="formcampo1" id="Nome" size="30" maxlength="250" type="text"> <br> <span class="col1_form">E-mail: *</span> <input name="Email" class="formcampo1" id="Email" size="30" maxlength="250" type="text"> <br> <span class="col1_form">DDD / Telefone 1: *</span> <input name="DDD" class="formcampo1" id="DDD" size="2" maxlength="2" type="text"> <input name="Telefone" class="formcampo3" id="Telefone" size="15" maxlength="15" type="text"> <br> <span class="col1_form">DDD / Telefone 2: </span> <input name="DDD2" class="formcampo1" id="DDD2" size="2" maxlength="2" type="text"> <input name="Telefone2" class="formcampo3" id="Telefone2" size="15" maxlength="15" type="text"> </p> <h2>Detalhes da Empresa</h2> <p><span class="col1_form">Regime Tributário: * </span> <select name="Regime Tributário" class="formcampo1" id="Regime Tributário"> <option value="" selected="selected">-- Selecione --</option> <option value="Simples Nacional">Simples Nacional</option> <option value="Lucro Presumido">Lucro Presumido</option> <option value="Lucro Real">Lucro Real</option> <option value="MEI">MEI</option> <option value="Não Sei">Não Sei</option> </select> <br> <span class="col1_form">Quantidade de Funcionários: </span> <input name="Qtd_Func" class="formcampo1" id="Qtd_Func" size="5" maxlength="5" type="text"> <p><span class="col1_form">Finalidade do Orçamento * </span> <select name="Finalidade do Orçamento" class="formcampo1" id="Finalidade do Orçamento"> <option value="" selected="selected">-- Selecione --</option> <option value="Mudança de Contador">Mudança de Contador</option> <option value="Abertura de Empresa">Abertura de Empresa</option> </select> <br> <span class="col1_form">Como nos conheceu?</span> <select name="como_chegou" size="1" class="formcampo1"> <option selected="selected" value="">-- Selecione --</option> <option value="Indicação">Indicação</option> <option value="Google">Google</option> <option value="Outro_meio">Outro meio</option> </select> <br> <span class="col_form_captcha"><script type="text/javascript">document.write(constrcap());</script><img src="CONTATO_arquivos/captcha.jpg" name="capt" id="capt" align="middle" vspace="2"> <br> </span> <input name="security_code" class="formcampo1" id="security_code" onfocus="this.value=''" size="10" maxlength="10" type="text"> <span class="obsform"> Digite o código ao lado</span><br> </p><div class="clear_captcha"></div> <span class="col1_form"> <input name="tituloMensagem" id="tituloMensagem" value="Formulário de Orçamento" type="hidden"> </span> <input name="bt_envcont" class="formbt2 bordared1" id="bt_envcont" value="Enviar" onclick="return validaform(this,form,Periodo,Tipo_Cardapio,Tipo_de_evento,Espaco)" type="submit"> <input name="bt_limpcont" class="formbt1 bordared1" id="bt_limpcont" value="Limpar" type="reset"> <p></p> <h2><p class="tx_pequeno"><em><strong>ATENÇÃO:</strong> Campos com * são de preenchimento obrigatório </em></p></h2> </form> Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 Ariane Magalhães, não poste esse tipo de duvida nos tópicos de outros, crie um tópico novo com usa duvida Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Novembro 8, 2014 Olá pessoal, Obrigado pela atenção de todos e desculpem a demora em responder, mas sabem como é o dia-a-dia. Bom, o erro desapareceu. Mas não está retornando resultado algum. A tabela encontra-se populada. Será que tem algum problema com o objeto Consulta? Outra coisa, no objeto Consulta tem como, antes de ser executada, salvar a string sql para saber como está sendo executada? Estou desenvolvendo no Dreamweaver CS5. Tem como fazer um breakpoint? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 8, 2014 Pessoal, o "arroba" não! Que coisa feia! :P :no: O arroba serve pra prevenir erros que não podem ser testados de antemão, como serviços indisponíveis, IMAP etc. Isso poderia simplesmente ser resolvido com isset(). Falei sobre isso aqui: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#undef_index em suma: $busca = isset( $_GET['busca'] ) ? $_GET['busca'] : null; if ( $busca != null ) { // ... :thumbsup: Mais sobre o controverso arroba: http://rberaldo.com.br/boas-praticas-ao-programar-2/#arroba Quanto a não retornar resultado, como está seu código atual? Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Novembro 8, 2014 Olá Roberto, Obrigado por sua atenção. O objeo não foi alterado, continua como acima, só a página php onde fica o formulário está alterado: <?php include('objeto/paises.php');?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>PÁGINA INICIAL</title><link rel="stylesheet" type="text/css" href="estilos.css"/></head><body> <div class="div arredonda"> <div class="titulo">Consultar Países</div> <div> <form method="get" enctype="multipart/form-data" action=""> <div>Digite uma parte do nome do país:</div> <div><input name="busca" type="text" class="campos1" /></div> <div style="margin-top:10px;"><input name="btnConsulta" type="button" value="Consultar" class="button pesquisa" /></div> </form> </div> <div style="margin-top:20px;"> <?php $busca = isset( $_GET['busca'] ) ? $_GET['busca'] : null; if ( $busca != null ) { consulta(" Pais_Nome LIKE '%".$busca."%'", "Pais_Nome"); } ?> </div> </div></body></html> E quanto o action do form? Precisa ter alguma coisa lá? Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 9, 2014 como ficaria: function consulta($parametro, $pordem) { $sql = "SELECT Pais_Codigo, Pais_Nome "; $sql .= "FROM a001_paises "; $parametro = ($parametro !== "") ? "WHERE " . $parametro: ''; $pordem = ($pordem !== "") ? 'ORDER BY ' . $pordem :"ORDER BY Pais_Nome " ; $sql .= $pordem ." DESC "; $query = mysql_query($sql); while ($res = mysql_fetch_assoc($query)) { echo($res['Pais_Codigo'] . ". " . $res['Pais_Nome'] . '<br />'); } } executando: $busca = filter_input(INPUT_GET,'busca', FILTER_DEFAULT); if (isset($busca)) { echo consulta(" (Pais_Nome LIKE '%" . $busca . "%' ) ", "Pais_Nome"); } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 9, 2014 Só para fins de teste, dentro da função dê um echo nisto: echo "total: " . mysql_num_rows( $query ); Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Novembro 9, 2014 Bom dia galera! Fiz a alteração no objeto que o paulinhosupriano sugeriu mas parece brincadeira, não funciona, nem mesmo a função para contar as linhas sugerida pelo Web Developer (PHP) (Roberto Beraldo). Mas quando uso a função sem passar os parâmetros e a ordem, apenas echo consulta("", ""); aí traz tudo, inclusive a contagem das linhas. Alguém sabe o porque desse mistério? Abaixo, vai todos os objetos (conexao.php e paises.php) e a página (PaisConsulta.php) que deveria trazer os resultados. OBJETO CONEXAO.PHP: <?php function conexao() { $banco = 'familia'; $usuario = 'root'; $senha = ''; $host = 'localhost'; $porta = '3306'; $conn = mysql_connect($host, $usuario, $senha) or die ('Erro na rotina de conexão: '.mysql_error()); mysql_select_db($banco) or die ('Erro ao selecionar o banco de dados: '.mysql_error()); //As linhas abaixo servem para corrigir problemas com acentuação no banco de dados. mysql_query("SET NAMES ('utf8')"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_results=utf8"); } ?> OBJETO PAISES.PHP: <?php include('conexao.php'); conexao(); function consulta($parametro, $ordem) { $sql = "SELECT Pais_Codigo, Pais_Nome "; $sql .= "FROM a001_paises "; $parametro = ($parametro !== "") ? "WHERE " . $parametro: ''; $ordem = ($ordem !== "") ? 'ORDER BY ' . $ordem :"ORDER BY Pais_Nome " ; $sql .= $ordem; $query = mysql_query($sql); while ($res = mysql_fetch_assoc($query)) { echo($res['Pais_Codigo'] . ". " . $res['Pais_Nome'] . '<br />'); } echo "total: " . mysql_num_rows( $query ); } function incluir($nome) { if (mysql_query("INSERT INTO a001_paises (Pais_Nome) VALUES ('".$nome."');")) { return true; } else { return false; } } function alterar($codigo, $nome) { if (mysql_query("UPDATE a001_paises SET Pais_Nome = '".$nome."' WHERE Pais_Codigo = ".$codigo.";")) { return true; } else { return false; } } ?> PÁGINA PAISCONSULTA.PHP <?php include('objeto/paises.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PÁGINA INICIAL</title> <link rel="stylesheet" type="text/css" href="estilos.css"/> </head> <body> <div class="div arredonda"> <div class="titulo">Consultar Países</div> <div> <form method="GET" enctype="multipart/form-data" action=""> <div>Digite uma parte do nome do país:</div> <div><input name="busca" type="text" class="campos1" value="Brasil" /></div> <div style="margin-top:10px;"><input name="btnConsulta" type="button" value="Consultar" class="button pesquisa" /></div> </form> </div> <div style="margin-top:20px;"> <?php /* @$busca = isset( $_GET['busca'] ) ? $_GET['busca'] : null; if ( @$busca != null ) { consulta(" Pais_Nome LIKE '%".@$busca."%' ", "Pais_Nome"); } */ $busca = filter_input(INPUT_GET,'busca', FILTER_DEFAULT); if (isset($busca)) { echo consulta(" Pais_Nome LIKE '%" . $busca . "%' ", "Pais_Nome"); } ?> </div> </div> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 9, 2014 tente isto: function consulta($parametro, $ordem) { $sql = "SELECT Pais_Codigo, Pais_Nome "; $sql .= "FROM a001_paises "; $parametro = ($parametro !== "") ? "WHERE " . $parametro . " " : ''; $ordem = ($ordem !== "") ? 'ORDER BY ' . $ordem :"ORDER BY Pais_Nome " ; $sql .= $parametro; $sql .= $ordem; $query = mysql_query($sql) or exit( mysql_error() ); while ($res = mysql_fetch_assoc($query)) { echo($res['Pais_Codigo'] . ". " . $res['Pais_Nome'] . '<br />'); } echo "total: " . mysql_num_rows( $query ); } Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Novembro 9, 2014 Parece mentira pessoal, mas não executa. Fiz um teste passando um valor para a variável e consegui trazer o resultado da consulta. Mas do modo como estávamos querendo não consigo fazer. A única coisa que penso é que o objeto está correto. Está faltando alguma coisa na página PaisConsulta.php para que isso seja executado, pois no código já fiz tudo o que foi sugerido aqui. Já tentei colocar o código PHP dentro do form e ainda assim não foi executado. E agora? <?php /* @$busca = isset( $_GET['busca'] ) ? $_GET['busca'] : null; if ( @$busca != null ) { consulta(" Pais_Nome LIKE '%".@$busca."%' ", "Pais_Nome"); } $busca = filter_input(INPUT_POST,'busca', FILTER_DEFAULT); if (isset($busca)) { echo consulta(" Pais_Nome LIKE '%" . $busca . "%' ", "Pais_Nome"); } */ $busca = "Brasil"; echo consulta(" Pais_Nome LIKE '%" . $busca . "%' ", "Pais_Nome"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 10, 2014 Teste: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd"> <?php include('funcoes.php'); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PÁGINA INICIAL</title> <link rel="stylesheet" type="text/css" href="estilos.css"/> </head> <body> <div class="div arredonda"> <div class="titulo">Consultar Países</div> <div> <form method="get" enctype="multipart/form-data" action=""> <div>Digite uma parte do nome do país:</div> <div> <input name="busca" type="text" class="campos1" /></div> <div style="margin-top:10px;"> <input name="btnConsulta" type="submit" value="Consultar" class="button pesquisa" /></div> </form> </div> <div style="margin-top:20px;"> <?php $buscar = filter_input(INPUT_GET,'busca', FILTER_DEFAULT); if ( !empty($buscar) ) { $consulta = Select('a001_paises', "WHERE (Pais_Nome LIKE '%".$buscar."%') ORDER BY id DESC"); $totalRegistros= sizeof($consulta); if($totalRegistros === 0){ echo 'Não encontramos resultados, tente novamente.'; }else{ foreach($consulta as $Registros): echo $Registros['Pais_Codigo'] . ". " . $Registros['Pais_Nome'] . '<br />'; endforeach; } } ?> </div> </div> </body> </html> Arquivo Fucoes <?php define('HOST','localhost'); define('USER','root'); define('PASS',''); define('DBSA','test'); function Conectar(){ $pdo = new PDO('mysql:host='.HOST.';dbname='.DBSA.';', USER, PASS); return $pdo; } function Select($Tabela, $Where = null){ $pdo = Conectar(); $Condicao = ($Where != '') ? $Where : '' ; $sql = "SELECT * FROM {$Tabela} {$Condicao}"; $exeSQl = $pdo->prepare($sql); $exeSQl->execute(); $res = $exeSQl->fetchAll(PDO::FETCH_ASSOC); return $res; } Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Novembro 12, 2014 Olá paulinhosupriano, Cara, eu nem acredito! Funcionou. Porque da forma que eu fiz não estava dando certo? Vou ter que fazer a conexão em todas os objetos? Só tenho mais uma dúvida. Alguns caracteres agora estão como símbolos. No código atual onde coloco as linhas abaixo? //As linhas abaixo servem para corrigir problemas com acentuação no banco de dados. mysql_query("SET NAMES ('utf8')"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_results=utf8"); Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 12, 2014 Logo após a conexão com o DB Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 12, 2014 Modifique a função Conectar() conforme informado abaixo: function Conectar(){ $opcao = ; $pdo = new PDO('mysql:host='.HOST.';dbname='.DBSA.';', USER, PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8')); return $pdo; } Compartilhar este post Link para o post Compartilhar em outros sites