| |
|
Hledání v PHP a MySQL (2.)
počet názorů: 1 poslední: 4.2.2003 0:11:58
číst
názory přidat
názor vytisknout
Před nedávnem jsem napsal článek Hledání v PHP a MySQL.
Dnes doplním skripty pro administraci a další maličkosti.
Nejprve si přidáme do obou tabulek jeden sloupec, kterým je
id_slova.Umožní to lepší orientaci v administraci.
Upravíme tedy soubor tabulky.php:
<? require
"opendb.php";
$tabulka1 = "IF EXISTS DROB TABLE
Slova CREATE TABLE Slova( id_slova int NOT NULL
AUTO_INCREMENT, slovo varchar(50) NOT NULL, url
varchar(100) NOT NULL, nazev varchar(25) NOT
NULL, popis text NOT NULL, PRIMARY KEY
(id_slova) )";
$tabulka2 = "IF EXISTS DROB
TABLE HlSlova CREATE TABLE HlSlova( id_slova int
NOT NULL AUTO_INCREMENT, slovo varchar(50) NOT
NULL, pocet int(11) NOT NULL, PRIMARY
KEY(id_slova) )";
$vytvor1 =
mysql_query("$tabulka1"); $vytvor2 =
mysql_query("$tabulka2");
if($vytvor1 &&
$vytvor2): echo "Tabulky se udělaly."; echo "<a
href=index.php>Na hlavní
stránku</a>"; else: echo "Tabulky se
neudělaly."; echo "<a href=index.php>Na hlavní
stránku</a>"; endif; ?> |
No a teď již samotná administrace – admin.php:
<? require
"opendb.php"; ?> <html> <head> <title>Administrace
slov</title> </head> <body> <center> <h2>Administrace
slov</h2><br> [<A
href="pridej.php">Přidat
slovo</a>]<br><br> <form> <select
name="tabulka"> <option value="0">---Vyberte
tabulku---</option> <option
value="1">Slova</option> <option
value="2">HlSlova</option> </select> <input
type="submit" value="Otevři
tabulku"> </form> <? if($tabulka=="1"): $dotaz
= Mysql_query("SELECT * FROM Slova"); echo "<a
href="admin.php?action=deleteall&tabulka=Slova">Smazat
vše v této tabulce</a>"; echo "<table
border=1>"; echo "<tr><td>n"; echo
"Slovon</td><td>n"; echo
"Urln</td><td>n"; echo
"Popisn</td><td>n"; echo
"Volbyn</td></tr>n"; while($zaznam =
Mysql_fetch_array($dotaz)): echo
"<tr><td>n"; echo
$zaznam["slovo"]."n</td><td>n"; echo
$zaznam["url"]."n</td><td>n"; echo
$zaznam["popis"]."n</td><td>n"; echo
"[<a
href="admin.php?action=check&id=".$zaznam["id_slova"]."&tabulka=Slova">Upravit</a>
| <a
href="admin.php?action=delete&id=".$zaznam["id_slova"]."&tabulka=Slova">Smazat</a>]n</td></tr>n"; endwhile; echo
"</table>"; elseif($tabulka=="2"): $dotaz =
Mysql_query("SELECT * FROM HlSlova"); echo "<a
href="admin.php?action=deleteall&tabulka=HlSlova">Smazat
vše v této tabulce</a>"; echo "<table
border=1>"; echo "<tr><td>n"; echo
"Slovon</td><td>n"; echo
"Hledánon</td><td>n"; echo
"Volbyn</td></tr>n"; while($zaznam =
Mysql_fetch_array($dotaz)): echo
"<tr><td>n"; echo
$zaznam["slovo"]."n</td><td>n"; echo
$zaznam["pocet"]."xn</td><td>n"; echo
"[<a
href="admin.php?action=check&id=".$zaznam["id_slova"]."&tabulka=HlSlova">Upravit</a>
| <a
href="admin.php?action=delete&id=".$zaznam["id_slova"]."&tabulka=HlSlova">Smazat</a>]n</td></tr>n"; endwhile; echo
"</table>"; endif; //akce,které skoro nic
nedělají - pouze se
ptají if($action=="delete"): echo
"<b>Opravdu chtete vymazat z tabulky $tabulka
slovo č.
$id???</b><br><br>"; ?> <form
method="post"> <input type="hidden"
name="action" value="smaz"> <input
type="hidden" name="id" value="<?echo
$id?>"> <input type="hidden" name="tabulka"
value="<?echo $tabulka?>"> <input
type="radio" name="volba"
value="ano">Ano<br> <input type="radio"
name="volba" value="ne">Ne<br> <input
type="submit" value=" OK
"> </form> <? endif; if($action=="deleteall"): echo
"<b>Opravdu chcete smazat celý obsah tabulky
$tabulka???</b>"; ?> <form
method="post"> <input type="hidden"
name="action" value="smazvse"> <input
type="hidden" name="tabulka" value="<?echo
$tabulka?>"> <input type="radio"
name="volba" value="ano">Ano<br> <input
type="radio" name="volba"
value="ne">Ne<br> <input type="submit"
value=" OK
"> </form> <? endif; if($action=="check"): $dotaz
= Mysql_query("SELECT * FROM $tabulka"); $zaznam =
Mysql_fetch_array($dotaz); if($tabulka=="Slova"): ?> <form
method="post"> <input type="hidden"
name="action" value="uprav"> <input
type="hidden" name="tabulka"
value="Slova"> <input type="hidden" name="id"
value="<?echo $id?>"> Jméno :
<input type="text" name="jmeno"
value="<?echo
$zaznam["slovo"]?>"><br> Url :
<input type="text" name="url"
value="<?echo
$zaznam["url"]?>"><br> Popis :
<input type="text" name="popis"
value="<?echo
$zaznam["popis"]?>"><br> <input
type="submit" value=" OK
"><br> </form> <? else: ?> <form
method="post"> <input type="hidden"
name="action" value="uprav"> <input
type="hidden" name="tabulka"
value="HlSlova"> <input type="hidden" name="id"
value="<?echo $id?>"> Slovo :
<input type="text" name="slovo"
value="<?echo
$zaznam["slovo"]?>"><br> Kolikrát :
<input type="text" name="pocet"
value="<?echo
$zaznam["pocet"]?>"><br> <input
type="submit" value=" OK
"><br> </form> <? endif; endif; //chvíle
napětí :o) akce které již něco
dělají if($action=="smaz"): if($volba!="ne"): $delete
= Mysql_query("DELETE FROM $tabulka WHERE id =
$id"); echo "Záznam z čílsem $id byl z tabulky
$tabulka
smazán..."; endif; endif; if($action=="smazvse"): if($volba!="ne"): $delete
= Mysql_query("DELETE FROM $tabulka"); echo "Tabulka
$tabulka je
vyprázdněna..."; endif; endif; if($action=="uprav"): if($tabulka=="Slova"): mysql_query("UPDATE
Slova SET slovo = '$jmeno', url = '$url', nazev =
'$jmeno', popis = '$popis' WHERE id_slova =
'$id'"); echo "Záznam č.$id v tabulce Slova byl
změněn:<br>n"; echo "Název,Slovo:
$jmeno<br>n"; echo "Url:
$url<br>n"; echo "Popis:
$popis<br>n"; else: mysql_query("UPDATE
HlSlova SET slovo = '$slovo', pocet = '$pocet' WHERE
id_slova = '$id'"); echo "Záznam č.$id v tabulce
HlSlova byl změněn:<br>n"; echo "Slovo:
$slovo<br>n"; echo "Hledáno: $pocet
x<br>n"; endif; endif; ?> </center> </body> </html> |
Ne že by to bylo něco extra, ale když něco pokazíte a
potřebujete to opravit nebo potřebujete něco smazat, tak se to
hodí.
Také jsem dostal takový dotaz – jak si ve vyhledávání
poradit s diakritikou
Do formuláře na začátku přidáme kousek kódu:
| <input type="checkbox"
name="diakritika" value="true"> Ignorovat diakritiku
<BR> |
A za “ if($akce==”najit”) ” přidáme toto:
if($diakritika): $slovo =
strtr($slovo,"ěščřžýáíéüöäóňĚŠČŘŽÝÁÍÉÓŇÜÓŇ","escrzyaieuoaonESCRZYAIEUOAON"); endif; |
Celý soubor index.php bude tedy vypadat takto:
<? require
"opendb.php"; ?> <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0
Transitional//EN">
<html> <head> <title>Hledání</title> </head>
<body> <h2>Hledání</h2> <form
action="index.php?akce=najit"
name="najdi"method="post"> <b>Zadej hledané
slovo: </b> <input type="text"
name="slovo"><br> <input type="checkbox"
name="diakritika" value="true"> Ignorovat diakritiku
<BR> <input type="submit" value="Najdi
to!"> </form> <hr> <? if($akce=="najit"): //prohledej
databazi jestli v ní je slovo $slovo $prikaz =
mysql_query("SELECT * FROM Slova WHERE slovo LIKE
'$slovo%'");
if($diakritika): $slovo =
strtr($slovo,"ěščřžýáíéüöäóňĚŠČŘŽÝÁÍÉÓŇÜÓŇ","escrzyaieuoaonESCRZYAIEUOAON"); endif;
//pokud
jsi v databázi našel výskyt slova $slovo tak vypiš
všechno co obsahuje $slovo $num =
mysql_num_rows($prikaz); if($num > 0): echo
"<h2>Výsledky
hledání</h2>"; while($zaznam =
mysql_fetch_array($prikaz)): $url =
$zaznam['url']; $nazev = $zaznam['nazev']; $popis
= $zaznam['popis']; echo "<a
href="$url">$nazev</a> -
$popis<br>n"; endwhile; //jinak vypiš že
neni možné najít slovo $slovo else: echo "Není
možné najít slovo $slovo
!!<br>n"; endif; endif; //prohledej
tabulku HlSlova a pokud tam již takovéto slovo
je, //tak k počtu přičti 1 a pokud není tak ho vlož s
počtem 1 $dotaz = mysql_query("SELECT * FROM HlSlova
WHERE slovo = '$slovo'"); $pocet =
Mysql_num_rows($dotaz);
if($pocet!=0)
mysql_query("UPDATE HlSlova SET pocet = pocet + 1 WHERE
slovo = '$slovo'"); else mysql_query("INSERT INTO
HlSlova VALUES ('','$slovo',
1)");
?>
</body> </html> |
Download
skriptů
Názory: počet:
1 poslední: 4.2.2003 0:11:58 číst
názory přidat
názor vytisknout
| Nadpis |
Autor |
Datum |
| Diakritika |
Jiri |
04.02.2003
00:11:58 |
|
|
|
 -- PC Svět_soubory/7-tab-1.gif) |
Registrace domén
|
|
 -- PC Svět_soubory/7-tab-1.gif) |
Anketa |
|
 -- PC Svět_soubory/7-tab-1.gif) |
Novinky e-mailem
|
|
 -- PC Svět_soubory/7-tab-1.gif) |
Novinky |
 -- PC Svět_soubory/7-tab-3.gif) |
27.1.2003 Opraven problém s
kódováním a s obrázky v e-mailové zprávě s přehledem
článků
 -- PC Svět_soubory/b.gif) 26.1.2003 Vyskytl se problém s
padáním MSIE 6.0 při načítání stránek PC Světa. Problém
by již měl být odstraněn. Jedná se o chybu v MSIE, který
nekorektně zpracovával hlavičku XHTML. U MSIE s
posledními záplatami problém nebyl.
 -- PC Svět_soubory/b.gif) 26.1.2003 Zbrusu nová verze
redakčního systému, nová grafika, překopané rubriky,
mnoho nových věcí...
 -- PC Svět_soubory/b.gif) 5.11.2001 PC Svět obdržel
registraci v mezinárodním registru publikací ISSN. Naše
číslo je 1213-6042. Více o ISSN na ISSN
 -- PC Svět_soubory/b.gif)
|
|
 -- PC Svět_soubory/7-tab-1.gif) |
Nový redaktor
|
|