Autor Zpráva
Zaciatocnik
Profil *
Nazdar. Nepomôže mi niekto ako zariadiť aby mala premenná nejakú prednastavenú hodnotu? Napríklad dnešný dátum. Ak by sa ale hodnota cez formulár zmenila, aby sa používala tá zmenená hodnota. Díkes
blaaablaaa
Profil
Zaciatocnik:
Je potreba si tuto hodnotu nekam ulozit (soubor/databaze) a pote ji na zacatku prace vzdy nacist.
Jozin
Profil
Zdravím, formulář předpokládám odeslaný postem a jméno time

<?php
$time = isset($_POST['time']) ? $_POST['time'] : time();
Tori
Profil
Zaciatocnik:
Jestli chcete to, aby se jen jednou změnila pomocí formuláře a pak zůstala i na dalších stránkách, použila bych sessions. Resp. v session by byly výchozí hodnoty a v případě odeslání formuláře byste některé nastavení změnil (je potřeba zkontrolovat, jestli uživatel zadal platnou hodnotu - číslo, text, ...).
Zaciatocnik
Profil *
Ide o dosť preriedený kód, tá premenná sa volá tiedič a slúži na vyselektovanie z tabuľky len tých záznamov, ktoré majú rovnaký dátum ako je v premennej. Problém je, že vždy keď niečo vložím do tabuľky, editujem, alebo zmažem, tak musím najprv potvrdiť dátum aby sa niečo zobrazilo. Chcel by som preto aby sa defaultne zobrazovali záznamy pre dnešný deň(zajtra zajtrajší atď.), ale keď používateľ zadá iný dátum, tak aby používal už ďalej len ten. Kód od Jozina som tam síce vložil, ale nefunguje to a tak by som ho alebo niekoho iného chcel poprosiť ako to spojazdniť, prípadne ako to spraviť podľa blaaablaaa ak je to vhodnejšie. Díkes :)

<body bgcolor="#00CCFF" onLoad="hodiny();">
<form name="hodinky"><b>Hlavná stránka. </b><?php echo "Dnes je: ".date("j. n. Y ")."";?>, aktuálny cas je: <input type="text" name="cifernik" size="7" STYLE="background-color: #00CCFF; border: 0px;" ></form>
<p>
<form id="triedic" name="triedic" method="post" action="index.php">
  <tr>
    <td>Dátum:</td>
    <td><input type="triedic" name="triedic" value="<?php echo $progress_report = date("Y-m-d");?>"/>
	<script language="JavaScript">
	new tcal ({
		// form name
		'formname': 'triedic',
		// input name
		'controlname': 'triedic'
	});

	</script>
    <?php $triedic = isset($_POST['triedic']) ? $_POST['triedic'] : date();?>
    </td>
  </tr>
  <input type="submit" value="Prejdi" /> Zobrazujú sa výsledky pre dátum: <?php echo "'".$_POST["triedic"]."'"?>
</form>
  <?php
$spojenie=mysql_connect("localhost","root","");
	if (!$spojenie):
		echo "spojenie s DB sa nepodarilo";
		else:
				mysql_select_db("stsz");
				
				$servis=mysql_query("select datum,id,cas,od,co,akcia FROM servis WHERE datum='".$_POST["triedic"]."' AND akcia='servis' order by cas ASC");
				
				if (!$servis):
				echo "doslo k chybe pri otavarani SQL odkazu !";
				else:
?>
</p>
<table>
<tr><b>Dovolenka: </b> <a href="add-dovolenka.php">pridaj záznam</a></tr>
<tr>
<td>
<table border="1" cellspacing="0" cellpadding="1">
	<tr>
		<td bgcolor="cccccc" width="38" align="center"><strong>IC:</strong></td>
        <td bgcolor="cccccc" width="120" align="center"><strong>Meno:</strong></td>
		<td bgcolor="cccccc" width="120" align="center"><strong>Priezvisko:</a></strong></td>
 		<td bgcolor="cccccc" width="80" align="center"><strong>Od:</a></strong></td>
        <td bgcolor="cccccc" width="80" align="center"><strong>Do:</a></strong></td>
 		<td bgcolor="cccccc" colspan="2" >&nbsp;</td>
		</tr>
         
<?php

		while ($zaznam=mysql_fetch_row($dovolenka)):?>
		<tr>
		
		<td bgcolor="#FFFFFF" width="38" align="center"><b><?php echo $zaznam[0]?></b></td>
		<td bgcolor="#FFFFFF" width="120" align="center"><b><?php echo $zaznam[1]?></b></td>
		<td bgcolor="#FFFFFF" width="120" align="center"><b><?php echo $zaznam[2]?></b></td>
        <td bgcolor="#FFFFFF" width="80" align="center"><b><?php echo $zaznam[3]?></b></td>
        <td bgcolor="#FFFFFF" width="80" align="center"><b><?php echo $zaznam[4]?></b></td>
		<td width="30" align="center" bgcolor="eeeeee">
             <a href="edit-dovolenka.php?ic=<?php echo $zaznam[0]?>"><img src="img/edit.png" width="30" height="30"></a></td>
		<td width="30" align="center" bgcolor="eeeeee">
            <a href="javascript:confirmBox2(<?php echo $zaznam[0];?>)"><img src="img/delete.png" width="30" height="30"></a></td>
		</tr>
		<?php endwhile;?>
