« 1 2
Autor Zpráva
Fisir
Profil
Reaguji na nadsence:
To, že budeš mít v databázi zvláštní sloupce pro sobotu a neděli ještě nemusí znamenat, že je musíš odděleně vypisovat.
Petr_
Profil *
Bude vubec treba podle tech hodnot casu a oteviracich dob nejak radit nebo vyhledavat? Jestli ne, tak bych na to sel uplne jednoduse:
TinyMCE editor s predgenerovanou vzorovou tabulkou a omezenym poctem formatovacich tlacitek. Vse by stacilo ulozit do jednoho varchar/text sloupce do DB a pred ulozenim jeste pro jistotu prohnat pres HtmlPurifier na whitelist povolenych tagu.
mimochodec
Profil
Petr:
To bylo úplně to první, co mě napadlo. Jestli jde o tři prodejny nábytku a čtyřstránkový web se třemi otvíračkami pod sebou (jen moje spekulace, jedna z možností), není co víc řešit.
nadsenec
Profil *
TinyMCE jsem zvažoval taky, navíc ten web běží na WordPressu, ale rozhodl jsem se to pojmout formou naučení se něčeho nového. Jsem hlavně kodér, ne programátor.
nadsenec
Profil *
Hraju si teď s těma sessionama a chci se zeptat - jak elegantně zapsat podmínku, aby když je session vytvořena zobrazovat rovnou fotmulář pro zápis? Mně napadá toto...

if (isset($_SESSION["username"])) {

    ...zobrazit rovnou formulář pro zápis do DB...

} elseif ( (!empty($_POST['username'])) && (!empty($_POST['password'])) ) {

    ...taky zobrazit formulář pro zápis do DB (stejný jako výše)...

} else {

    ...zobrazit formulář pro přihlášení...
    
}

...ale určitě se to dá napsat nějak elegantněji, co?

Díky.
Alphard
Profil
Vrstvy s přihlášením a samotnou akcí (úprava otevírací doby) nechte oddělené.
Na začátek stránek vyžadujících přihlášení dejte kontrolu $_SESSION, pokud jsou v nepořádku, přesměrujte na login stránku. A dále už předpokládejte, že je uživatel přihlášený s jménem $_SESSION["username"].
nadsenec
Profil *
Alphard: Jak to myslíte? V tuhle chvíli jsou oddělené - po "přihlášení" se zobrazí formulář (ale vše je v jednom skriptu), který se zpracovává v dalším PHP, viz ty úryvky kódů, které jsem tady postoval. Nebo to myslíte tak, že mám mít tři PHPka, něco jako: login.php, po přihlášení dojde k přesměrování na formular.php a samotné zpracování bude v formular-zpracovani.php? Díky.
Alphard
Profil
Jde o logické členění aplikace. Rozdělení do souborů tomu nemusí nutně odpovídat, ale vyčlenění přihlášení by bylo přínosné.

# stránka pro administraci otevírací doby
if (!isLoggedIn()) {
  # přesměrování na stránku s přihlášením
  header(...);
}

# tady už se zabýváme výhradně otevírací dobou
if (isset($_POST['...'])) {
  # zpracování přijatých dat
} else {
  # zobrazení formuláře pro zadání otevírací doby
}
nadsenec
Profil *
Alphard: Přiznám se, že moc nevím, jak to myslíte. Udělal jsem to aktuálně takto. Skript s přihlášením...

<?php
//Session na uživatele
session_start();
session_regenerate_id();

// Kontrola odhlášení
if (isset($_SESSION['username']) && isset($_GET['logout']) && $_GET['logout'] == "ano" ) {
    session_unset();
    session_destroy();
}

include 'design.inc.php';

page_header("Příhlášení");

//Přihlášení
if (isset($_SESSION['username'])) {  
    
$username = $_SESSION["username"];  

if ($_GET['stav'] == "zapsano") {
    echo '<p>Data úspěšne zapsána.</p>';
}

if ($_GET['stav'] == "aktualizovano") {
    echo '<p>Data úspěšne aktualizována.</p>';
}
?>

<p>Přihlášen uživatel: <?php echo $username; ?></p>
<form action="test-zpracovani.php" method="post">
    Otevírací doba pro:<br>
    <input type="radio" name="pobocka" value="Město1" checked>Město1<br>
    <input type="radio" name="pobocka" value="Město2">Město2<br><br>
    Pondělí:  <input name="pondeli" type="text"><br>
    Úterý:  <input name="utery" type="text"><br>
    Středa:  <input name="streda" type="text"><br>
    Čtvrtek:  <input name="ctvrtek" type="text"><br>
    Pátek:  <input name="patek" type="text"><br>
    So + Ne: <input name="vikend" type="text"><br><br>
    Kontrola: <input name="kontrola" type="text" value="kontrola"><br> <!-- Nastavit display: none; -->
    <input name="submit" type="submit" value="Odeslat">
</form>

<a href="test.php?logout=ano">Odlásit se</a>

<?php    
    
} elseif ( (!empty($_POST['username'])) && (!empty($_POST['password'])) ) { // elseif Přihlášení

//Sanitace username
$username = filter_var($_POST['username'],FILTER_SANITIZE_STRING);
$username = trim($username);

//Sanitace password
$password = filter_var($_POST['password'],FILTER_SANITIZE_STRING);
$password = trim($password);

//Definuj proměnné ke kontrole
$username_check = "test";
$password_check = "test";

//Kontrola uživatelského jména a hesla
if ( ($username == $username_check) && ($password == $password_check) ) {
    
    $_SESSION["username"] = $username;        

 ?>

<p>Přihlášen uživatel: <?php echo $username; ?></p>
<form action="test-zpracovani.php" method="post">
    Otevírací doba pro:<br>
    <input type="radio" name="pobocka" value="Město1" checked>Město1<br>
    <input type="radio" name="pobocka" value="Město2">Město2<br><br>
    Pondělí:  <input name="pondeli" type="text"><br>
    Úterý:  <input name="utery" type="text"><br>
    Středa:  <input name="streda" type="text"><br>
    Čtvrtek:  <input name="ctvrtek" type="text"><br>
    Pátek:  <input name="patek" type="text"><br>
    So + Ne: <input name="vikend" type="text"><br><br>
    Kontrola: <input name="kontrola" type="text" value="kontrola"><br> <!-- Nastavit display: none; -->
    <input name="submit" type="submit" value="Odeslat">
</form>

<a href="test.php?logout=ano">Odlásit se</a>

<?php
} else {
?>

<p>Nesprávné uživatelské jméno nebo heslo!</p>
<form action="test.php" method="post">
    Jméno:  <input name="username" type="text"><br>
    Heslo: <input name="password" type="password"><br><br>
    <input name="submit" type="submit" value="Přihlásit">
</form>

<?php
} //Konec Kontrola uživatelského jména a hesla
    
} else { // else Přihlášení

?>

<p>Vyplňte uživatelské jméno a heslo!</p>
<form action="test.php" method="post">
    Jméno:  <input name="username" type="text"><br>
    Heslo: <input name="password" type="password"><br><br>
    <input name="submit" type="submit" value="Přihlásit">
</form>

<?php
} // konec Přihlášení
?>

...a skript pro zpracování...

<?php
session_start();
session_regenerate_id();
        
//Připojení k DB
include 'db_connection.php';

