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

Problema com Query


Anderuimm

Pergunta

Tenho uma query que deve selecionar por Codigo de Produto. Porem tenho um problema: alguns produtos tem caracteres especiais, como:

Considere-se que:

$_POST['cod_produto'] = M7+

e

M7 <> M7+

Quando executo essa query...

$prod=mysql_query("SELECT * FROM produtos WHERE cod_produto='{$_POST['cod_produto']}'") or die (mysql_error());

ele me retorna os valores da linha aonde esta o codigo M7.

Detalhe: produtos.cod_produto está como varchar(10), é chave primária na tabela e não posso altera-los porque eles são vinculados ao registro do produto junto à ANVISA.

Alguém sabe como posso solucionar este problema?

Editado por Anderuimm
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
faz um teste assim

$varCode = $_POST['cod_produto'];
echo $varCode;
Vê o que ele está imprimindo na tela, caso seja "M7" faça
$prod=mysql_query("SELECT * FROM produtos WHERE cod_produto='$varCode'") or die (mysql_error());
Ele funciona assim: tenho uma função que lista todos produtos em options dentro de um Select, tendo como value o cod_produto. Quando uma option é selecionada ele envia o cod_produto via $_GET pra dentro de um div que carrega um script mais abaixo na página. Segue em abaixo os codigos de ambas as paginas: Pagina que cria a lista
<form action="../../cli.php?d=detalha_pedido.php" method="POST" target="cliped" onsubmit="window.open('','cliped','width=770,height=580'); window.close();">
<title>Aldicionar Produto</title>
<?php
require_once( './conn.php' );
 //FILTRO DE PRODUTO
         
         $select_produtos=mysql_query("SELECT * FROM produtos WHERE obsoleto<>'1'", $link) or die (mysql_error());
         $array_mun=mysql_fetch_array($select_produtos);
         
         ?>


&lt;script type="text/javascript" src="js/scriptaculous/prototype.js"></script>
&lt;script type="text/javascript">
//<![CDATA[
function CarregaProdutos( SelectProduto, div_destino )
{
  // Nova requisição AJAX do prototype
  new Ajax.Request('add_produto_pedido2.php?produtoId=' + SelectProduto.value,
  {
    method     : 'get',
    onCreate:function()
    {
      $(div_destino).innerHTML = 'Carregando Produtos <img src="../../imagens/ajax_clock_small.gif" />';
    }, // onCreate
    onComplete : function(transport)
    {
      if(transport.status==200)
      {
        $(div_destino).innerHTML = transport.responseText;
      } // transport.status
    } // onComplete
  }); // ajax Request
} // function CarregaCidades
//]]>
</script>
<select id="produto" name="produto" onChange="CarregaProdutos(this, 'lista_produtos')">
  <option selected="selected" value="null">Selecione um Produto</option>
  <?php
  $Consulta = mysql_query( "SELECT * FROM produtos WHERE obsoleto<>'1' ORDER BY descricao ASC" ) or die (mysql_error());
  while ($Produto = mysql_fetch_object( $Consulta ) )
  {
    printf('<option value="%s">%s</option>', $Produto->cod_produto, $Produto->descricao );
  }
  ?>
</select>
  
<div id="lista_produtos">Selecione um Produto para ver suas Informacoes</div>   <!-- ESSE DIV É TRANSFORMADO QUANDO UMA OPTION É SELECIONADA -->
<input type="hidden" name="cod_cliente" value="<?php echo $_POST['cod_cliente']; ?>" >
<input type="hidden" name="cod_pedido" value="<?php echo $_POST['cod_pedido']; ?>" >

</form>
Aqui o que aparece dentro do DIV:
<?php
require_once ( './conn.php' );

  $cod_produto = $_GET['produtoId'];
  $Consulta = mysql_query( "SELECT * FROM produtos WHERE cod_produto='".$cod_produto."' " ) or die (mysql_error());
  #echo "SELECT * FROM produtos WHERE cod_produto='".$cod_produto."' ";
  $Produto = mysql_fetch_array( $Consulta );

echo "Produto: <b>{$_GET['produtoId']} - {$Produto['descricao']}</b><br>
Quantidade em Estoque: <b>{$Produto['unidades_estoque']}</b><br>
Reservas: <b>{$Produto['reservas']}</b><br>";
$DISP=$Produto['unidades_estoque']-$Produto['reservas'];
echo "Disponivel: <b>{$DISP}</b><br>";

  ?>
<input type="text" name="quantidade" />
<input type="hidden" name="valor" value="<?php echo $Produto['custo_unitario']; ?>"  />
<input type="hidden" name="reservas" value="<?php echo $Produto['reservas']; ?>"  />
<input type="hidden" name="add_produto_pedido" value="1"  />
<input type="hidden" name="descricao" value="<?php echo $Produto['descricao']; ?>"  />
<input type="hidden" name="disponivel" value="<?php echo $DISP; ?>"  />
<input type="hidden" name="cod_produto" value="<?php echo $cod_produto; ?>"  />
<input type="submit" value="Adicionar"  />

Resultado: Na lista de options ele mostra todos os codigos corretamente, mas o $_GET não recebe o tal sinal de '+' ou '-' ou outros caracteres especiais/matematicos que estejam no fim da string enviada.

Link para o comentário
Compartilhar em outros sites

  • 0

analisa ai parcero:

<?php

$id = $_GET['id'] = $var = "M7+";

if($id == "M7+"){
    echo "uai, to passando: ".$id;
}
else{
    echo "erro";
}
?>

<form method="post">
<input type="submit" value="testar" name="post">
<br>
<br>
<?php
if($_POST['post'])
{
    $recuperaID = $_GET['id'];
    echo "foi repurado: ".$recuperaID."</br>";
    echo "SELECT * FROM PRODUTOS WHERE COD_PRODUTO = '".$recuperaID."'";
}
?>
</form>

Link para o comentário
Compartilhar em outros sites

  • 0

Quando eu mando imprimir a variável que ele envia no $_GET ele não imprime o símbolo de '+' que está no código do produto.

PS.: a expressão que coloquei, $_POST['cod_produto'] = M7+, era apenas para mostrar qual valor que a variável assumia, e não uma expressão lógica contida no código. Na verdade ela seria $_GET ao invés de $_POST.

Tem jeito de ajeitar isso ou o $_GET não fuciona mesmo quando tem sinais matemáticos no valor da string?

-- EDIT --

Só pra deixar uma resolução, resolvi o problema adicionando um código numérico na tabela pra usar como referência como código quando tiver de usá-lo em $_GET, porqu eo GET não suporta valores que contenham símbolos lógicos ou matemáticos.

Editado por Anderuimm
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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...