</table>

		<p>
		<a href="add.php"><img src="img/add.png" width="32" height="32"></a></p>
<?php endif;?>

</body>
</html>
Tori
Profil
Zaciatocnik:
Tak to je přesně pro session:
<?php
session_start(); // musí být na začátku skriptu
if (isset($_POST['triedic']))
  $_SESSION['datum'] = strtotime($_POST['triedic']); // = pokud odeslaný formulář, použije se hodnota z formu.
elseif (!isset($_SESSION['datum']))
  $_SESSION['datum'] = time();  // = pokud ještě není definovaná, uloží se výchozí hodnota
// ....
Všude, kde to datum potřebujete, pak použijete
date('j. n. Y', $_SESSION['datum'])
(nebo formát Y-m-d pro databázi.)
Zaciatocnik
Profil *
Asi si budete myslet, že som úplne mimo, ale pre istotu... kam to mám presne vložiť? Tú prvú časť, prípadne čo z toho čo tam mám treba odstrániť?
Zaciatocnik
Profil *
Už mi to funguje, ale vypisuje to chyby. Nechápem ako to môže fungovať, keď sú tam chyby,ale budeš. Už len odstrániť tie chyby. Prikladám znenie chýb a pod to kód v plnej forme aby sedeli čísla riadkov:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\XAMPP\xampplite\htdocs\stsz\index.php:45) in C:\Program Files\XAMPP\xampplite\htdocs\stsz\index.php on line 46

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\XAMPP\xampplite\htdocs\stsz\index.php:45) in C:\Program Files\XAMPP\xampplite\htdocs\stsz\index.php on line 46

<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>STSz</title>
<script>
<!--
function hodiny()
{
dnes=new Date();

hodin=dnes.getHours();
minut=dnes.getMinutes();
sekund=dnes.getSeconds();

cas=((hodin<10) ? "0" : "")+hodin;
cas+=((minut<10) ? ":0" : ":")+minut;
cas+=((sekund<10) ? ":0" : ":")+sekund;

document.hodinky.cifernik.value=cas;
setTimeout("hodiny()",1000);
}
// -->
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
function confirmBox(data)
{
if (window.confirm("Ste si istý, že chcete odstránit tento záznam?"))
{ self.location.href="delete.php?id="+data; }
}
// --> </SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function confirmBox2(data)
{
if (window.confirm("Ste si istý, že chcete odstránit tento záznam?"))
{ self.location.href="delete-dovolenka.php?ic="+data; }
}
// --> </SCRIPT>
<script language="JavaScript" src="calendar_db.js"></script>
<link rel="stylesheet" href="calendar.css">
</head>

<body bgcolor="#00CCFF" onLoad="hodiny();">

<?php
session_start();
if (isset($_POST['triedic']))
$_SESSION['datum'] = strtotime($_POST['triedic']);
elseif (!isset($_SESSION['datum']))
$_SESSION['datum'] = time();?>

<form name="hodinky"><b>Hlavná stránka. </b><?php echo "Dnes je: ".date("j. n. Y ")."";?>, aktuálny cas je: <input type="text" name="cifernik" size="7" STYLE="background-color: #00CCFF; border: 0px;" ></form>
<p>
<form id="triedic" name="triedic" method="post" action="index.php">
<tr>
<td>Dátum:</td>
<td><input type="triedic" name="triedic" value="<?php echo $progress_report = date("Y-m-d");?>"/>
<script language="JavaScript">
new tcal ({
// form name
'formname': 'triedic',
// input name
'controlname': 'triedic'
});

</script>
</td>
</tr>
<input type="submit" value="Prejdi" /> Zobrazujú sa výsledky pre dátum: <?php echo date('Y-m-d', $_SESSION['datum']) ?>
</form>
<?php
$spojenie=mysql_connect("localhost","root","");
if (!$spojenie):
echo "spojenie s DB sa nepodarilo";
else:
mysql_select_db("stsz");
$servis=mysql_query("select datum,id,cas,od,co,akcia FROM servis WHERE datum='".date('Y-m-d', $_SESSION['datum'])."' AND akcia='servis' order by cas ASC");
$oprava=mysql_query("select datum,id,cas,od,co,akcia FROM servis WHERE datum='".date('Y-m-d', $_SESSION['datum'])."' AND akcia='oprava' order by cas ASC");
$dovolenka=mysql_query("select ic,meno,priezvisko,od,do FROM dovolenka WHERE od<='".date('Y-m-d', $_SESSION['datum'])."' AND do>='".date('Y-m-d', $_SESSION['datum'])."'");

