Novinky na serveru JPHomepage Programovíní v PHP Programování v Delphi Novinky ze světa Software Novinky ze světa Hardware Webdesign Grafika - Vlastni tvorba Ostatní

Vytvořte si anketu v php(díl 2.)

Pro vlastní zprávu anket jsem navrhl malý projekt, který zařídí všechny základní operace.Je třeba si uvědomit že jde o zprávu dvou tabulek. První znich "" obsahuje hlavičku ankety .... tedy otázku a další podrobnosti ankety a druhá tabulka obsahuje odpovědi. Mezi těmito tabulkami existuje relace 1-n. Platí tedy že k jednomu záznamu v tabulce hlaviček připadá více záznamů v tabulce odpovědí. Pro názorné uzpořádání scriptů tohoto projktu slouží následující obrázek.

 
 

Zcela mimo jsou postaveny scripty keré anketu přidávají. Jde o scripty anketa_i01.php a anketa_i02.php. První znich je vstupním formulářem a druhý znich pak provádí vlasní zápis do databáze. Script anketa_i02.php požívá pro konektování stejný script jako jsme si ukázali v předchozím díle. Vlastní uložení do databáze pak vypadá asi takto:


 
mysql_query("INSERT INTO anketa_hlavicka (otazka,sirka) VALUES ('$otazka',$sirka)");
 

Proměnné $otazka a $sirka se předávají z formuláře ve scriptu anketa_i01.php. Jde o vlastní otázku ankety a šířku ankety v obrazových bodech. Pro jednoduchost zde nejsou zařazeny žádné větší kontroly zprávnosti vyplnění polí formuláře.

Srdcem celého projektu je seznam všech anket ve scriptu anketa_all.php. V jeho jádru je tabulka vypisující všechny ankety..


<?
echo "<p>&nbsp;</p>\n";
echo "<div align=\"center\"><table align=\"center\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\">\n";
$vysledek1=mysql_query("SELECT * FROM anketa_hlavicka");
while ($zaznam1 = MySQL_Fetch_Array($vysledek1)):
$id=$zaznam1["id_anketa"];
echo "<tr><td><b>Název Ankety</b></td><td><b>Šířka</b></td><td><b>Aktivní</b></td><td><b>Datum Ankety</b></td><td colspan=\"2\"><b>Tools</b></td><td><a href=\"anketa_active.php?id=$id\">Aktivovat</a></td></tr>\n";
echo "<tr>";
echo "<td>".$zaznam1["otazka"]."</td>";
echo "<td align=\"center\">".$zaznam1["sirka"]."</td>";
echo "<td align=\"center\">".$zaznam1["active"]."</td>";
echo "<td>".$zaznam1["datum"]."</td>";
echo "<td><a href=\"anketa_e01.php?id=$id\">opravit</a></td>";
echo "<td><a href=\"anketa_d02.php?id=$id\">smazat</a></td>";
echo "<td><a href=\"anketa_jedna.php?id=$id\">ukázat</a></td>";
echo "</tr>\n";

echo "<tr><td><b>Odpovědi</b></td><td><b>Počet</b></td><td colspan=\"2\"><b>Barva</b></td><td colspan=\"2\"><b>Tools</b></td><td><a href=\"odpoved_i01.php?id=$id\">Přidat</a></td></tr>\n";
$vysledek2=mysql_query("SELECT * FROM anketa_odpoved WHERE id_anketa=$id");
while ($zaznam2 = MySQL_Fetch_Array($vysledek2)):
echo "<tr>";
echo "<td>&nbsp;&nbsp;&nbsp;".$zaznam2["odpoved"]."</td>";
echo "<td align=\"center\">".$zaznam2["pocet"]."</td>";
echo "<td colspan=\"2\"><img src=".$zaznam2["barva"]." width=\"100\" height=\"12\" border=\"0\"></td>";
echo "<td><a href=\"odpoved_e01.php?id=".$zaznam2["id_odpoved"]."\">opravit</a></td>";
echo "<td><a href=\"odpoved_d02.php?id=".$zaznam2["id_odpoved"]."\">smazat</a></td>";
echo "<td>&nbsp;</td>";
echo "</tr>\n";
endwhile;

echo "<tr><td colspan=\"7\"><hr size=\"1\" noshade></td></tr>\n";

endwhile;
echo "</table></div>\n";
echo "<BR>";
?>


Pokud budete chtít opravit hlavičku ankety zavoláte scripty anketa_e01.php a anketa_e02.php s parametrem ID = ID_Anketa z databáze. První znich je opět formulář podobný formuláři pro přidávání. Hlavním rozdílem je naplnění položek z databáze. Výkonný script anketa_e02.php pak provede následující.

 
mysql_query("UPDATE anketa_hlavicka SET otazka='$otazka' ,sirka=$sirka WHERE id_anketa=$id");
 

Rozhodneme-li se anketu smazat, zavoláme script anketa_d02.php. Jako parametr ID mu předáme číslo ankety = ID_Anketa. Nesmíme zapomenout že je třeba smazat nejen hlavičku ankety, ale také všechny otázky ankety. Výsledné script pak bude vypadat asi takto:

<?
require ("db/connect.php");

if ( ($id!=0) )
{
mysql_query("DELETE FROM anketa_hlavicka WHERE id_anketa=$id");
mysql_query("DELETE FROM anketa_odpoved WHERE id_anketa=$id");
Header("Location: anketa_all.php");
}
else
{
Header("Location: anketa_all.php");
}
?>


Po vykonání scriptu se presunete pomocí zavolání HEADERS("Location .... zpět do zprávy anket. Okamžitě tak vidíte zda vybraná anketa byla smazána.

<?
$dbhost = "localhost";
$dbusername = "";
$dbname = "sny";
$dbpassword = "";

$Con2 = mysql_connect($dbhost,$dbusername,$dbpassword);

if (!$Con2)
{
}
else
{
mysql_select_db($dbname);
}
?>


Všechny tyto scripty si můžete stáhnout .....zde
Obrázky pro grafi jsou také ke stáhnutí .....zde
Pokud používáte phpMyAdmin můžete si do něho stáhnout SQL script pro vytvoření tabulek ..... zde
 
 
 
Příště pro vás připravím pár scriptů které budou sloužit jako prostředí pro přípravu vašich anket. Pokud budete mít nějaké otázky klidně napište na adresu provaz@volny.cz
 

 

 



Připomínky posílejte na email: provaz@volny.cz
Testováno na prohlížeči Microsoft Internet Explorer 5.003103
v rozlišení 1024x768 při Hi-Color (16bit)