| Autor | Zpráva | ||
|---|---|---|---|
| Solidgauleiter Profil |
#1 · Zasláno: 7. 4. 2012, 12:01:43
Zdravím.. Spravil som bloknutie formulára na každý deň v daný čas. Teraz neviem spraviť a trápim sa s tým, aby som na každý deň alebo rozpätie dní nastavil daný čas, kedy sa formulár zobrazí.
Takže teraz sa mi formulár objaví od 11:00 do 21:30. každý deň. A ak je iný čas tak je tam odkaz. Ja to potrebujem prerobiť že od pondelka do soboty ho zobrazí v tomto časovom limite a v nedeľu od 16:00 do 21:30. Už som spravil date D kde sa vyjadruje deň v ang. na tri písmená (Mon,Tue...).. Ďalej neviem ako.. neporadíte mi ? :) <?php
$den=date("D"); // Mon, Tue, Wen, Thu, Sat, Sun || Mon-Sat 11:00-21:30 / Sun 16:00-21:30 => Môj prípad
$hodiny=date("G"); // 0-23 || 11-21
$minuty=date("i"); // 00-59
if( $hodiny>11 || ($hodiny==11 && minuty>=00) ){
if($hodiny <21 || ($hodiny==21 && $minuty<31) ){
?>
Formulár
<?php
}else{
?>
Odkaz ak je formulár skrytý
<?php
}
}else{
?>
Odkaz ak je formulár skrytý
<?php
}
?> |
||
| mimochodec Profil |
Nepotřebuješ date("D"), ale date("N") (den v týdnu, 1=po, 7=ne) Nad ty dva ify dáš ještě jeden, kde to date("N") bude.
A doporučoval bych neotvírat a nezavírat php na každém třetím řádku, zbytečně si to znepřehledňuješ. |
||
| Solidgauleiter Profil |
#3 · Zasláno: 7. 4. 2012, 12:29:44
Skúšam to spraviť ale stále mi to nejde. Nemôžem ten Day vložiť do tých if čo už mám ? asi nie čo ? Nemám potuchy jak nato :/
|
||
| mimochodec Profil |
$form = false;
$cas = 60*$hodiny + $minuty;
if (date("N")==7) {
if ( $cas >= (60*11) ) {
$form = true;
}
} else {
if ( $cas >= (60*11) and $cas <= (60*21+30) ) {
$form = true;
}
}
if ( $form ) {
echo "<form action='file.php' method='post'>";
echo "<input>";
echo "</form>";
} else {
echo "<a href='soubor.html'>Odkaz</a>";
} |
||
| Solidgauleiter Profil |
#5 · Zasláno: 7. 4. 2012, 13:00:13
Tak teraz si mi dal zabrať.. kus zložitejší kód vidím :) Ale ksúsil som to spraviť.. Pokiaľ som dobre pochopil, ty si zmenil celý kód .. Ale zle som ho spojil asi .. Som ho spravil takto no :
Ale myslím si, že toto mala byť tá podmienka pred tými dvoma.. Ale aj to som skúšal, no bezvýsledne :/ <?php
$form = false;
$cas = 60*$hodiny + $minuty;
if (date("N")==7) {
if ( $cas >= (60*16) ) {
$form = true;
}
} else {
if ( $cas >= (60*11) and $cas <= (60*21+30) ) {
$form = true;
}
}
if ( $form ) {
?>
FORMULÁR
<?php
} else {
?>
ODKAZ
<?php
}
?> |
||
| mimochodec Profil |
#6 · Zasláno: 7. 4. 2012, 13:12:46
Solidgauleiter:
„Pokiaľ som dobre pochopil, ty si zmenil celý kód .. Ale zle som ho spojil asi“ Nad tím mým kódem je potřeba odněkud vzít $hodiny a $minuty. Upravil jsem konec, kde jsem naznačil formulář a odkaz. Takhle bys to opravdu pochopit mohl. |
||
| Solidgauleiter Profil |
No problém mi totiž robí spracovanie formulára a odkazu do echa.. + Uprava: A keď nstavím hociako čas aj deň, stále tam mám odkaz.. nikdy nie form..
Celý PHP vyzerá takto zatiaľ: <?php
$den=date("N"); // 1-Mon, Tue, Wen, Thu, Sat, Sun-7 || 1-Mon-Sat-6 11:00-21:30 / 7-Sun 16:00-21:30 / 1-7 Mon-Sun
$form = false;
$cas = 60*$hodiny + $minuty;
$hodiny=date("G"); // 0-23 || 11-21
$minuty=date("i"); // 00-59
if (date("N")==7) {
if ( $cas >= (60*16) ) {
$form = true;
}
} else {
if ( $cas >= (60*11) and $cas <= (60*21+30) ) {
$form = true;
}
}
if ( $form ) {
echo "<? include "php/form.php"; ?>"; // Formulár
} else {
echo "<? include "php/message.php"; ?>"; // Odkaz
}
?>Tu je form a message <form name="objednavka" id="objednavka" action="odoslat.php" method="post" onsubmit="return over()">
<div id="rows"></div>
<script>onload = add_row();</script>
<a style="float:right;margin-top:-40px;margin-right:-5px;cursor:pointer" onclick="add_row();" title="Pridať ďalšiu objednávku..."><img src="images/plus1.png" alt="+"></a>
<input type="text" id="name" name="meno" value=" Vaše meno" onfocus="if (this.value==' Vaše meno') this.value='';" onblur="if(this.value=='') { this.value=' Vaše meno'; return false; }" style="width:255px" /><br>
<input type="text" name="priezvisko" value=" Vaše priezvisko" onfocus="if (this.value==' Vaše priezvisko') this.value='';" onblur="if(this.value=='') { this.value=' Vaše priezvisko'; return false; }" style="width:255px" /><br>
<input type="text" name="adresa" value=" Vaša presná adresa" onfocus="if (this.value==' Vaša presná adresa') this.value='';" onblur="if(this.value=='') { this.value=' Vaša presná adresa'; return false; }" style="width:255px" /><br>
<input type="text" name="kontakt" value=" Vaše tel. číslo" onfocus="if (this.value==' Vaše tel. číslo') this.value='';" onblur="if(this.value=='') { this.value=' Vaše tel. číslo'; return false; }" style="width:255px" /><br><br>
<textarea name="poznamky" cols="33" rows="3" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;">
Poznámky k objednávke
</textarea>
<button type="submit" name="submit" value="Odoslať objednávku"> Odoslať objednávku </button>
<button type="reset" name="reset" value="Vymazať objednávku"> Reset objednávky </button>
<h6><a href="kontakty.php">V prípade, že Vás do 5min. neprezvoní číslo pizzerie, volajte !</a></h6>
</form><div class="lock"> <center> <h1>Objednávky príjmame len:<br> Po. - Sob.: 11:00 - 21:30<br> Ned.: 16:00 - 21:30</h1> </center> </div> |
||
| mimochodec Profil |
#8 · Zasláno: 7. 4. 2012, 13:53:40
Solidgauleiter:
Proměnnou $den nepotřebuješ. Na ř. 18 a 20 jsem myslel, že budeš neco vypisovat. Jestli tám máš include, tak tam echo nepatří a má tam být jen include "php/form.php";
Ještě jsem si všiml, že jsem špatně četl ty časy, takže na ř. 8 se ověřuje, jestli je 16 h nebo víc, což jsi nechtěl, ale určitě samostatně opravíš :) Obsah těch includovaných souborů se mi moc zkoumat nechce, ale jestli v nich nemáš chybu, tak to musí fungovat. Projev trochu iniciativu - jestli to nefunguje, tak se snaž najít příčinu. To php je přehledné a musíš to pochopit. |
||
| Solidgauleiter Profil |
#9 · Zasláno: 7. 4. 2012, 14:01:30 · Upravil/a: Solidgauleiter
No. Všetko funguje.. Ale neviem či si dobre spravil ten kód.. Teda akokoľvek nastavím čas, vždycky je tam odkaz ..
Výsledný kód je : <?php
$form = false;
$cas = 60*$hodiny + $minuty;
$hodiny=date("G"); // 0-23 || 11-21
$minuty=date("i"); // 00-59
if (date("N")==7) {
if ( $cas >= (60*11) ) {
$form = true;
}
} else {
if ( $cas >= (60*11) and $cas <= (60*21+30) ) {
$form = true;
}
}
if ( $form ) {
include "php/form.php"; // Formulár
} else {
include "php/message.php"; // Odkaz
}
?>Nechýba tam ešte niečo s časom ? Podľa ňa áno.. Ale čo .. Ešte raz napíšem akoby to malo vyzerať.. Po. - Sob. = formulár sa ukáže od 11:00-21:30 Ned. = 16:00-21:30 |
||
| Solidgauleiter Profil |
#10 · Zasláno: 8. 4. 2012, 11:03:52
Už som to asi spravil.. Podmienku if som skonštruoval kus inak. Ešte to odtestovať :)
<?php
$form = false;
$cas = 60*$hodiny + $minuty;
$hodiny=date("G"); // 0-23 || 11-21
$minuty=date("i"); // 00-59
if (date("N")==7) {
if( $hodiny>16 || ($hodiny==16 && minuty>=00) ){
$form = true;
}
} else {
if ( $hodiny>11 || ($hodiny==11 && minuty>=00) and $hodiny <21 || ($hodiny==21 && $minuty<31) ) {
$form = true;
}
}
if ( $form ) {
include "php/form.php"; // Formulár
} else {
include "php/message.php"; // Odkaz
}
?> |
||
| mimochodec Profil |
#11 · Zasláno: 8. 4. 2012, 16:05:48
Jestli to děláš takhle, tak ten $cas nepotřebuješ, můžeš ho smazat.
Až teď vidím, proč ti nefungovalo to #7 - $cas = 60*$hodiny + $minuty máš dřív, než $hodiny a $minuty získáš.
To tvoje #10 nejspíš bude fungovat taky, jen mi to moje řešení připadalo přehlednější. |
||
|
Časová prodleva: 14 let
|
|||
0