Autor Zpráva
quish
Profil *
*Vím, že název topicu není nejlepší, ale nenapadlo mě nic lepšího*
Potřeboval bych poradit kde dělám chybu. Jedná se o takovou jednoduchou administrací volných termínů.
Mám celkem 3 soubory, první z nich se bude zobrazovat návštěvníkům.
Důležity obsah:
<?php
$termin1 = "<div class=\"termin\"><div class=\"termin-text\">28.04.2012<br>05.05.2012<br>10 698,-<br></div><input class=\"tlacitko\" name=\"datum\" type=\"radio\" value=\"28.04.2012 - 05.05.2012\"></div>";  //jasně dáno, jak má vypadat $termin1
$termin1off = "<div class=\"rezervovano\"><div class=\"termin-text\">28.04.2012<br>05.05.2012<br>rezervováno<br></div></div>"; //jasně dáno, jak má vypadat $termin1off
?>
<?php
include 'databaze/config.php';   //připojení na databázi, který by měla říct zda-li je $termin1of FALSE nebo TRUE
            mysql_connect($dbserver, $dblogin, $dbpassword); 
            mysql_select_db($dbname);
            mysql_query("SET NAMES 'cp1250'"); 
?>
<?php 
  if ($termin1of) {echo "$termin1off";} else {echo "$termin1";} //podle toho jestli co řekne databáze se zobrazí $termin1off nebo $termin1
?>

Druhý soubor má vytvořit databázi a tabulku:
<?php
include 'databaze/config.php';
 
            mysql_connect($dbserver, $dblogin, $dbpassword);
           
            mysql_query("SET NAMES 'cp1250'"); //
           
 
mysql_query("CREATE DATABASE `rezervace` ;")
or die("Nastala chyba: " . mysql_error());
echo '<b>Databáze vytvořena.</b>';
exit;
mysql_close();
?>
<?php
include 'databaze/config.php';
 
            mysql_connect($dbserver, $dblogin, $dbheslo,);
            mysql_select_db("rezervace");
            mysql_query("SET NAMES 'cp1250'");
mysql_query("CREATE TABLE `rezervace` (
           `termin1of`
           ) ")
or die("Nastala chyba: " . mysql_error());
echo '<b>Tabulka blya vytvořena.</b>';
exit;
mysql_close();
?>
Pomocí třetího souboru admin určí zda-li je hodnota true/false
<?php
 
include 'databaze/config.php';
        mysql_connect($dbserver, $dblogin, $dbpassword);
        mysql_select_db("rezervace");
        mysql_query("SET NAMES 'cp1250'");
if(isset($_POST['send']))
{
        $termin1of = htmlspecialchars($_POST['termin1of']);
        $vloz ="insert into rezervace set
       termin1of='".$termin1of."', ;";
        $result=mysql_query($vloz);
        echo 'Úspěšně změněno';
mysql_close();
?>
<form  method="post">
                        <select name="termin1of" size="1"><option value="TRUE">Rezervováno<option value="FALSE">Volné</select> 
<input type="submit" value="Vytvořit" name="send">
    </form>   
}
Původně mají soubory mnohem více hodnot, ale abych zachoval přehlednost nechal jsem jen hodnoty pro $termin1.
Nevím, zda-li k nečemu takovému vytvářím správným postupem tabulku, nebo jestli je chyba až při ukládání do ní.
Jen pro úplnost, když manuálně do prvního souboru vložím:
<?php 
$termin1of = TRUE; //nebo false
?>
tak vše jede přesně podle představ.
Předem děkuji za nápady, až to bude celé kompletně funkční tak to někam nahraji aby to mohl kdokoli použít jako jednoduchý rezervační systém.
Davex
Profil
quish:
podle toho jestli co řekne databáze se zobrazí $termin1off nebo $termin1
Nějak tam nevidím, že by se někdo na něco databáze ptal. Nechybí tam nějaký SELECT?
mimochodec
Profil
A já zase vidím CREATE DATABASE a CREATE TABLE. Nerozumím přesně, o co se snažíš, ale jestli chceš za chodu jednoduchého rezervačního systému vytvářet databáze a v nich tabulky, je to špatně.
quish
Profil *
Davex:
To bude asi pravda, vůbec mi nedošlo, že tam mám hodit select. Vycházel jsem z toho, že když do toho prvního souboru vložím "require" a odkaz na soubor, ve kterém je právě "$termin1of = TRUE", tak to funguje. Tak bude stačit, aby se to připojilo k databázi - očividně ne :).
mimochodec:
Za chodu samozřejmě ne, napřed bych vytvořil databázi a v ní tabulku, do které bych pak následně uložil, zda-li je ta jednotlivá hodnota true/false.