if (!$dovolenka):
echo "doslo k chybe pri otavarani SQL odkazu !";
else:
?>
</p>
<table>
<tr><b>Dovolenka: </b> <a href="add-dovolenka.php">pridaj záznam</a></tr>
<tr>
<td>
<table border="1" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor="cccccc" width="38" align="center"><strong>IC:</strong></td>
<td bgcolor="cccccc" width="120" align="center"><strong>Meno:</strong></td>
<td bgcolor="cccccc" width="120" align="center"><strong>Priezvisko:</a></strong></td>
<td bgcolor="cccccc" width="80" align="center"><strong>Od:</a></strong></td>
<td bgcolor="cccccc" width="80" align="center"><strong>Do:</a></strong></td>
<td bgcolor="cccccc" colspan="2" >&nbsp;</td>
</tr>

<?php

while ($zaznam=mysql_fetch_row($dovolenka)):?>
<tr>

<td bgcolor="#FFFFFF" width="38" align="center"><b><?php echo $zaznam[0]?></b></td>
<td bgcolor="#FFFFFF" width="120" align="center"><b><?php echo $zaznam[1]?></b></td>
<td bgcolor="#FFFFFF" width="120" align="center"><b><?php echo $zaznam[2]?></b></td>
<td bgcolor="#FFFFFF" width="80" align="center"><b><?php echo $zaznam[3]?></b></td>
<td bgcolor="#FFFFFF" width="80" align="center"><b><?php echo $zaznam[4]?></b></td>
<td width="30" align="center" bgcolor="eeeeee">
<a href="edit-dovolenka.php?ic=<?php echo $zaznam[0]?>"><img src="img/edit.png" width="30" height="30"></a></td>
<td width="30" align="center" bgcolor="eeeeee">
<a href="javascript:confirmBox2(<?php echo $zaznam[0];?>)"><img src="img/delete.png" width="30" height="30"></a></td>
</tr>
<?php endwhile;?>
</table>
</td>
</tr>
<tr>
<td>
</td>
<tr>
</tr>
<td valign=TOP>
<table border="1" cellspacing="0" cellpadding="1">
<tr>
<tr><b>Servis:</b></tr>
<td bgcolor="cccccc" width="50" align="center"><strong>Dátum:</strong></td>
<td bgcolor="cccccc" width="30" align="center"><strong>ID:</strong></td>
<td bgcolor="cccccc" width="40" align="center"><strong>Cas:</a></strong></td>
<td bgcolor="cccccc" width="100" align="center"><strong>Spolocnost:</a></strong></td>
<td bgcolor="cccccc" width="200" align="center"><strong>Co:</a></strong></td>
<td bgcolor="cccccc" colspan="2" >&nbsp;</td>
</tr>

<?php

while ($zaznam=mysql_fetch_row($servis)):?>
<tr>

<td bgcolor="#FFFFFF"width="50" align="center"><b><?php echo $zaznam[0]?></b></td>
<td bgcolor="#FFFFFF"width="30" align="center"><b><?php echo $zaznam[1]?></b></td>
<td bgcolor="#FFFFFF"width="40" align="center"><b><?php echo $zaznam[2]?></b></td>
<td bgcolor="#FFFFFF"width="100" align="center"><b><?php echo $zaznam[3]?></b></td>
<td bgcolor="#FFFFFF"width="200" align="center"><b><?php echo $zaznam[4]?></b></td>
<td width="30" align="center" bgcolor="eeeeee">
<a href="edit.php?id=<?php echo $zaznam[1]?>"><img src="img/edit.png" width="30" height="30"></a></td>
<td width="30" align="center" bgcolor="eeeeee">
<a href="javascript:confirmBox(<?php echo $zaznam[1];?>)"><img src="img/delete.png" width="30" height="30"></a></td>
</tr>
<?php endwhile;?>
</table>
</td>
<td valign=TOP>
<table border="1" cellspacing="0" cellpadding="1">
<tr >
<tr><b>Oprava:</b></tr>
<td bgcolor="cccccc" width="50" align="center"><strong>Dátum:</strong></td>
<td bgcolor="cccccc
Zaciatocnik
Profil *
Nesedí to...tak teda riadok 46 kde sú vraj chyby je: session_start();
Zaciatocnik
Profil *
Odstránil som to: session_start(); a všetko funguje presne tak ako má.
Tori
Profil
Zaciatocnik:
session_start() musí být úplně na začátku* všech skriptů, které chtějí s tím datumem pracovat (takže i add-dovolenka.php a asi i to smazání záznamu?). Předpokládám, že v každém skriptu máte nějaký include s funkcemi apod. - tak řádky 3-6 z [#6] patří zrovna tam.

No a potom v tom vašem kódu např. na řádku 5 dáte
echo "Dnes je: ".date("j. n. Y ", $_SESSION['datum']);
, nebo do DB dotazu:
"SELECT ....  WHERE datum='" . date('Y-m-d', $_SESSION['datum']) . "' .... "


*na začátku = před jakýmkoli jiným výstupem, a raději i před ostatním PHP kódem.
Zaciatocnik
Profil *
Neviem prečo,ale keď som zmazal session_start(); tak všetko funguje presne tak ako má. A nič iné okrem toho index.php čo som sem nakopíroval som neupravoval. V každom prípade ďakujem Tori :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0