Autor Zpráva
Celebi
Profil
[u]pokus/aktualizace.php[/u]
<html>
<head>
<meta http-equiv="cache-control" content="no-cache" />
<title></title>
</head>
<body>
<? $dbi=mysql_connect("localhost","uzivatel","heslo"); ?>
<?
if ($vlozit=='a') {
if ((!empty($jmeno)) & (!empty($clanek)) & ((!empty($autor))) { // před vložením či úpravou musíme vyplnit některá pole

$datum_vytvoreni=date("Y-m-d H:i:s");
$datum=date("Y-m-d H:i:s");

if (empty($id)) {
$sql="insert into n_clanky
(id_autor,clanek,datum,opraveno)
values
('$id_autor','$jmeno','$clanek','$datum')
";
}
else {
$sql="update n_clanky set id_autor='$id_autor',clanek='$clanek',datum='$datum',jmeno='$jmeno'
where id='$id'";

}

mysql_query($sql,$dbi) or die("Nepodařilo se vložit");
echo "Údaje v databázi byly opraveny";


}
else echo "Musí být vyplněny všechny položky!";
}
?>

<?
if ($akce=='upravit') {

$sql="select * from n_clanky where id='$id'";
$vysledek=mysql_query($sql,$dbi) or die("Nepodařilo se vložit");

$id_autor=mysql_result($vysledek,0,"id_autor");
$clanek=mysql_result($vysledek,0,"clanek");
$datum=mysql_result($vysledek,0,"datum");
$jmeno=mysql_result($vysledek,0,"jmeno");
}
?>

<form action="" enctype="multipart/form-data" method="post" />
<fieldset id="pridat">
Datum: <input type="text" name="titulek" value="<? echo $jmeno;?>" />
Autor:<input type="text" name="titulek" value="<? echo $jmeno;?>" />
<textarea rows="10" cols="80" name="clanek"><? echo $clanek;?></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="Aktualizovat" /> </td></tr>
</table>
<input type="hidden" name="id" value="<? echo $id;?>" />
<input type="hidden" name="vlozit" value="a" />
<input type="hidden" name="file" value="http://www.tpo.wz.cz/pokus/novinky.php" />
</fieldset>
</form>
</body>
</html>


[u]pokus/novinky.php[/u]
<html>
<head>
<meta http-equiv="cache-control" content="no-cache" />
<title></title>
</head>
<body bgcolor=beige text=black>
<? $dbi=mysql_connect("localhost","uzivatel","heslo"); ?>
<?
$vysledek=mysql_query("select * from jmena",$dbi) or die("Nepodařilo se vykonat příkaz");
echo "<table width= '500' height='1' border='1' align='center' cellpadding='4' cellspacing='0' bordercolor=' Blue ' bordercolorlight=' Blue' bordercolordark=' Blue' id='AutoNumber2' style='border-collapse: collapse'>;
for ($i=0;$i<=mysql_num_rows($vysledek)-1;$i++)
<tr>
<td width='77%' bgcolor='Blue' height='1'><p align='left'>&nbsp;<b>1.1.2005</b>".mysql_result($vysledek,$i,"datum") ."</td>
<td width='20%' bgcolor=' Blue ' height='1'><b>Autor</b>: <a href=http://www.tpo.wz.cz/osobni/autori.html><font color=black>".mysql_result($vysledek,$i,"jmeno")." </font></a></td>
<tr>
<td width='100%' bgcolor=beige colspan='3' height='12'>
".mysql_result($vysledek,$i,"clanek")."
</table>
?>
Text stránky.
</body>
</html>

Opravte mi prosím chyby v těchto dvou souborech. Jsem začátečník s php a tak s tím ještě moc neumím pracovat.
Celebi
Profil
Ty řádky na nichž je tag u v hranatých závorkách jsou názvy souborů.
thingwath
Profil *
V tom pokus/novinky.php je smyčka for trochu nedořešená, html tam nelze nechat jako php kód, ukonči před ním php ?> a za ním znovu otevři <?

Pak viditelně předpokládáš register_globals on, což není zrovna ideální přístup, použij místo toho $_GET a $_POST případně $_REQUEST

Každopádně by myslím bylo pro všechny lepší ten skript napřed u sebe vyzkoušet a pak se ptát co s chybama, to co jsem jmenoval je jenom to čeho jsem si po krátkém proletnutí všiml a vyzkoušet to nemůžu, protože nevím jak vypadá databáze
Celebi
Profil
Ten skript jsem zkoušel a napsalo mi to nějaké chyby. Jinak těch chyb tam je určitě více. Byl bych vděčný kdyby si na to někdo našel čas a opravil to.
thingwath
Profil *
Tak já zkusím opravit pár chybek, které vidím na první pohled, ale neslibuj si od toho moc :-)

