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: 12 let
|
0