Autor | Zpráva | ||
---|---|---|---|
Martin998 Profil * |
#1 · Zasláno: 8. 9. 2011, 13:52:30
Čau,
prosím o radu... v PHP se vyznám jen tak letmo. Nicméně potřebuji vytvořit toto: administrátor se přihlásí na určitou stránku (to bych zvládl), kde bude několik checkboxů. Pokud zatrhne checkbox č.1, tak se na stránce (kterou vidí návštěvník) tabulka č.1 podbarví červeně. ---- Jde o situaci: Stránky s ubytováním http://roznov-ubytovani.cz/obsazenost.html , na nich jsou datumy. Potřebuji, aby si správce mohl sám naklikat, která pole budou podbarvena červeně. Počítám, že stránky se převedou na PHP Děkuji vám za nápady a řešení |
||
stepanka Profil * |
#2 · Zasláno: 8. 9. 2011, 14:53:01
Martin998:
Tak udělej v administraci obyčejný formulář, kde budou checkboxy pro všechny pole (datumy). Když administrátor x checkboxů zaškrtne a uloží, uloží se do databáze ke každému x. datu nějaký příznak. Na stránkách pak budeš kontrolovat, jestli má datum příznak nastaven, nebo nenastaven. Podle toho nastavíš podbarvení na červenou nebo bílou. |
||
Martin998 Profil * |
#3 · Zasláno: 8. 9. 2011, 15:19:29
No zníto pěkně ale vůbec nevím jak to udělat :( . Neumím si sestavit kód. Kdyby byl na netu nějaký funkční příklad, tak bych se nejspíš dokázal odpíchnout.
|
||
stepanka Profil * |
#4 · Zasláno: 8. 9. 2011, 15:36:33
Martin998:
Nejlepší pro Tebe je, pokud se s tak primitivním zadáním popereš sám, jinak se nic nenaučíš. Ale nějaký nástřel je zde: (nezkoušela jsem to...) Administrace: <?php if (isset($_POST['odeslat'])) { // pokud je odeslán formulář mysql_query("UDPATE tabulka SET cervena = 0"); // nejdříve vymažeme všechny příznaky, abychom mohli vložit pouze červené foreach ($_POST['datum'] as $datum) { // pro každý zaškrtnutý checkbox mysql_query("UPDATE tabulka SET cervena = 1 WHERE datum = '".$datum."'"); // vložíme červenou do databáze } } $sql = mysql_query("SELECT datum FROM tabulka"); // výběr dat pro formulář v administraci echo '<form action="" method="post">'; // formulář while ($row = mysql_fetch_object($sql)) { echo '<input type="checkbox" name="datum[]" value="'.$row->datum.'">'; // vytvoříme pole checkboxů } echo '<input type="submit" name="odeslat" value="Uložit">'; echo '</form>'; // ukončíme formulář ?> Vnější web: <?php $sql = mysql_query("SELECT * FROM tabulka"); // vybereme data z tabulky while ($row = mysql_fetch_object($sql)) { if ($row->cervena == 1) echo '<div style="background-color: red">'.$row->datum.'</div>'; // pokud je příznak nastaven na 1, zobrazíme červené pozadí else if ($row->cervena == 0) echo '<div style="background-color: white">'.$row->datum.'</div>'; // pokud je příznak nastaven na 0, zobrazíme červené pozadí } ?> |
||
CZechBoY Profil |
#5 · Zasláno: 8. 9. 2011, 22:31:22
<?php $datumy=Array(); ForEach($_POST['datum'] as $datum) If(checkDateFormat($datum)) $datumy[]=$datum; $sql=("UPDATE tabulka SET cervena=1 WHERE datum IN ('".Implode("','",$datum)."')"); // vložíme červenou do databáze @MySQL_Query($sql) Or Die(MySQL_Error()); function checkDateFormat($date) { //match the format of the date If (preg_match ("/^([0-9]{2}).([0-9]{2}).([0-9]{4})$/", $date, $parts)) { //check weather the date is valid of not return (checkdate($parts[2],$parts[3],$parts[1])) } Else return false; } ?> to je update datumů v administraci (lepší výkonnost díky použití pouze jednoho MySQL_Query a validace datumu) v tom formuláři by samozřejmě byla bezpečnostní chyba - CSRF a vypisovaly by se i datumy z minulosti, což není někdy žádané a proto bych tam dal WHERE? který by omezoval výpis třeba na 3 měsíce zpátky |
||
Martin 998 Profil * |
#6 · Zasláno: 10. 9. 2011, 14:51:48
Můžete mi ještě poradit s databází prosím?
Na stránkách jsem připojen k databázi pomocí configu ve kterém mám <? $server = "localhost"; // jméno serveru $login = "root"; // přihlašovací jméno $heslo = "123456"; // heslo $databaze = "test"; // název databáze MySQL_Connect($server, $login, $heslo) or die("Nepodařilo se připojit k databázi"); // připojení k databázi MySQL_Select_DB($databaze) or die("Nepodařilo se otevřít databázi"); // výběr databáze ?> To je předpokládám dobře :) S čím si nevím rady to je databáze: Zatím to mám vytvořené takto ale myslím, že to není dobře http://img8.imageshack.us/img8/5097/mysqlc.png |
||
Martin 998 Profil * |
#7 · Zasláno: 10. 9. 2011, 15:05:19
Tak ještě trochu jinak, ještě jsem tam vytvořil jeden sloupeček:
Uvšem když dám v adinistraci Uložit, tak mi to vyhodí chybu: Warning: Invalid argument supplied for foreach() in C:\AppServ\www\www-LACINOVA\admin.php on line 6 |
||
Martin 998 Profil * |
#8 · Zasláno: 10. 9. 2011, 15:15:23
A ještě jeden problém,
podle kódu by se měl na stránce zobrazit checkbox, ovšem nikde tam není. Nevíte kde je chyba? http://img717.imageshack.us/img717/3447/checkph.png |
||
stepanka Profil * |
#9 · Zasláno: 12. 9. 2011, 09:11:53
CZechBoY:
„@MySQL_Query($sql) Or Die(MySQL_Error());“ Tímto jsi chtěl říct co? Martin 998: V databázi Ti chybí primární sloupec, dej tam: id = INT(10), PRIMARY KEY, AUTO INCREMENT cervena = TINYINT(1), default 0 datum = DATETIME „Ovšem když dám v adinistraci Uložit, tak mi to vyhodí chybu“ Nevíme který kód jsi použil, kdyžtak ho sem musíš zkopírovat, abychom našli chybu. |
||
Časová prodleva: 13 let
|
0