pokus/aktualizace.php
<html>
<head>
<meta http-equiv="cache-control" content="no-cache" />
<title></title>
</head>
<body>
<? $dbi=mysql_connect("localhost","uzivatel","heslo"); ?>
<?
if ($vlozit=='a') {
if ((!empty($jmeno)) & (!empty($clanek)) & ((!empty($autor))) { // před vložením či úpravou musíme vyplnit některá pole

$datum_vytvoreni=date("Y-m-d H:i:s");
$datum=date("Y-m-d H:i:s");

if (empty($id)) {
$sql="insert into n_clanky
(id_autor,clanek,datum,opraveno)
values
('$id_autor','$jmeno','$clanek','$datum')
";
}
else {
$sql="update n_clanky set id_autor='$id_autor',clanek='$clanek',datum='$datum',jmeno='$jmeno'
where id='$id'";

}

mysql_query($sql,$dbi) or die("Nepodařilo se vložit");
echo "Údaje v databázi byly opraveny";


}
else echo "Musí být vyplněny všechny položky!";
}
?>

<?
if ($akce=='upravit') {

$sql="select * from n_clanky where id='$id'";
$vysledek=mysql_query($sql,$dbi) or die("Nepodařilo se vložit");

$id_autor=mysql_result($vysledek,0,"id_autor");
$clanek=mysql_result($vysledek,0,"clanek");
$datum=mysql_result($vysledek,0,"datum");
$jmeno=mysql_result($vysledek,0,"jmeno");
}
?>

<form action="" enctype="multipart/form-data" method="post" />
<fieldset id="pridat">
Datum: <input type="text" name="titulek" value="<? echo $jmeno;?>" />
Autor:<input type="text" name="titulek" value="<? echo $jmeno;?>" /> <!-- tady máš dva prvky formuláře se stejným jménem, navíc myslím, že jsou oba zamýšleny v jiném tvaru -->
<textarea rows="10" cols="80" name="clanek"><? echo $clanek;?></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="Aktualizovat" /> </td></tr>
</table>
<input type="hidden" name="id" value="<? echo $id;?>" />
<input type="hidden" name="vlozit" value="a" />
<input type="hidden" name="file" value="http://www.tpo.wz.cz/pokus/novinky.php" />
</fieldset>
</form>
</body>
</html>


pokus/novinky.php
<html>
<head>
<meta http-equiv="cache-control" content="no-cache" />
<title></title>
</head>
<body bgcolor=beige text=black>
<? $dbi=mysql_connect("localhost","uzivatel","heslo"); ?>
<?
$vysledek=mysql_query("select * from jmena",$dbi) or die("Nepodařilo se vykonat příkaz");
echo "<table width= '500' height='1' border='1' align='center' cellpadding='4' cellspacing='0' bordercolor=' Blue ' bordercolorlight=' Blue' bordercolordark=' Blue' id='AutoNumber2' style='border-collapse: collapse'>;
for ($i=0;$i<=mysql_num_rows($vysledek)-1;$i++) {
?>
<tr>
<td width='77%' bgcolor='Blue' height='1'><p align='left'>&nbsp;<b>1.1.2005</b><? print mysql_result($vysledek,$i,"datum") ?></td>
<td width='20%' bgcolor=' Blue ' height='1'><b>Autor</b>: <a href=http://www.tpo.wz.cz/osobni/autori.html><font color=black><? mysql_result($vysledek,$i,"jmeno") ?></font></a></td>
<tr>
<td width='100%' bgcolor=beige colspan='3' height='12'>
<? mysql_result($vysledek,$i,"clanek")
}
?>
</table>
Text stránky.
</body>
</html>


Ty chyby myslím jen tak někdo sám neopraví. Zkusil jsem opravit tu for smyčku a přijde mi podezdřelá ta věc v tom formuláři v prvním souboru, ale nejsem si jist jak to bylo myšleno, tak to sám opravit nemůžu.

Krom toho by skutečně bylo dobré ten skript přepsat tak aby nepoužíval register_globals, ale to je dost nezáživné a zvládneš to sám :-)

Rovněž jsem nekontroloval jestli je ten skript dobře navržen a není v tom nějaká logická chyba, takže předpokládám, že po této stránce je v pořádku.
thingwath
Profil *
Rovnou koukám, že jsem zapoměl přihodit k tomu druhému mysql_result () print
Yuhů
Profil
technická připomínka pro thingwatha: kdyby ses registroval, můžeš svoje příspěvky opravovat
thingwath
Profil
No tak teda jo. Čistě abych vás nenutil číst po mně deset oprav, tak se zaregistruju :-)

Každopádně, mám taky připomínky :-)

Proč je tak drasticky omezená množina znaků pro heslo? (Neměl bych to říkat, ale) mám pro podobné účely připravenu sadu hesel (tak pět nebo šest), které si pamatuju a které dávám všude (když to praskne, tak mě to moc bolet nebude, na kritických místech jsou pochopitelně jedinečná hesla). Problém je ovšem v tom, že všechny obsahují (jak je mým zvykem) nějaké znaky typu +@#$%^&*(){} a tak dál.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0