Autor Zpráva
Solidgauleiter
Profil
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
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
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
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
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
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
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
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ší.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0