Pro přiblížení situace.
Mám pevně daných několik termínu, které jsou zobrazeny na stránkách. Když chce návštěvník stránek termín zarezervovat ťukne si na něj (html radio button), vyplní kontaktní formulář a php skript odešle zprávu na email. Já se pak podívám co mi přišlo a pakliže se mi ten "zákazník" zamlouvá, přihlásím se do administrace (třetí soubor) najdu si tam ten termín co potřebuju změnit, vyberu možnost Rezervováno, která bude odpovídat true, a dám uložit. Tento údaj se uloží do databáze a na stránkách u toho termínu bude napsáno zarezervováno. Jelikož mám všechny termíny už nadefinované ($termin1 x $termin1off), potřebuji už jen zajistit, aby se pomocí té jednoduché administrace měnila hodnota na true nebo false.
mimochodec
Profil
quish:
Pořád nevím, k čemu ten druhý soubor má sloužit. Jestli máš jasno v tom, že potřebuješ jednu databázi s jednou tabulkou a jejich vytváření nepotřebuješ obhospodařovat pomocí php, tak ok.

[#4] chápu tak, že:
- administrátor vytváří termíny a potvrzuje objednávky
- návštěvník vybírá z existujících volných termínů

Takže potřebuješ jednu tabulku, kde bude ID, datum, údaje o objednávajícím a jeden INT(1) pro potvrzení, že objednávka platí.
Admin objednávku buď potvrdí (ta se přestane nabízet, ale admin ji pořád uvidí), nebo vymaže objednávajícího.

Oprav mě, jestli jsem něco napsal špatně a napiš, s čím si nevíš rady.
quish
Profil *
mimochodec:
Jojo, databáze s tabulkou se vytvoří jen na začátku, takže ten druhý soubor se použije jen jednou. Uvedl jsem ten kód proto, aby bylo jasné co jsem zatím udělal.

Termíny už jsou vytvořeny, administrátor jen vybere, který chce označit za zarezervovaný. Nebude je tedy nikterak měnit.
Ano návštěvník si vybírá z existujících volných.

No přesně nevím co všechno potřebuji mít v tabulce, ale věřím, že jediné co potřebuji aby ta tabulka obsahovala je to, zda-li je $termin1of = TRUE; (nebo false), $termin2of = TRUE; atp.
Mám už nadefinováno co se má zobrazit pokud je true nebo false, takže jediné co potřebuji po databázi je aby věděla zda-li je true nebo false.

Na tomto: http://www.quish.cz/data/upload/terminy.rar je ta část kódu, která má být na té stránce co se bude zobrazovat návštěvníkům.
Pokud do toho přidáš
<?php 
$termin1of = TRUE;
$termin2of = TRUE;
$termin3of = FALSE;
$termin4of = FALSE;
$termin5of = FALSE;
?>
uvidíš jak by se to mělo změnit.


A konkrétně si teda nevím rady s tím, jak z databáze pomoci selectu vybrat právě to co potřebuji a nejsem si ani jistý, jestli ten způsob jak do databáze uložit to true a false je funkční.
mimochodec
Profil
quish:
Jdeš na to špatně. Zapomeň na proměnné $termin1of až $terminXof. Používej cykly, indexy, když pracuješ s databází, identifikuj záznamy pomocí ID. Takto jednoduše můžeš nabídnout volné termíny. A je jedno, jestli jich je pět nebo tisíc.

    $strQuery2 = "SELECT * FROM terminy WHERE obsazeno=0";
    $vysledek2 = mysql_query( $strQuery2);
    $num_rows2 = mysql_num_rows($vysledek2);

    echo "<select name='termin'>";

    while ($zaznam2=MySQL_Fetch_Array($vysledek2)):
      echo "<option value='".$zaznam2["ID"]."'>".$zaznam2["datum"]."</option>";
    endwhile;

    echo "</select>";

Toto začleň do nějakého formuláře, kde návštěvník vypíše kontaktní údaje. Po odeslání formuláře načti hodnotu POST["termin"] a podle ní patřičnému řádku přiřaď ty údaje z formuláře.

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: