How to Change Query Arrays by Query Selects in MySQL

1

I'm not sure how to change arrays by query in sql, in that code below I have an array with records I would like to know how to exchange the array $tabela_modelo by a select in MySQL using the same columns of array:

function get_marcas() {

// Aqui criamos um array bidimensional, que poderá vi do banco de
// dados da mesma forma
// basta você fazer um select * from tabela_marca -> a tabela_marca 
// deve conter: id_marca, ds_marca


$marcas = array(
        array('id_marca' => 11, 'ds_marca' => 'JW'),
        array('id_marca' => 1, 'ds_marca' => 'Transfer'),

        );
return $marcas;
}

function get_modelos($id_marca) {



// select * from tabela_modelo where id_marca = $id_marca 
// 



$tabela_modelo = array(
array('id_marca' => 1, 'id_modelo' => 1, 'ds_modelo' => 'Vectra'),
array('id_marca' => 1, 'id_modelo' => 2, 'ds_modelo' => 'Corsa'),
array('id_marca' => 1, 'id_modelo' => 3, 'ds_modelo' => 'Meriva'),
array('id_marca' => 2, 'id_modelo' => 4, 'ds_modelo' => 'Uno'),
array('id_marca' => 2, 'id_modelo' => 5, 'ds_modelo' => 'Tempra'),
array('id_marca' => 2, 'id_modelo' => 6, 'ds_modelo' => 'Pálio'),
array('id_marca' => 3, 'id_modelo' => 7, 'ds_modelo' => 'Ranger'),
array('id_marca' => 3, 'id_modelo' => 8, 'ds_modelo' => 'Eco'),
array('id_marca' => 3, 'id_modelo' => 9, 'ds_modelo' => 'Fiesta')
);

$modelo = array();
$cont = 0;
for($i=0; $i < count($tabela_modelo); $i++) {
    if($tabela_modelo[$i]['id_marca'] == $id_marca) {
        $modelo[$cont]['id_marca']= $tabela_modelo[$i]['id_marca'];
        $modelo[$cont]['ds_modelo'] = $tabela_modelo[$i]['ds_modelo'];
        $cont++;
    }
}
return $modelo;

}

 switch ($_POST['acao']) {
 case "exibeModeloSelect":
    $txt =  '<select name="id_motorista">';
    $txt .= '<option value="">Selecione o Motorista</option>';

    foreach(get_modelos($_POST['id_marca']) as $modelo) {
        $txt .= '<option value="'.$modelo['id_modelo'].'">' .   
  $modelo['ds_modelo'] . '</option>';   
    }

    $txt .= "</select>";

    echo $txt;
  break;
  }
    
asked by anonymous 04.09.2015 / 05:18

2 answers

2

For the example shown, I believe you just have to do the assignment in the array and return it at the end of the function, like this:

ctype_digit() checks if $id_marca is integer otherwise returns an empty array and sprintf() forces the formatting of sql, if %d to integer.

function get_marcas() {
   $conexao = get_conexao();
   $sql = "select * from tabela_marca";
   $result = mysql_query($sql, $conexao) or die(mysql_error($conexao));

   $marcas = array();
   while($row = mysql_fetch_assoc($result)){
      $marcas[] = $row;
   }
   return $marcas;
}

function get_modelos($id_marca) {
   if(!ctype_digit($id_marca)) return array();

   $conexao = get_conexao();

   $sql = sprintf("select * from tabela_modelo where id_marca = %d", $id_marca);
   $result = mysql_query($sql, $conexao) or die(mysql_error($conexao));

   $modelos = array();
   while($row = mysql_fetch_assoc($result)){
      $modelos[] = $row;
   }
   return $modelos;
}

Manual - sprinf

Manual - ctype_digit

    
07.09.2015 / 23:39
0

Try this way

$tabela_modelos = array();
$tabela_modelos[] = array('id_marca' => 1, 'id_modelo' => 1, 'ds_modelo' => 'Vectra');
$tabela_modelos[] =array('id_marca' => 1, 'id_modelo' => 2, 'ds_modelo' => 'Corsa');
$tabela_modelos[] =array('id_marca' => 1, 'id_modelo' => 3, 'ds_modelo' => 'Meriva');
$tabela_modelos[] =array('id_marca' => 2, 'id_modelo' => 4, 'ds_modelo' => 'Uno');
$tabela_modelos[] =array('id_marca' => 2, 'id_modelo' => 5, 'ds_modelo' => 'Tempra');
$tabela_modelos[] =array('id_marca' => 2, 'id_modelo' => 6, 'ds_modelo' => 'Pálio');
$tabela_modelos[] =array('id_marca' => 3, 'id_modelo' => 7, 'ds_modelo' => 'Ranger');
$tabela_modelos[] =array('id_marca' => 3, 'id_modelo' => 8, 'ds_modelo' => 'Eco');
$tabela_modelos[] =array('id_marca' => 3, 'id_modelo' => 9, 'ds_modelo' => 'Fiesta');

$cadastros = 0;

foreach($tabela_modelos as $tabela_modelo){
$id_marca = $tabela_modelo['id_marca'];
$id_modelo = $tabela_modelo['id_modelo'];
$ds_modelo = $tabela_modelo['ds_modelo'];

$sql = 'SELECT * FROM TABELA WHERE CAMPO1 = "'.$id_marca.'"' ';

if(mysql_query($sql)){
$cadastrados++
}
}
    
04.09.2015 / 08:47