Witam, przedstawię najpierw kod, potem mój problem:
<?php
$day = $_GET['day'];
$mouth = $_GET['mouth'];
$year = $_GET['year'];
if($mouth > (date("n")+3)){
if($year == date("Y")){
header("Location: day.php?day=".date("d")."&mouth=".date("n")."&year=".date("Y"));
}
}
function miesiac_pl($mies) {
$mies_pl = array(1=>"Stycznia", "Lutego", "Marzec", "Kwietnia", "Maja", "Czerwieca", "Lipieca", "Sierpnia", "Wrze¶nia", "PaĽdziernika", "Listopada", "Grudnia");
return $mies_pl[$mies];
}
function dni_mies($mies,$rok) {
if (checkdate($mies, 31, $rok)){
$dni = 31;
}elseif (checkdate($mies, 30, $rok)){
$dni = 30;
}elseif (checkdate($mies, 29, $rok)){
$dni = 29;
}elseif (checkdate($mies, 28, $rok)){
$dni = 28;
}
return $dni;
}
function gen_link($dir){
global $day, $mouth, $year;
$d = $day;
$m = $mouth;
$y = $year;
if($dir == "back"){
if($day-1 == 0){
if($mouth == 1){
$d = dni_mies(12, $y-1);
$m = 12;
$y--;
}else{
$d = dni_mies($m, $y);
$m--;
}
}else{
$d--;
}
$link = "<a href='day.php?day=$d&mouth=$m&year=$y'>poprzedni dzień</a>";
}elseif($dir == "next"){
$dni = dni_mies($mouth, $year);
if($mouth > date("n")+3 && $year == date("Y")){
$link = "następny dzień";
}elseif($mouth == date("n")+3 && $year == date("Y")){
if($day+1 > $dni){
$link = "następny dzień";
}else{
$link = "<a href='day.php?day=".($day+1)."&mouth=$mouth&year=$year'>następny dzień</a>";
}
}else{
$dni = dni_mies($mouth, $year);
if($day+1 > $dni){
$d = 1;
if($mouth+1 > 12){
$m = 1;
$y++;
}else{
$m++;
}
}else{
$d++;
}
$link = "<a href='day.php?day=$d&mouth=$m&year=$y'>następny dzień</a>";
}
}
return $link;
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/xml; charset=utf-8" />
<meta http-equiv="content-language" content="pl" />
<style>
.prev{
background: #ccc;
border-bottom: 2px solid #000;
border-left: 2px solid #000;
border-top: 2px solid #000;
border-right: 1px solid #000;
float: left;
width: 150px;
}
.next{
background: #ccc;
border-bottom: 2px solid #000;
border-left: 1px solid #000;
border-top: 2px solid #000;
border-right: 2px solid #000;
float: left;
width: 150px;
}
.day{
background: #ffe4a4;
border-bottom: 2px solid #000;
border-top: 2px solid #000;
border-right: 1px solid #000;
border-left: 2px solid #000;
float: left;
width: 150px;
}
.tee{
width: 200px;
border: 1px solid #000;
}
.hour{
width: 50px;
background: #ffe4a4;
border: 1px solid #000;
}
.block{
background: #990000;
}
.hour_block{
width: 50px;
background: #990000;
border: 1px solid #000;
}
.hours_hide{
display: none;
}
.hours_show{
display: block;
}
.select_hide{
position: absolute;
width: 70px;
background: #ffe4a4;
border: 1px solid #000;
margin: -20px 0 0 50px;
display: none;
}
.select_show{
position: absolute;
width: 70px;
background: #ffe4a4;
border: 1px solid #000;
margin: -20px 0 0 50px;
display: block;
}
.sector{
float:left;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
function show(){
if($("div#hours1").hasClass("hours_hide")){
$("div#hours1").show("slow");
$('div#hours1').removeClass('hours_hide');
$('div#hours1').addClass('hours_show');
}else{
$("div#hours1").hide("slow");
$('div#hours1').removeClass('hours_show');
$('div#hours1').addClass('hours_hide');
}
}
function show2(id){
if($("div#"+id).hasClass("hour_block")){}else{
if($("div#"+id+"_child").hasClass("select_hide")){
$("div#"+id+"_child").show("slow");
$("div#"+id+"_child").removeClass('select_hide');
$("div#"+id+"_child").addClass('select_show');
}else{
$("div#"+id+"_child").hide("slow");
$("div#"+id+"_child").removeClass('select_show');
$("div#"+id+"_child").addClass('select_hide');
}
}
}
function show3(){
if($("div#hours2").hasClass("hours_hide")){
$("div#hours2").show("slow");
$('div#hours2').removeClass('hours_hide');
$('div#hours2').addClass('hours_show');
}else{
$("div#hours2").hide("slow");
$('div#hours2').removeClass('hours_show');
$('div#hours2').addClass('hours_hide');
}
}
function getIdElement(element){
i=$(element).attr("id");
return i;
}
</script>
</head>
<body>
<div class="prev"><?=gen_link("back");?></div>
<div class="day"><?=$day;?> <?=miesiac_pl($mouth);?></div>
<div class="next"><?=gen_link("next");?></div>
<br/><br/>
<div class="sector">
<div class="tee" id="tee1" onclick="show();">Tee1</div>
<div class="hours_hide" id="hours1">
<?
$
$i = 46;
$m = 0;
$h = 8;
while($i < 92){
$cell_color = ($m % 60 == 0 ? $h++ : NULL);
if($h == 9)$addzero = 0;else $addzero = NULL;
if($m == 0)$addzero2 = 0;else $addzero2 = NULL;
?>
<div class="hour" onclick="show2(getIdElement(this));" id="<?=$i;?>">
<?
echo $addzero.$h.":".$addzero2.$m;
?><div class="select_hide" id="<?=$i;?>_child">klubowicz<br/>gość</div>
</div>
<?
$m = $m+10;
if($m == 60){
$m = 0;
}
$i++;
}
?>
<div class="hour">09:00</div>
<div class="hour block" id="100" onclick="show2(getIdElement(this));">09:10 <div class="select_hide" id="100_child">klubowicz<br/>gość</div></div>
<div class="hour">09:20</div>
<div class="hour">09:30</div>
</div>
</div>
<div class="sector">
<div class="tee" id="tee2" onclick="show3();">Tee10</div>
<div class="hours_hide" id="hours2">
<?
$i = 0;
$m = 0;
$h = 8;
while($i < 46){
$cell_color = ($m % 60 == 0 ? $h++ : NULL);
if($h == 9)$addzero = 0;else $addzero = NULL;
if($m == 0)$addzero2 = 0;else $addzero2 = NULL;
?>
<div class="hour" onclick="show2(getIdElement(this));" id="<?=$i;?>">
<?
echo $addzero.$h.":".$addzero2.$m;
?><div class="select_hide" id="<?=$i;?>_child">klubowicz<br/>gość</div>
</div>
<?
$m = $m+10;
if($m == 60){
$m = 0;
}
$i++;
}
?>
<div class="hour">09:00</div>
<div class="hour block" id="100" onclick="show2(getIdElement(this));">09:10 <div class="select_hide" id="100_child">klubowicz<br/>gość</div></div>
<div class="hour">09:20</div>
<div class="hour">09:30</div>
</div>
</div>
</body>
</html>
A problem jest taki, że mam w bazie zrobioną tabelę tak, że pobiera mi w taki sposób dane:
$array['zamow_id][0]=1;
$array['zamow_data][0]="4-4-2012";
$array['zamow_czas][0]="16:30";
$array['zamow_id][1]=2;
$array['zamow_data][1]="4-4-2012";
$array['zamow_czas][1]="16:30";
I chcę w pętli sprawdzać, czy na daną godzinę jest wpisany rekord w bazie. Oczywiście, na pierwszą myśl było wrzucenie zapytania do pętli, ale jeśli to zrobię będę musiał zapętlić 92 zapytania do bazy co za tym idzie, często będzie wywalać "over". Jak zoptymalizować kod, żeby wykonać 1 zapytanie a sprawdzać czy jest odpowiednik w bazie? Słyszałem o przeszukiwaniu tablicy wielowymiarowej poprzez jakieś funkcje ale nie wiem jak to się robi.
PW od moderatora:
- Odświeżenie tematu - Pieka 13.04.2012 20:12
|