//Podmínka kontrolující, jestli přišla nějaká data z formuláře
if ( (($_POST['kontrola']) == "kontrola") && isset($_SESSION["username"]) ) {
    
//Sanitace pondeli a stanovení default hodnoty
if (!empty($_POST['pondeli'])) {        
    $pondeli = filter_var($_POST['pondeli'],FILTER_SANITIZE_STRING);
    $pondeli = trim($pondeli);
} else { 
    $pondeli = "Kontaktujte kancelář na tel. čísle...";    
}
 
//Sanitace utery a stanovení default hodnoty
if (!empty($_POST['utery'])) {        
    $utery = filter_var($_POST['utery'],FILTER_SANITIZE_STRING);
    $utery = trim($utery);
} else { 
    $utery = "Kontaktujte kancelář na tel. čísle...";    
}

//Sanitace streda a stanovení default hodnoty
if (!empty($_POST['streda'])) {        
    $streda = filter_var($_POST['streda'],FILTER_SANITIZE_STRING);
    $streda = trim($streda);
} else { 
    $streda = "Kontaktujte kancelář na tel. čísle...";    
}

//Sanitace ctvrtek a stanovení default hodnoty
if (!empty($_POST['ctvrtek'])) {        
    $ctvrtek = filter_var($_POST['ctvrtek'],FILTER_SANITIZE_STRING);
    $ctvrtek = trim($ctvrtek);
} else { 
    $ctvrtek = "Kontaktujte kancelář na tel. čísle...";    
}

//Sanitace patek a stanovení default hodnoty
if (!empty($_POST['patek'])) {        
    $patek = filter_var($_POST['patek'],FILTER_SANITIZE_STRING);
    $patek = trim($patek);
} else { 
    $patek = "Kontaktujte kancelář na tel. čísle...";    
}

//Sanitace vikend a stanovení default hodnoty
if (!empty($_POST['vikend'])) {        
    $vikend = filter_var($_POST['vikend'],FILTER_SANITIZE_STRING);
    $vikend = trim($vikend);
} else { 
    $vikend = "Zavřeno";    
}

//Sanitace pobocka - možná není třeba, je to radio button
$pobocka = filter_var($_POST['pobocka'],FILTER_SANITIZE_STRING);

//Zjištění rowcount pro kontrolu, jestli se provede INSERT nebo UPDATE
$sql = "SELECT * FROM oteviraci_doba WHERE pobocka ='$pobocka'; ";
$result = mysqli_query($connection, $sql);
$rowcount = mysqli_num_rows($result);

//Kontrola, jestli se provede INSERT nebo UPDATE
if( mysqli_num_rows($result) > 0) {

    //Multi query do DB - UPDATE
    $sql = "UPDATE oteviraci_doba SET oteviraci_doba = '$pondeli' WHERE den = 'Po:' AND pobocka = '$pobocka' ;";
    $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$utery' WHERE den = 'Út:' AND pobocka = '$pobocka' ;";
    $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$streda' WHERE den = 'St:' AND pobocka = '$pobocka' ;";
    $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$ctvrtek' WHERE den = 'Čt:' AND pobocka = '$pobocka' ;";
    $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$patek' WHERE den = 'Pá:' AND pobocka = '$pobocka' ;";
    $sql .= "UPDATE oteviraci_doba SET oteviraci_doba = '$vikend' WHERE den = 'So + Ne:' AND pobocka = '$pobocka' ;";

    if (mysqli_multi_query($connection, $sql)) {
        header("location:."/test.php?stav=aktualizovano]http://".$_SERVER['SERVER_NAME']."/test.php?stav=aktualizovano", TRUE, 303);
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }    
    
} else {
    
    //Multi query do DB - INSERT
    $sql = "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Po:', '$pondeli', '$pobocka');";
    $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Út:', '$utery', '$pobocka');";
    $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('St:', '$streda', '$pobocka');";
    $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Čt:', '$ctvrtek', '$pobocka');";
    $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('Pá:', '$patek', '$pobocka');";
    $sql .= "INSERT INTO oteviraci_doba (den, oteviraci_doba, pobocka) VALUES ('So + Ne:', '$vikend', '$pobocka');";

    if (mysqli_multi_query($connection, $sql)) {
        header("location:."/test.php?stav=zapsano]http://".$_SERVER['SERVER_NAME']."/test.php?stav=zapsano", TRUE, 303);
        echo "Hodnoty úspěšně zapsány.";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

} // Konec Kontrola, jestli se provede INSERT nebo UPDATE

mysqli_close($connection);
    
} else {
    header("location:."/test.php]http://".$_SERVER['SERVER_NAME']."/test.php", TRUE, 303);
    exit;
} // Konec Podmínka kontrolující, jestli přišla nějaká data z formuláře

?>
« 1 2

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: