Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Zig

Erro c/ variavel

Recommended Posts

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

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

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

PHP

[*]$sql = "INSERT INTO buscas (nome, dados) VALUES ('{$_POST["nome"]}', '{$_POST["dados"]}')";

 

 

 

 

vQv

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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 while

para 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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.