Zig 0 Denunciar post Postado Junho 19, 2005 Eu tenho os seguinte código cadastrar_busca.php PHP [*] [*]echo "<h1>Cadastramento de busca para PortalMasters</h1>"; [*]echo "<form action='inserir_busca.php' method='post'>"; [*]echo "Nome:<input name='nome' type='text' size=20><br>"; [*]echo "Descrição:<br> <textarea type='text' name='dados' rows=10 rols=60></textarea><br>"; [*]echo "<input type='submit' value='Enviar'>"; [*]echo "<hr><br>"; inserir_busca.php PHP [*] [*]$conexao = mysql_connect("localhost", "root", "")or die(mysql_error()); [*]$bd = mysql_select_db("busca", $conexao) or die(mysql_error()); [*]$sql = "INSERT INTO buscas (nome, dados) VALUES ('$nome', '$dados')"; [*]$query = mysql_query($sql, $conexao); [*]echo "<h6>Busca cadastrada com sucesso</h6>"; [*] só q tá aparecendo os erros Notice: Undefined variable: nome in D:\Servidor\paginas\inserir_busca.php on line 5 Notice: Undefined variable: dados in D:\Servidor\paginas\inserir_busca.php on line 5 Busca cadastrada com sucesso QUal seria o erro no script? Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Junho 19, 2005 Ao invés de $nome, usa $_POST["nome"]; Compartilhar este post Link para o post Compartilhar em outros sites
Zig 0 Denunciar post Postado Junho 19, 2005 Eu fiz isso man PHP [*] [*]$sql = "INSERT INTO buscas (nome, dados) VALUES ($_POST["nome"], $_POST["dados"])" [*] Só q apareceu o erro Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in D:\Servidor\paginas\inserir_busca.php on line 5 Agora assim man, ele tá colocando os dados no banco de dados, mas só q os dados ficam em branco. E ñ sei pq Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 19, 2005 cadastrar_busca.php PHP [*]<h1>Cadastramento de busca para PortalMasters</h1> [*]<form action="inserir_busca.php" method="post"> [*]Nome:<input name="nome" type="text" size="20"><br> [*]Descrição:<br> <textarea type="text" name="dados" rows="10" rols="60"></textarea><br> [*]<input type="submit" value="Enviar"> [*]<hr><br> inserir_busca.php PHP [*]<? [*]$conexao = mysql_connect("localhost", "root", "")or die(mysql_error()); [*]$bd = mysql_select_db("busca", $conexao) or die(mysql_error()); [*] [*]$nome = $_POST["nome"]; [*]$dados = $_POST["dados"]; [*] [*]if ($nome == ""){ [*]$erros .= "Você não digitou o nome do site"; [*]} [*]if ($dados == ""){ [*]$erros .= "Você não digitou os dados do site"; [*]} [*] [*]if ($erros == ""){ [*]$inseri = mysql_query("INSERT INTO buscas (nome, dados) VALUES ('$nome', '$dados')", $bd) or die (mysql_error()); [*] [*]if ($inseri == 1){ [*]?><h6>Busca cadastrada com sucesso</h6><? [*]}else{ [*]?><h6>Erro no servidor</h6><? [*]} [*]}else{ [*]?>Ocorreram os seguintes erros: <?=$erros?><? [*] [*]mysql_close($conexao); [*]} [*]?> Tenta assim Obs: Sempre que possivel, faça uma depuração completa dos erros, pois se acontecer algum erro fica mais facil de você descobrir aonde está. ^_^ como eu fiz na linha 18 com o if verificando se foi possivel inserir os dados E para que isso em outro bd??? Era só fazer em outra tabela simplifica mais o código http://forum.imasters.com.br/public/style_emoticons/default/grin.gif -------- Opa tinha um erro na conexão para inserir os dados mais arrumei Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Junho 19, 2005 PHP [*]$sql = "INSERT INTO buscas (nome, dados) VALUES ('{$_POST["nome"]}', '{$_POST["dados"]}')"; vQv Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 19, 2005 Há, só para completar, se você quiser diminuir o numero de arquivos, só você colocar os 2 no mesmo arquivo. Nome do arquivo: inserir_busca.php PHP [*]<? [*]if (!isset($_POST["enviado"])){ [*]?> [*]<h1>Cadastramento de busca para PortalMasters</h1> [*]<form action="inserir_busca.php" method="post"> [*]Nome:<input name="nome" type="text" size="20"><br> [*]Descrição:<br> <textarea type="text" name="dados" rows="10" rols="60"></textarea><br> [*]<input type="hidden" value="enviado" name="enviado" /> [*]<input type="submit" value="Enviar"> [*]<hr><br> [*]<? [*]}else{ [*]$conexao = mysql_connect("localhost", "root", "")or die(mysql_error()); [*]$bd = mysql_select_db("busca", $conexao) or die(mysql_error()); [*] [*] [*]$nome = $_POST["nome"]; [*]$dados = $_POST["dados"]; [*] [*]if ($nome == ""){ [*]$erros .= "Você não digitou o nome do site"; [*]} [*]if ($dados == ""){ [*]$erros .= "Você não digitou os dados do site"; [*]} [*] [*]if ($erros == ""){ [*]$inseri = mysql_query("INSERT INTO buscas (nome, dados) VALUES ('$nome', '$dados')", $bd) or die (mysql_error()); [*] [*]if ($inseri == 1){ [*]?><h6>Busca cadastrada com sucesso</h6><? [*]}else{ [*]?><h6>Erro no servidor</h6><? [*]} [*]}else{ [*]?>Ocorreram os seguintes erros: <?=$erros?><? [*] [*]mysql_close($conexao); [*]} [*]} [*]?> :) Compartilhar este post Link para o post Compartilhar em outros sites
Zig 0 Denunciar post Postado Junho 19, 2005 Valeu man funfou descente consegui, agora o sistema ñ rola os resultados busca.php PHP [*]<? [*]$conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); [*]$db = mysql_select_db("busca",$conexao) or die(mysql_error()); [*] [*]echo "<form name='busca' method='post' action='resultado_busca.php'>"; [*]echo"Buscar: <input type='text' size=40 name='palavra'>"; [*]echo "<input type=submit value=Buscar>"; [*]echo "</form>"; [*]?> resultado_busca.php PHP [*] $conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); [*] $db = mysql_select_db("busca",$conexao) or die(mysql_error()); [*] [*]if(!empty($HTTP_POST_VARS['$palavra'])) { [*]$palavra = str_replace(" ", "%", $HTTP_POST_VARS[$palavra]); [*]$sql = "SELECT * FROM buscas LIKE '%palavra%' ORDER BY id DESC"; [*] [*]$query = mysql_query($sql); [*]$resultado = mysql_num_rows($sql); [*] [*]echo "<h6>Sua busca retornou <b>$resultado</b> resultado</h6><br>"; [*] [*]while(mysql_fetch_array($query)){ [*]echo "<br>"; [*]echo $sql[buscas]."<br/>"; [*]} [*]} [*] gera uma pagina em branco, tipo eu pesquiso por fireworks ele tem q buscar na tabela buscas algo relacionado com o fireworks. (fiz um teste, coloquei um artigo com texto fireworks) Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 19, 2005 Você tinha esquecido de colocar o nome do campo na query Errado LIKE '%$palavra%'Certo WHERE campo LIKE '%$palavra%'E você ta utilizando errado o whilepara utilizar $variavel[1] precisa ser mysql_fetch_row não mysql_featch_array E dentro do colchete não iria o nome da tabela e sim a linha (ou coluna) que é o dado no bd ex ID | NOME | DADOS id = linha/coluna 1 nome = linha/coluna 2 dados = linha/coluna3 $variavel[1]; -> Retorna id $variavel[2]; -> Retorna nome $variavel[3]; -> Retorna dados Já o mysql_fetch_array você vai armazenar em uma variavel $variavel = mysql_fetch_array($query); dai você vai utilizar esta variavel como uma array de matrizes trazendo o nome do campo e armazenando na variavel, e nesta variavel você pode colocar o nome do campo para facilitar. Não entendeu?? $variavel = mysql_fetch_array($query); $nome = $variavel["nome"]; $dados = $variavel["dados"]; Agora se entendeu né, :) Tenta esse código PHP [*]<? [*]//============================================================================// [*]// Conexão [*]$conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); [*]$db = mysql_select_db("busca",$conexao) or die(mysql_error()); [*] [*]//============================================================================// [*]// Verificar palavra buscada [*]if(!empty($HTTP_POST_VARS['$palavra'])) { [*]$palavra = str_replace(" ", "%", $HTTP_POST_VARS[$palavra]); [*]$procura = mysql_query("SELECT * FROM buscas where nome LIKE '%$palavra%' or dados LIKE '%$palavra%' ORDER BY id DESC"); [*] [*]$total = mysql_num_rows($sql); [*] [*]echo "<h6>Sua busca retornou <b>$total</b> resultado</h6><br>"; [*] [*]while($hp = mysql_fetch_array($procura)){ [*]$nome = $hp["nome"]; [*]$dados = $hp["dados"]; [*] [*]echo "<br>"; [*]echo $nome . "|" . $dados; [*]} [*]} [*] [*]?> Dica: Quando você for utilizar paginação, ou seja próxima pagina, anterior e tal. Você vai precisar gravar a variavel palavra em uma session, se não ele vai retornar assim. Pagina atual $procura = mysql_query("SELECT * FROM buscas LIKE nome = '%$palavra%' or dados = '%$palavra%' ORDER BY id DESC"); Próxima $procura = mysql_query("SELECT * FROM buscas Where ORDER BY id DESC"); Caso não souber mecher com Session Clique Aqui Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Junho 19, 2005 PHP [*]$sql = "SELECT * FROM buscas WHERE campo LIKE '%palavra%' ORDER BY id DESC"; Aonde está escrito campo você troca pelo nome do campo no qual será feita a varredura. Compartilhar este post Link para o post Compartilhar em outros sites
Zig 0 Denunciar post Postado Junho 20, 2005 Valeu galera, estou programando a poko tempo. Muita boa explicação nick171, agora o problema continua.O resultado_busca.php ñ tá gerando o resultado. Tenho no tabela nome = Apostila Fireworks, peço pra procurar apostila e ñ gera nada fica em branco o resultado Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 20, 2005 Posta o código ai pra eu ver como tá Compartilhar este post Link para o post Compartilhar em outros sites
heliosal 0 Denunciar post Postado Junho 20, 2005 Sendo $palavra uma variável o código fika assim eu acho: PHP [*]$procura = mysql_query("SELECT * FROM buscas where nome LIKE '%$palavra%' or dados LIKE '%$palavra%' ORDER BY id DESC"); alteração: %palavra% por %$palavra% ou então para ficar mais seguro em raleção a erro de variável: PHP [*]$procura = mysql_query("SELECT * FROM buscas where nome LIKE '%".$palavra."%' or dados LIKE '%".$palavra."%' ORDER BY id DESC"); alteração: '%$palavra%' por '%".$palavra."%' Bem ... espero ter ajudados http://forum.imasters.com.br/public/style_emoticons/default/joia.gif ECONOMIZANDO POSTERS http://forum.imasters.com.br/public/style_emoticons/default/joia.gif PHP [*]<? [*]//============================================================================// [*]// Conexão [*]$conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); [*]$db = mysql_select_db("busca",$conexao) or die(mysql_error()); [*] [*]//============================================================================// [*]// Verificar palavra buscada [*]if(!empty($_POST[palavra])) { [*]$palavra = eregi_replace(" ", "%", $_POST[palavra]); [*]$procura = mysql_query("SELECT * FROM buscas where nome LIKE '%".$palavra."%' or dados LIKE '%".$palavra."%' ORDER BY id DESC"); [*] [*]$total = mysql_num_rows($sql); [*] [*]echo "<h6>Sua busca retornou <b>$total</b> resultado</h6><br>"; [*] [*]while($hp = mysql_fetch_array($procura)){ [*]$nome = $hp["nome"]; [*]$dados = $hp["dados"]; [*] [*]echo "<br>"; [*]echo "$nome | $dados"; [*]} [*]} [*] [*]?> o codigo do nick171 com algumas correções http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 20, 2005 Putz ó, nem vi que deixei sem variavel na query, vlw ai heliosalÉ que eu fiz em cima do que o T!T! C@rtm@n fez, nem percebi o erro, ja editei lá o meu.Fui ver agora, até o Justice errou, heheheSó queria saber porque trocar '%$palavra%' por '%".$palavra."%' ???Sem aspas duplas também funciona muito bem.Sem falar que pode acontecer da pessoa colocar '%".$palavra."%' e esquecer de adicionar o .(ponto) '%"$palavra"%' pq, assim não irá funcionar, e ela pode ficar quebrando a cabeça do mesmo jeito. Compartilhar este post Link para o post Compartilhar em outros sites
heliosal 0 Denunciar post Postado Junho 20, 2005 Putz ó, nem vi que deixei sem variavel na query, vlw ai heliosal É que eu fiz em cima do que o T!T! C@rtm@n fez, nem percebi o erro, ja editei lá o meu. Só queria saber porque trocar '%$palavra%' por '%".$palavra."%' ??? Sem aspas duplas também funciona muito bem. Sem falar que pode acontecer da pessoa colocar '%".$palavra."%' e esquecer de adicionar o .(ponto) '%"$palavra"%' pq, assim não irá funcionar, e ela pode ficar quebrando a cabeça do mesmo jeito. <{POST_SNAPBACK}> beleza manow esse erros acontecem :) ... e vou responder a tua pergunta ;) . Eu sei q assim '%$palavra%' funfa muito bem, mas como diz o velho deitado "Gato esqualdado tem medo de água quente", outro dia quebrei foi muito a cabeça pq tinha certeza absoluta q o codigo estava correto, foi quando me deu na telha de fazer dessa segunda forma q mostrei ('%".$palavra."%'), ai o codigo funfou .... então entendo a sua pergunta muito bem http://forum.imasters.com.br/public/style_emoticons/default/joia.gif e espero q entenda a minha resposta ... rs falow Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 20, 2005 Putz ó, nem vi que deixei sem variavel na query, vlw ai heliosal É que eu fiz em cima do que o T!T! C@rtm@n fez, nem percebi o erro, ja editei lá o meu. Só queria saber porque trocar '%$palavra%' por '%".$palavra."%' ??? Sem aspas duplas também funciona muito bem. Sem falar que pode acontecer da pessoa colocar '%".$palavra."%' e esquecer de adicionar o .(ponto) '%"$palavra"%' pq, assim não irá funcionar, e ela pode ficar quebrando a cabeça do mesmo jeito. <{POST_SNAPBACK}> beleza manow esse erros acontecem :) ... e vou responder a tua pergunta ;) . Eu sei q assim '%$palavra%' funfa muito bem, mas como diz o velho deitado "Gato esqualdado tem medo de água quente", outro dia quebrei foi muito a cabeça pq tinha certeza absoluta q o codigo estava correto, foi quando me deu na telha de fazer dessa segunda forma q mostrei ('%".$palavra."%'), ai o codigo funfou .... então entendo a sua pergunta muito bem http://forum.imasters.com.br/public/style_emoticons/default/joia.gif e espero q entenda a minha resposta ... rs falow <{POST_SNAPBACK}> hehe, socegado cara. Bom, mas diferença não vejo nenhuma, afinal o uso é sempre o mesmo, a não ser que dependa da versão do php. Mas comigo nunca deu problema como este. Mas pelo menos ja sei, se algum dia não estiver funcionando, vou tentar assim. Mas enquanto isso não acontece, vou continuar do meu jeito http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Compartilhar este post Link para o post Compartilhar em outros sites
Zig 0 Denunciar post Postado Junho 20, 2005 Muito boa explicação de vcs três. Agora a busca rolou só q apresentou algumas noticies (já ñ basta tanta coisa ne) olha os erros Notice: Use of undefined constant palavra - assumed 'palavra' in D:\Servidor\paginas\resultado_busca.php on line 9 Notice: Use of undefined constant palavra - assumed 'palavra' in D:\Servidor\paginas\resultado_busca.php on line 10 Notice: Undefined variable: sql in D:\Servidor\paginas\resultado_busca.php on line 13 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Servidor\paginas\resultado_busca.php on line 13 Sua busca retornou resultado Vou tentar resolver esse sozinho, espero conseguir, mas se vcs (que já manjam) puderem responder eu fico agradecido e muito agradecido http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 20, 2005 Erros do tipo NOTICE Notícia em tempo de execução. Indica que o script encontrou alguma coisa que pode indicar um erro, mas que também possa acontecer durante a execução normal do script. -------------------------------------------------------------------------------------- Erro na linha 9: Tava com apóstrofo na variavel ao invez de aspas duplas PHP [*]$variavel = "Teste"; [*]echo $variavel; // imprime teste [*]echo "$variavel"; // imprime teste [*]echo '$variavel'; // imprime $variavel Erro na linha 10: Não sei usar direito o eregi_replace, mas ele é muito complexo, não sei dizer porque não funcionou, mas para isso, você deveria utilizar o str_replace, que é mais simples de utilizar. PHP [*]$palavra = $_POST["palavra"]; [*]$palavra = str_replace(" ", "%", $palavra); obs: Não tem necessidade desta linha, mesmo sem ela ele faz a busca em frases. Erro na linha 13: Mais um errinho meu com eu falei anteriormente montei este script em cima do seu, e ja mudei as variaveis para uma maneira que na minha opinião fica mais faciu de trabalhar, dai acabei esquecendo de mudar esta, tava com a variavel errada dentro do mysql_num_rows Ao invez de mysql_num_rows($sql); tinha de ser mysql_num_rows($procura); Ou seja, o script não sabia aonde contar o total de linhas da tabela pos a variavel $sql não existe. :) Tenta assim: PHP [*]<? [*]//============================================================================// [*]// Conexão [*]$conexao = mysql_connect("localhost", "root", "") or die(mysql_error()); [*]$db = mysql_select_db("busca",$conexao) or die(mysql_error()); [*] [*]//============================================================================// [*]// Verificar palavra buscada [*]if(!empty($HTTP_POST_VARS["$palavra"])) { [*]$procura = mysql_query("SELECT * FROM buscas where nome LIKE '%$palavra%' or dados LIKE '%$palavra%' ORDER BY id DESC"); [*] [*]$total = mysql_num_rows($procura); [*] [*]echo "<h6>Sua busca retornou <b>$total</b> resultado</h6><br>"; [*] [*]while($hp = mysql_fetch_array($procura)){ [*]$nome = $hp["nome"]; [*]$dados = $hp["dados"]; [*] [*]echo "<br>"; [*]echo $nome . "|" . $dados; [*]} [*]} [*] [*]?> Há Cartman, e uma dica que sempre dou para quem se mata nos echo como no seu formulário la em cima!!! Não se mata colocando muitos echos assim. PHP [*]echo "<h1>Cadastramento de busca para PortalMasters</h1>"; [*]echo "<form action='inserir_busca.php' method='post'>"; [*]echo "Nome:<input name='nome' type='text' size=20><br>"; [*]echo "Descrição:<br> <textarea type='text' name='dados' rows=10 rols=60></textarea><br>"; [*]echo "<input type='submit' value='Enviar'>"; [*]echo "<hr><br>"; Se for um código html de no mínimo 120 linhas se tá ferrado cara. Sempre que quiser utilizar html no php basta fechar a tag php, e quando quiser utilizar php de novo reabre a tag. ex: PHP [*]<? // abri a tag para inserir o código php [*]$dados = mysql_query("SELECT * FROM usuario"); [*] [*]while ($hp = mysql_fetch_array($dados)){ [*]$nome = $hp["nome"]; [*]$sobrenome = $hp["sobrenome"]; [*] [*]?> // Fechei a tag php para inserir código html [*] [*]<!-- Sempre que quiser inserir uma variavel neste modo tem duas formas de fazer isso: --> [*] [*]<table width="256" border="0"> [*]<tr> [*]<td width="98">Nome:</td> [*]<td width="148"><? echo "$nome";?></td> [*] [*]<!-- 1ª Forma: Repare que aqui eu reabri a tag php, depois coloquei [*]o echo, para imprimir a variavel e fechei de novo, pode repara que é uma [*]variavel completa finalizando com ponto e virgula --> [*] [*]</tr> [*]<tr> [*]<td>Sobrenome</td> [*]<td><?=$sobrenome?></td> [*] [*]<!-- 2ª Forma: Está é na minha opinião a melhor opção, aqui eu reabri a [*]tag php, coloquei o sinal de = que da uma função de echo, ou seja, imprime a [*]variavel e fechei de novo, sem necessidade de aspas, ponto e virgula nem nada [*]do genero --> [*] [*]</tr> [*]</table> [*]<? // Abri novamente para voltar a mecher com php e para fechar a chave do while [*]} [*]?> Pode ver, é bem simples. Sem falar que da para editar direto no dreamweaver, frontpage e etc. ----------------------------------------------------------------------------------------- Bom, eu não sei quanto ao heliosal, mas eu ainda não manjo de php. Faz 2 meses e meio que comecei a mecher como ele. O Justice sabe o quanto to batalhando pra aprender. De tanto tópico que ja postei na WMOnline, tantos tutoriais que li, e da encheção de saco que do nele, hehehe http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Então, mas eu já aprendi bastante coisa, mas não é nem 1/10 do que tenho pra aprender ainda. :) Compartilhar este post Link para o post Compartilhar em outros sites
Zig 0 Denunciar post Postado Junho 21, 2005 Valeu muito man. Sei q todos estamos aprendendo e espero aprender mais c/ a galera do Imasters.Muito boa explicação, valeu msm Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Junho 21, 2005 Fmz, ai Cartman, precisar tamo ai cara!!! Compartilhar este post Link para o post Compartilhar em outros sites