

PHP script
Mam jeden dotaz. jsem zacatecnik a ucim se programovat. Naprogramoval jsem si takovy jednoduchy script na novinky. kdyz neco upravim na webu vypnim formular co jsem na webu zmenil a odeslu do databaze a pomoci druheho scriptu to zobrazim na webu. proste takovy jednoduchy novinkovac jenze chtel bych to upravit tak aby pri pripsane novince se vedle textu zobrazilo slovicko smazat a kdyz na to kliknu tak se cely text smaze s databaze. kdyz treba neco napisu blbe. Poslu tu script jak to mam udelane prosim nekoho kdo v tom umi tak jestli by mi to neopravil dekuji.
Script pro odeslani textu do databaze:
<?
mysql_connect("localhost","jmeno","heslo");
mysql_select_db("databaze");
$text = $_POST["zprava"];
if($text != "")
{
$cas = $cas = StrFTime("%Y-%m-%d %T", Time());
mysql_query("INSERT INTO Novinky VALUES ('$text','$cas')");
header("Location: ---");
}
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>MYSQL</title>
<meta http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-2">
</head>
<body>
<form action="zapis.php" name="post" method="post">
<textarea cols="60" rows="5" name="zprava" value=""></textarea>
<br><br>
<input type="submit" value="odeslat">
</form>
</body>
</html>
Script pro zobrazeni novinek na webu:
<?
mysql_connect("localhost","--","--");
mysql_select_db("--");
$vyber = mysql_query("SELECT * FROM `Novinky` ORDER BY `Novinky`.`cas` DESC");
?>
<?
while ($zanam = mysql_fetch_array($vyber, MYSQL_NUM))
{
echo "<div style='border: 2px solid'><b>$zanam[1] - $zanam[0]</b></div><br>";
}
?>
doplněn tag CODE (host)
Lze nahradit skript
pouze tímto (nevypíše to ty hlášky OK a Error)
PS: <form action="zapis.php" name="post" method="post"> IMHO by bylo vhodnější nedávat tam to action="zapis.php" ale jen action="" nebo nic, protože když budeš svůj systém rozvíjet tak budeš třeba i měnit názvy souborů a hned ti to nepůjde
PS 2: Pokud bys nerozuměl tomuto řádku:
tak je to to samé jako:
Mazat záznamy z databáze fyzicky, není zrovna nejlepší řešení...
moc ti dekujo za script ale nemohu to nejak rozchodit. kdyz ho vlozim k scriptu:
tak se mi zobrazi jen bila stranka. muzete mi prosim poradit kde to mam zpravne vlozit??
Udělej export struktury dat z databáze nebo vymaž všechny novinky a přidej si tam sloupec id s auto-increment a Primary key.
no to jsem udelal a co dale??
presne tak to udelam a delal jsem to uz drive a proste to nejde hodi to bilou obrazovku a kdyz dam zobrazit zdrojovy kod nic tam neni
Napiš mi na ICQ (373475016) a podívám se ti na to, pak sem postnu konečné řešení.
Vyřešeno, celé to bylo o tom, že Vaseks tam trochu popletl závorky a zápis apostrofů, takže tam bylo pár drobných chybiček, které jsem opravil.
Vyreseno, moc dekuji marekdrtic za pomoc. Je sikovnej.
Hoci je to vyriešené, napíšem ešte pár poznámok, ktoré sú dúfam k veci:
1. Keď vyvíjaš skript, tak si nastav vypisovanie chýb (error_reporting) buď v konfigurácii alebo priamo v PHP súbore. Oveľa jednoduchšie potom nájdeš príčinu problému podľa chybovej hlášky.
2. V SQL dopytoch používaš neošetrené vstupy od používateľa, takže hrozí SQL injection. Pred použitím reťazca v SQL dopyte sa používa funkcia mysql_real_escape_string, v prípade čísla ho môže stačiť pretypovať.
O té funkci mysql_real_escape_string jsem nic nevěděl, vždycky jsem na to buď kašlal nebo obcházel složitěji, díky
Mozem poprosit o podrobnejsie vysvetlenie? Dakujem.
Napr. po priradení $id = (int)$_GET["id"]; bude v $id určite číslo, takže sa dá bezpečne použiť v SQL dopyte.
Vdaka, doteraz som si myslel, ze ciselne typy (smallint, int atd) su bez problemov a neriesil som na nich kontrolu.