PHP / Ajax - Ajax return does not bring when if ==

0

I have the page that returns an Ajax request.

By executing it by passing the parameters: grupoCategoria=1&subCat=302 in the expression: if($dados_Subcategorias[codigo_subcategoria] == $_GET[subCat]) is done option as slected .

On this page it works, but on the page that requests this page it does not contain the data that enters the if only the else .

<?php$grupoCategoria=$_GET['grupoCategoria'];$sql="SELECT codigo_categoria,codigo_subcategoria,nome_subcategoria,descricao_subcategoria
FROM Subcategorias WHERE codigo_categoria=$grupoCategoria and codigo_subcategoria in(302,308,309) order by nome_subcategoria ";
$res_Subcategorias = mysql_query($sql, $con_local);
$num_Subcategorias = mysql_num_rows($res_Subcategorias);
if($num_Subcategorias>0){
    echo "<select name='Subcategorias' id='Subcategorias'  >";
        echo "<option value=''>Selecione...</option>";
        for($j=0;$j<$num_Subcategorias;$j++){
            $dados_Subcategorias = mysql_fetch_assoc($res_Subcategorias);
//          echo "<option value='$dados_Subcategorias[codigo_subcategoria]'>".utf8_encode($dados_Subcategorias[nome_subcategoria])."</option>";
                if($dados_Subcategorias[codigo_subcategoria] == $_GET[subCat]){
                echo "<option selected='selected' value='$dados_Subcategorias[codigo_subcategoria]'>".utf8_encode($dados_Subcategorias[nome_subcategoria])."-".$dados_Subcategorias[codigo_subcategoria]."</option>";
                }
                else{

                    echo "<option value='$dados_Subcategorias[codigo_subcategoria]'>".utf8_encode($dados_Subcategorias[nome_subcategoria])."-".$dados_Subcategorias[codigo_subcategoria]."</option>";
                    }
      }
    echo "</select>";
}






  ?>
    
asked by anonymous 20.01.2015 / 23:00

2 answers

0

Code

<?php
$grupoCategoria = ($_GET['grupoCategoria'] ? filter_var($_GET['grupoCategoria'], FILTER_VALIDATE_INT) : NULL); 
$subcat = (!empty($_GET['subCat']) ? filter_var($_GET['subCat'], FILTER_VALIDATE_INT) : NULL);

$sql = "SELECT 
         codigo_categoria,codigo_subcategoria,nome_subcategoria,descricao_subcategoria
      FROM Subcategorias 
      WHERE 
         codigo_categoria = {$grupoCategoria} AND 
         codigo_subcategoria in(302,308,309) 
      ORDER BY nome_subcategoria ";

$res_Subcategorias = mysql_query($sql, $con_local);


$html = '';

if(mysql_num_rows($res_Subcategorias)>0){
   $html .= "<select name='Subcategorias' id='Subcategorias'  >";
   $html .= "<option value=''>Selecione...</option>";
   while ($dados_Subcategorias = mysql_fetch_assoc($res_Subcategorias)){
      //echo "<option value='{$dados_Subcategorias['codigo_subcategoria']}'>".utf8_encode($dados_Subcategorias[nome_subcategoria])."</option>";
      if($dados_Subcategorias['codigo_subcategoria'] == $subcat){
            $html .= "<option selected='selected' value='{$dados_Subcategorias['codigo_subcategoria']}'>".
                        utf8_encode($dados_Subcategorias['nome_subcategoria'])."-".$dados_Subcategorias['codigo_subcategoria'].
                     "</option>";
      } else {

         $html .= "<option value='{$dados_Subcategorias['codigo_subcategoria']}'>".
                     utf8_encode($dados_Subcategorias['nome_subcategoria'])."-".$dados_Subcategorias['codigo_subcategoria'].
                  "</option>";
      }
   }
    $html .= "</select>";
}

echo $html;

Explanation

Avoid possible errors:

 $grupoCategoria = ($_GET['grupoCategoria'] ? filter_var($_GET['grupoCategoria'], FILTER_VALIDATE_INT) : NULL); 

Filter the variable that will get into your SELECT , to avoid SQL Injection:

$grupoCategoria = filter_var($_GET['grupoCategoria'], FILTER_VALIDATE_INT);

Use keys in the variables contained in string to help PHP identify them:

codigo_categoria = {$grupoCategoria}

NEVER leave the index of the array without quotation marks, unless it is numeric:

$dados_Subcategorias['codigo_subcategoria']
$dados_Subcategorias[0]

Conclusion:

Your code has many errors, but the problem may not be in it, maybe your AJAX is not passing the parameters correctly. Also put your javascript doing the AJAX requisition in the question.

    
21.01.2015 / 13:30
1

Try to put quotes in the indexes of the arrays.

if($dados_Subcategorias['codigo_subcategoria'] == $_GET['subCat']){

    
20.01.2015 / 23:55