» »

Urnik if + date() [PHP - začetnik]

Urnik if + date() [PHP - začetnik]

Klemen1602 ::

Zdravo!

Rad bi izdelal preprosto spletno stran, ki bi mi povedala ali je v določeni sobi predavanje ali je soba prosta. Že v naprej se zahvaljujem za pomoč!

Za začetek bi rad ugotovil zakaj naslednja koda ne deluje kot bi morala:

<?php
date_default_timezone_set('Europe/Vienna');

$hour = date('H:i');

if ($hour >= '12:00' || $hour < '14:00') {
	echo "V sobi je predavanje!";
}
else {
	echo "Soba je na voljo!";
}
?>


Moje razumevanje: Če je ura enaka ali večja od 12:00 ali manjša od 14:00 izpiši "V sobi je predavanje!". Trenutno je ura 23+ torej bi moral dobiti odgovor "Soba je na voljo!" ampak vedno dobim "V sobi je predavanje!". Tudi ko spremenim:

$hour = "15:00";


dobim enak rezultat, torej "V sobi je predavanje!".

Kaj delam narobe? Hvala za predloge in pomoč!

LP,
Klemen

hellboy123 ::

Primerjalni operatorji se uporabljajo za cifre, ne za stringe.

Tole verjetno ti rabiš

Klemen1602 ::

@hellboy - hvala za link!

Če || zamenjam z && stvar deluje. (?)

Naslednje vprašanje - oblika MySQL tabele
Vsaki sobi bom dodelil ID in odpiralne/zapiralne čase glede na dan v tednu.

Moja ideja:
Ustvaril bom dve tabeli, ena bo lesson_start druga lesson_end.

lesson_start
101 - monday - 12:00

lesson_end
101 - monday - 15:00


Obstaja kakšna lepša/enostavnejša rešitev?

Zgodovina sprememb…

hellboy123 ::

Ne, tole so primerjalni operatorji.
Ti rabiš za ta primer, da boš primerjal dve cifri med sabo. In ja, to je tudi blo narobe. Rabiš AND (&&) namesto OR (||).

Najenostavneje kar se trenutno spomnim, bi blo nekako takole.

Za bazo pa lahko narediš vse samo v 1 tabeli:

lessons
- room_id
- weekday
- time_from
- time_to

Veron ::

osebno če primerjam čase, uporabim timestamp, torej prvo čase pretvori z strtotime nato pa jih primerjaj

Klemen1602 ::

Zdravo!

Nastalo je tole:

<?php
date_default_timezone_set('Europe/Vienna');

// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("konse") or die(mysql_error());

// Construct our join query
$query = "SELECT * FROM lessons, rooms WHERE lessons.room_id = rooms.room_id";
$result = mysql_query($query) or die(mysql_error());

$hour = date('Hi');

$day = date('l');
$day = strtolower($day);

switch ($day) {
	case 'monday':
		$day_num = 1;
		break;

	case 'tuesday':
		$day_num = 2;
		break;

	case 'wednesday':
		$day_num = 3;
		break;

	case 'thursday':
		$day_num = 4;
		break;

	case 'friday':
		$day_num = 5;
		break;

	case 'saturday':
		$day_num = 6;
		break;
}

while ($row = mysql_fetch_array($result)) {
	$opened = $row['time_from'];
	$closed = $row['time_to'];

	if ($day_num == $row['weekday'] && $hour >= $opened && $hour <= $closed) {
		echo "<p style='color: red;'>".$row['room_id']." - ".$row['name']."</p>";
	}
	else {
		echo "<p style='color: green;'>".$row['room_id']." - ".$row['name']."</p>";
	}
}

?>


Situacija:
Vsaka soba ima x-predavanj (in ta x ni skoraj nikoli 1) in jasno php mi preko whilea izvrže najprej 10 predavanj za vsako sobo in jih potem obarva. Kakšen predlog kako naj napišem stvar tako, da se bo izpisala vsaka soba le 1x in na podlagi tega ali je v njej predavanje ali ne tudi obarvala?

Hvala za pomoč!
LP,
Klemen

t3hn0 ::

Glede na zgornjo kodo, lahko vrstice 14-41 zamenjas s tem:
$day_num = date('N');

(Več o tem)

Lahko poskusis z grupiranjem v sql queriju, lahko probas dodat stvari v array [strukture $out = array( id_sobe => array( termin1, termin2,..), id_sobe2...], lahko ...

Odvisno koliko bi se rad igral in kaj naucil. Moznosti je veliko :)
^.^


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kompresija velikih fajlov

Oddelek: Programska oprema
434421 (2412) MrStein
»

Izšel PHP 5.5

Oddelek: Novice / Ostala programska oprema
115150 (3840) technolog
»

router priključen na router

Oddelek: Omrežja in internet
283722 (2292) janco
»

[c#] Vstavljanje vrednosti v tabelo

Oddelek: Programiranje
111598 (1420) Cvenemir
»

Wordpress - izpis postov glede na datum

Oddelek: Izdelava spletišč
7788 (736) JayKay

Več podobnih tem