Jump to content
Fórum Script Brasil
  • 0

Problema com Query


Anderuimm

Question

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?

Edited by Anderuimm
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Anderuimm
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...