Зареждане на данни от таблиците според избраната дата

vinsbg

Registered
Здравейте,

Трябва ми идея/начин как точно става, когато имам падащо меню с дни от месеца и избера някой ден да зареди данни от таблица за този ден.

Проблема е, че за всеки ден от месеца имам отделна таблица. Най-общо казано в края на месеца се изтриват и се създават за новия месец.
Таблиците са от сорта на
Код:
table_01-01-2015
table_02-01-2015
table_03-01-2015
table_04-01-2015
....
table_31-01-2015
 
vinsbg каза:
Здравейте,

Трябва ми идея/начин как точно става, когато имам падащо меню с дни от месеца и избера някой ден да зареди данни от таблица за този ден.

Проблема е, че за всеки ден от месеца имам отделна таблица. Най-общо казано в края на месеца се изтриват и се създават за новия месец.
Таблиците са от сорта на
Код:
table_01-01-2015
table_02-01-2015
table_03-01-2015
table_04-01-2015
....
table_31-01-2015
Нещо такова ли търсиш? :)
PHP:
$begin = new DateTime( '2012-08-01' );
$end = new DateTime( '2012-08-31' );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
    echo "table_".$date->format("d-m-Y") . "<br>";
}
 
Да. Само един въпрос относно $begin и $end. Kак ще стане да взима текущия месец и ден .. в момента на отваряне?
И съответно заявката към базата?
 
new DateTime('NOW'); ?
$date = new DateTime();

http://php.net/manual/en/class.datetime.php
http://php.net/manual/en/datetime.construct.php

PHP:
$begin = new DateTime();
$begin->format('Y-m-d');
$end = new DateTime();
$end->format('Y-m-d');
$end = $end->modify( '+1 day' );

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
    echo "table_".$date->format("d-m-Y") . "<br>";
}

Имаш и този варянт до края от сегашната дата:
PHP:
$begin = new DateTime();
$begin->format('Y-m-d');

$end = new DateTime();
$end->format('Y-m-d');
$end->modify('last day of this month');
$end = $end->modify( '+1 day' );

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
    echo "table_".$date->format("d-m-Y") . "<br>";
}
 
Благодаря!
Това с датата мисля, че ми стана ясно.
Значи да предположим, че имам една страница с някакъв datepicker на нея. При отварянето му той зарежда текущия месец NOW .. и от тук настъпва моето объркване с твоя пример. Къде е заявката? Предполагам, че това, което си дал е OOP? Ако е такова не съм наясно толкова с него и може би затова ми идва объркването..
 
vinsbg каза:
Благодаря!
Това с датата мисля, че ми стана ясно.
Значи да предположим, че имам една страница с някакъв datepicker на нея. При отварянето му той зарежда текущия месец NOW .. и от тук настъпва моето объркване с твоя пример. Къде е заявката? Предполагам, че това, което си дал е OOP? Ако е такова не съм наясно толкова с него и може би затова ми идва объркването..
Да това е с ООП. Теб каква точно заявка те инетересува? Избрана ли ?

PHP:
echo "<select name='test'>";
foreach($daterange as $date){
    echo "<option value='table_".$date->format("d-m-Y"). "'>".$date->format("d-m-Y")."</option><br>";
}
echo '</select>';
Ето тук си изкарваш примерно имената на опцииите в селект след което нали от формата правейки пост заявка става:
PHP:
$test = $_POST['test'];
$sql = "SELECT * FROM $test ORDER BY id";
Това е просто пример няма нищо по-различно от процедурният код.
 
vinsbg каза:
Благодаря!
Това с датата мисля, че ми стана ясно.
Значи да предположим, че имам една страница с някакъв datepicker на нея. При отварянето му той зарежда текущия месец NOW .. и от тук настъпва моето объркване с твоя пример. Къде е заявката? Предполагам, че това, което си дал е OOP? Ако е такова не съм наясно толкова с него и може би затова ми идва объркването..

Какво връща datepicker-a когато го POST-неш? Трябва да върне датата в някакъв формат.
 
Все още нищо... Исках да си изясня донякъде как горе долу ще стане номера.

Това, което успях да направя до момента.. понеже ми трябва за лична употреба не е нужно да е нещо свръх модерно и защитено .. както и не търся някакъв перформънс.

От w3school-a взех един готов ajax. Та това е в момента
select.php ми е календара и някакъв пост към аякса:

Код:
<div class="row">
    <div class="form-group col-md-3">
			
            <div class="input-group input-append date" id="dateRangePicker">
                <input type="text" class="form-control" name="date" onchange="showUser(this.value)"/>
                <span class="input-group-addon add-on"><span class="glyphicon glyphicon-calendar"></span></span>
            </div>
    </div>
</div>
<label><div id="txtHint"><b>Дата?</b></div> </label>
<script>
$(document).ready(function() {
    $('#dateRangePicker')
        .datepicker({
            format: 'mm/dd/yyyy',
            startDate: '01/01/2010',
            endDate: '12/30/2020'
        })
});
</script>
<script>
function showUser(str) {
  if (str=="") {
    document.getElementById("txtHint").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","getData.php?q="+str,true);
  xmlhttp.send();
}
</script>
getData.php
Код:
	$q = intval($_GET['q']);

	$result = $pdo->prepare("SELECT COUNT( * ) as count, LENGTH( row1 ) AS wrong
				 FROM  `table_2015-07-22` 
				 WHERE row1 NOT LIKE  '123%'
				 OR LENGTH( row1 ) <50
				 GROUP BY wrong
				 ORDER BY TIME  '2015-07-22 00:00:01' ASC ");
	$result->execute();
	$results = $result->fetchAll();
			
	foreach ($results as $wrong)
	{
		echo '
			  <tbody>
			  <tr>
	       	                <td>'.$wrong['count'].'</td>
             			<td>'.$wrong['wrong'].'</td>
			  </tr>
			  </tbody>';
	}
В момента логично, която и дата да избера просто си изкарва всичко.
Въпроса е как да вкарам $q в селекта на календара, за да мога да го вкарам в самата заявка вече?
 
Само да вметна че като ползваш jquery ajax-a е много улеснен:

[js]function show_user (str) {
if(!str)
$("#txtHint").html("");
else
$('#txtHint').load("getData.php?q="+str);
}[/js]
 
PHP:
<?php
$q = date_create($_GET['q']);
$date = date_format($q, 'Y-m-d');
if($date) {
	$result = $pdo->prepare("SELECT COUNT( * ) as count, LENGTH( row1 ) AS wrong
				FROM  `table_". $date ."` 
				WHERE row1 NOT LIKE  '123%'
				OR LENGTH( row1 ) <50
				GROUP BY wrong
				ORDER BY TIME ASC ");
	$result->execute();
	$results = $result->fetchAll();
	
	foreach ($results as $wrong)
	{
		echo '
			<tbody>
			<tr>
								<td>'.$wrong['count'].'</td>
						<td>'.$wrong['wrong'].'</td>
			</tr>
			</tbody>';
	}       
} else {
	echo '
			<tbody>
			<tr>
				<td>No Results!</td>
			</tr>
			</tbody>';
}
?>

Така?
 
eLite каза:
.....
Така?
Супер е!
Благодаря много :?:

anonimen каза:
Само да вметна че като ползваш jquery ajax-a е много улеснен:

[js]function show_user (str) {
if(!str)
$("#txtHint").html("");
else
$('#txtHint').load("getData.php?q="+str);
}[/js]
Благодаря и за твоя пример.
 

Back
Горе