Boa tarde!
Sou novo aqui, andei olhando outros posts e não achei nada parecido com o meu problema.
Bem vamos lá... Tenho escrito um programa no formato MVC. Mas estou com dificuldade para fazer uma busca avançada.
O que acontece? Faço a consulta mas não sei como trazer esta informação até a tela para usuário.
onde deixei a letra em verde é ate onde consigo trazer e testar a resposta com (print_r($reservadas)
. Imprime exatamente o que eu quero. Preciso levar esta informação ate o VIEW e não consegui.
vou colocar o código para ver se conseguem me ajudar.
View
<div id="formCadastro">
<!-- InstanceBeginEditable name="conteudo" -->
<form method="post" action="../adaptadores/adaptadorReservaSalas.php" name="frmCadastro" id="frmCadastro">
<table bgcolor="#efefff" border="1" >
<tr>
<td>
<!-- data 1 -->
<label>Data inicial</label>
<input name="data1" size="10" maxlength="10" value="">
<input type="button" name="btnData1" value="..." onclick="javascript:popdate('document.frmCadastro.data1','pop1','150',document.frmCadastro.data1.value)">
<!--
na span abaixo aparece o primeiro calendario.
você pode colocar a span abaixo no lugar onde quiser em sua
pagina inclusive dentro de uma table para facilitar o
posicionamento. Mas lembre-se que quanto mais perto a span
estiver do campo de data a ela associada mais fácil será para
o usuario associar.
-->
<span id="pop1" style="position:absolute"></span>
</td>
<td>
<!-- data 2 -->
<label>Data final</label>
<input name="data2" size="10" maxlength="10" value="">
<input type="button" name="btnData2" value="..." onclick="javascript:popdate('document.frmCadastro.data2','pop2','150',document.frmCadastro.data2.value)">
<!-- na span abaixo aparece o segundo calendario -->
<span id="pop2" style="position:absolute"></span>
<!--
caso queira inserir outros campos de data em sua página
certifique-se de substituir corretamente os nomes dos
objetos em javascript.
EX: o objeto input text será o data3 - ou como você quiser
o objeto button será o btnData3 - ou como você quiser
nas chamadas das funçoes no evento onClick os nomes
deverão referenciar seus respectivos objetos.
-->
</td>
</tr>
<tr>
<td>
<p>
<label>Horário </label><br>
<input type="checkbox" name="manha" value="1"> Manhã
<input type="checkbox" name="manha2" value="1"> Manhã 2 <br/>
<input type="checkbox" name="tarde" value="1"> Tarde  
<input type="checkbox" name="vespertino" value="1"> Vespertino<br/>
<input type="checkbox" name="noite" value="1"> Noite<br>
</p>
</td>
</tr>
<tr>
<td>
<?php
$con = mysql_connect( 'localhost', 'root', '' ) ;
mysql_select_db( 'reservas', $con );
?>
<label for="setor">Setor :</label>
<select name="setor" id="setor">
<option value="">Escolha um setor</option>
<?php
$sql = "SELECT * FROM setor ";
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) {
echo '<option value="'.$row['idSetor'].'">'.$row['nomeSetor'].'</option>';
}
?>
</select>
</td>
<td>
<label for="sala">Sala :</label>
<span class="carregando">Aguarde, carregando...</span>
<select name="sala" id="sala">
<option value="">Escolha uma Sala</option>
</select>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3');
</script>
<script type="text/javascript">
$(function(){
$('#setor').change(function(){
if( $(this).val() ) {
$('#sala').hide();
$('.carregando').show();
$.getJSON('../ajax/salas.ajax.php?search=',{setor: $(this).val(), ajax: 'true'}, function(j){
var options = '<option value=""></option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].nomeSala + '">' + j[i].nomeSala + '</option>';
}
$('#sala').html(options).show();
$('.carregando').hide();
});
} else {
$('#sala').html('<option value=""> Escolha uma sala </option>');
}
});
});
</script>
</td>
</tr>
</table>
<p><input type="hidden" name="acao" value="15" />
<input type="submit" name="btnCadastrar" value="Consultar" id="btnCadastrar" class="botao" /></p>
</form>
Controller
case 15:
$salas=Sala::listarFiltrado($setor);
$reservas=Reserva::listarPorSala($sala,$inicio,$fim);
$reservadas='';
$liberadas='';
$posR=0;
$posL=0;
$ultima='';
foreach ($salas as $value) {
foreach ($reservas as $values) {
if($value['idSala']==$values['sala']){
if($inicio >= $values['dataInicial'] || $inicio <= $values['dataFinal']){
if($values['turnoM'] == $manha ){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoM2'] == $manha2){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoT'] == $tarde){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoV'] == $vespertino){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoN'] == $noite){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}
}
}elseif($ultima != $value['nomeSala']) {
$liberadas[$posL]= $value['nomeSala'];
$ultima = $value['nomeSala'];
$posL++;
}
}
}
break;
Model
Salas
public static function listarFiltrado($setor){
$banco = Conexao::getConexao();
$sql = "select idSala, nomeSala from sala where setor like'$setor%'";
$r = $banco->executar($sql);
if($banco->numeroLinhas($r) > 0)
while($dados = $banco->lerRegistro($r))
$lista[] = $dados;
else
$lista=0;
return $lista;
}
Reservas
public function listarPorSala($sala,$inicio,$fim){
$s=Sala::consultaCodigoSala($sala);
$i=date("y/m/d", strtotime($inicio));
$f=date("y/m/d", strtotime($fim));
$banco = Conexao::getConexao();
$sql = "select * from reserva where sala ='$s' and locado ='L' and dataInicial between '$i' and '$f' ";
$r = $banco->executar($sql);
if($banco->numeroLinhas($r) > 0)
while($dados = $banco->lerRegistro($r))
$lista[] = $dados;
else
$lista=0;
return $lista;
}
Sou novo aqui, andei olhando outros posts e não achei nada parecido com o meu problema.
Bem vamos lá... Tenho escrito um programa no formato MVC. Mas estou com dificuldade para fazer uma busca avançada.
O que acontece? Faço a consulta mas não sei como trazer esta informação até a tela para usuário.
onde deixei a letra em verde é ate onde consigo trazer e testar a resposta com (print_r($reservadas)

vou colocar o código para ver se conseguem me ajudar.
View
<div id="formCadastro">
<!-- InstanceBeginEditable name="conteudo" -->
<form method="post" action="../adaptadores/adaptadorReservaSalas.php" name="frmCadastro" id="frmCadastro">
<table bgcolor="#efefff" border="1" >
<tr>
<td>
<!-- data 1 -->
<label>Data inicial</label>
<input name="data1" size="10" maxlength="10" value="">
<input type="button" name="btnData1" value="..." onclick="javascript:popdate('document.frmCadastro.data1','pop1','150',document.frmCadastro.data1.value)">
<!--
na span abaixo aparece o primeiro calendario.
você pode colocar a span abaixo no lugar onde quiser em sua
pagina inclusive dentro de uma table para facilitar o
posicionamento. Mas lembre-se que quanto mais perto a span
estiver do campo de data a ela associada mais fácil será para
o usuario associar.
-->
<span id="pop1" style="position:absolute"></span>
</td>
<td>
<!-- data 2 -->
<label>Data final</label>
<input name="data2" size="10" maxlength="10" value="">
<input type="button" name="btnData2" value="..." onclick="javascript:popdate('document.frmCadastro.data2','pop2','150',document.frmCadastro.data2.value)">
<!-- na span abaixo aparece o segundo calendario -->
<span id="pop2" style="position:absolute"></span>
<!--
caso queira inserir outros campos de data em sua página
certifique-se de substituir corretamente os nomes dos
objetos em javascript.
EX: o objeto input text será o data3 - ou como você quiser
o objeto button será o btnData3 - ou como você quiser
nas chamadas das funçoes no evento onClick os nomes
deverão referenciar seus respectivos objetos.
-->
</td>
</tr>
<tr>
<td>
<p>
<label>Horário </label><br>
<input type="checkbox" name="manha" value="1"> Manhã
<input type="checkbox" name="manha2" value="1"> Manhã 2 <br/>
<input type="checkbox" name="tarde" value="1"> Tarde  
<input type="checkbox" name="vespertino" value="1"> Vespertino<br/>
<input type="checkbox" name="noite" value="1"> Noite<br>
</p>
</td>
</tr>
<tr>
<td>
<?php
$con = mysql_connect( 'localhost', 'root', '' ) ;
mysql_select_db( 'reservas', $con );
?>
<label for="setor">Setor :</label>
<select name="setor" id="setor">
<option value="">Escolha um setor</option>
<?php
$sql = "SELECT * FROM setor ";
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) {
echo '<option value="'.$row['idSetor'].'">'.$row['nomeSetor'].'</option>';
}
?>
</select>
</td>
<td>
<label for="sala">Sala :</label>
<span class="carregando">Aguarde, carregando...</span>
<select name="sala" id="sala">
<option value="">Escolha uma Sala</option>
</select>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3');
</script>
<script type="text/javascript">
$(function(){
$('#setor').change(function(){
if( $(this).val() ) {
$('#sala').hide();
$('.carregando').show();
$.getJSON('../ajax/salas.ajax.php?search=',{setor: $(this).val(), ajax: 'true'}, function(j){
var options = '<option value=""></option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].nomeSala + '">' + j[i].nomeSala + '</option>';
}
$('#sala').html(options).show();
$('.carregando').hide();
});
} else {
$('#sala').html('<option value=""> Escolha uma sala </option>');
}
});
});
</script>
</td>
</tr>
</table>
<p><input type="hidden" name="acao" value="15" />
<input type="submit" name="btnCadastrar" value="Consultar" id="btnCadastrar" class="botao" /></p>
</form>
Controller
case 15:
$salas=Sala::listarFiltrado($setor);
$reservas=Reserva::listarPorSala($sala,$inicio,$fim);
$reservadas='';
$liberadas='';
$posR=0;
$posL=0;
$ultima='';
foreach ($salas as $value) {
foreach ($reservas as $values) {
if($value['idSala']==$values['sala']){
if($inicio >= $values['dataInicial'] || $inicio <= $values['dataFinal']){
if($values['turnoM'] == $manha ){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoM2'] == $manha2){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoT'] == $tarde){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoV'] == $vespertino){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}elseif($values['turnoN'] == $noite){
$reservadas[$posR]=$values['idReserva'];
$posR++;
}
}
}elseif($ultima != $value['nomeSala']) {
$liberadas[$posL]= $value['nomeSala'];
$ultima = $value['nomeSala'];
$posL++;
}
}
}
break;
Model
Salas
public static function listarFiltrado($setor){
$banco = Conexao::getConexao();
$sql = "select idSala, nomeSala from sala where setor like'$setor%'";
$r = $banco->executar($sql);
if($banco->numeroLinhas($r) > 0)
while($dados = $banco->lerRegistro($r))
$lista[] = $dados;
else
$lista=0;
return $lista;
}
Reservas
public function listarPorSala($sala,$inicio,$fim){
$s=Sala::consultaCodigoSala($sala);
$i=date("y/m/d", strtotime($inicio));
$f=date("y/m/d", strtotime($fim));
$banco = Conexao::getConexao();
$sql = "select * from reserva where sala ='$s' and locado ='L' and dataInicial between '$i' and '$f' ";
$r = $banco->executar($sql);
if($banco->numeroLinhas($r) > 0)
while($dados = $banco->lerRegistro($r))
$lista[] = $dados;
else
$lista=0;
return $lista;
}