Ir para conteúdo
Fórum Script Brasil
  • 0

Codificaçao String para SQL


ighor10

Pergunta

Ola pessoal,

Tenho aqui uma duvida, já tentei de tudo e não consigo resolver.

Tenho uma pagina q vai buscar numa bd vários nomes, lista todos esses com um botão para apagar ao lado de cada um..

quando clicar nesse botão vai passar por get ou por post esse nome para uma outra pagina que ira remover todos os registos com esse nome da bd.

O meu problema e que estes nomes são importados de uma folha de cálculos do excel, e vem com uma codificaçao estranha, pois tenho a pagina codificada em utf-8, e quando vou buscar o nome na bd, basta fazer um htmlentites() para ficar normal, porem quando passo ele pra outra pagina, tanto por post quanto por get, passando com o htmlentites ou sem ele, na outra pagina fica codificado.

já tentei todas funçoes de codificaçao e nenhum funciona, logo, não consigo apagar da bd aquele nome.

Por exemplo.

Na bd -> Caça e Pesca

Depois de passar por url ou por post ->

Ca�a e Pesca

Ca�a e Pesca

Ca�a e Pesca

(um dos 3 dependendo do tipo de decodificaçao a utilizar)

Se alguém souber da uma ajuda.

Vou deixar aqui o codigo para ficar mais claro.

Obrigado.

// codigo que mostra os serviços (nomes) e cria a ligaçao para remoçao

$query=mysql_query("SELECT servico FROM `detalhe` group by servico order by servico", $con);


while ($dados=mysql_fetch_array($query)){

$a=htmlentities($dados['servico']);

echo"<tr style=\"background-color:#e5e5e5; border:solid #dddddd 1px\" onMouseOver=\"this.style.background='#e4f0e9';\" onMouseOut=\"this.style.background='#e5e5e5';\">

<td align='center'>$a</td>
<td align='center'><a href=\"removerservico.php?nome=$dados[servico]\"><img src='../images/apagar.png' border=0></a></td>

</tr>";
// codigo que deveria remover o servico (nome)
$nome=$_GET['nome'];

$query=mysql_query("DELETE from detalhe where servico like '$nome'", $con);

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Ola pessoal,

Hey kara...

Ca�a e Pesca

Ca�a e Pesca

Ca�a e Pesca

1. Tire fora o htmlentities de todos os lugares...

2. Tente padronizar, ou tudo ISO8859-1 ou tudo UTF-8

3. Se a 2 não for possível você deverá utilizar o utf8_decode( $string ) e o utf8_encode( $string )

while ($dados=mysql_fetch_array($query)){
//...
$a=utf8_encode($dados['servico']);
//...
$nome=utf8_decode( $_GET['nome'] );

$query=mysql_query("DELETE from detalhe where servico like '$nome'", $con);

[]'s

João Neto

Link para o comentário
Compartilhar em outros sites

  • 0

Era mesmo isso.

Brigadao..

Precisava desta funçao do encode..

Ajudou muito.

So fiz uma alteração ao que voce falou

Esse ta mesmo como voce falou.

while ($dados=mysql_fetch_array($query)){

$b=utf8_encode($dados['servico']);

echo"<tr style=\"background-color:#e5e5e5; border:solid #dddddd 1px\" onMouseOver=\"this.style.background='#e4f0e9';\" onMouseOut=\"this.style.background='#e5e5e5';\">

<td align='center'>$b</td>
<td align='center'><a href=\"removerservico.php?nome=$b\"><img src='../images/apagar.png' border=0></a></td>

</tr>";
Esse e que não.. aqui não coloquei o decode, pois quando ele faz o encode na pagina anterior, envia os dados direitos, como eu quero, quando faço o decode voltam a ficar codificados..
$nome=$_GET['nome'];

$query=mysql_query("DELETE from detalhe where servico like '$nome'", $con);

OBrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Afinal não resolveu o problema todo :(

Desculpa voltar aqui. mas esta soluçao resolveu o problema pros "ç" e pros caracteres especiais..

porem o meu problema maior esta em alguns dados que quando vem do excel vem com dois espaços.. por exemplo vem "Phone Ilimitado" ao invés de "Phone Ilimitado"

ai e q ta o problema.. ele vai pra base de dados normalmente, puxo da bd normalmente, mas pra enviar e q ta o problema..

já tentei um

$servico=str_replace(" ", "_", $servico);

antes de enviar pra bd. porem por mais q eu repita essa instruçao ele so limpa 1 espaço.. o outro já deve estar codificado...

Help please :s

Link para o comentário
Compartilhar em outros sites

  • 0
porem o meu problema maior esta em alguns dados que quando vem do excel vem com dois espaços.. por exemplo vem "Phone Ilimitado" ao invés de "Phone Ilimitado"

ai e q ta o problema.. ele vai pra base de dados normalmente, puxo da bd normalmente, mas pra enviar e q ta o problema..

já tentei um

$servico=str_replace(" ", "_", $servico);

Ok, tenta assim:

$str = "Teste  de    string com  vários  espaços onde     deveriam   ter apenas      um";
$str = preg_replace( "/\\s{2,}/" , " " , $str );

echo $str; //Teste de string com vários espaços onde deveriam ter apenas um

[]'s

J. Neto

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...