| Autor | Zpráva | ||
|---|---|---|---|
| janvoz Profil * |
#1 · Zasláno: 19. 1. 2011, 14:41:48
Mám vytvořený výpis článků z databáze. Každý článek má svoje ID. Podle id potom vybírám informace z tabulky o článku, které dosazuji do formuláře na stránce edit.php, kde se má po odeslání formuláře provést update. Update dat se však nikdy neprovede.
edit.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title></title>
</head>
<body>
<h1>Editace</h1>
<a href="member-index.php">Přehled</a> |
<a href="member-stranky.php">Statické stránky</a> |
<a href="member-profile.php">Napsat novinky</a> |
<a href="member-nastaveni.php">Nastavení</a> |
<a href="logout.php">Logout</a>
<br>
<script type="text/javascript" src="./tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
language : "cs",
mode : "textareas",
theme : "advanced",
plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,
media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,
nonbreaking,xhtmlxtras,template,imagemanager,filemanager",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|
,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|
,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell
,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|
,cite,abbr,acronym,del,ins,attribs,|
,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Example content CSS (should be your site CSS)
content_css : "css/example.css",
// Drop lists for link/image/media/template dialogs
template_external_list_url : "js/template_list.js",
external_link_list_url : "js/link_list.js",
external_image_list_url : "js/image_list.js",
media_external_list_url : "js/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
});
</script>
<?
require_once('auth.php');
include"db.php";
$id=$_GET['id'];
echo $id;
$edit = MySQL_Query("SELECT nadpis, zprava, datim, id FROM clanky WHERE id ='$id'");
while ($editace = MySQL_Fetch_Array($edit)) {
?>
<form method="post" action="edit.php?id=<? echo $editace["id"];?>">
<input type="input" name="nadpis" value="<? echo $editace["nadpis"];?>">
<input type="input" name="id" value="<? echo $editace["id"];?>">
<textarea name="zprava" style="width:50%"><? echo $editace["zprava"];?></textarea>
<input type="submit" value="odeslat"></td></form>
<?}?>
</form>
</body>
</html>
<?
$nadpis = $_POST['nadpis'];
$zprava = $_POST['zprava'];
$datum = StrFTime("%Y/%m/%d %H:%M:%S", Time());
$id = $_POST['id'];
if($zprava=="") {}
else{
$update= mysql_query("UPDATE clanky SET nadpis = '$nadpis', zprava ='$zprava', datim='$datum', id='$id'");
}
?>část - index.php print "<a href='edit.php?id=$zaznam[id]' title='upravit'>upravit</a>"; Kde je chyba? Děkuji |
||
| janvoz Profil * |
#2 · Zasláno: 19. 1. 2011, 14:55:10
Teda vlastně se úprava provede, ale aktualizují se mi všechny zápisy v tabulce, a ne jenom ten jeden požadovaný...
|
||
| janvoz Profil * |
#3 · Zasláno: 19. 1. 2011, 15:01:37
OK, Děkuji za pomoc.
Správné řešení: <?
$nadpis = $_POST['nadpis'];
$zprava = $_POST['zprava'];
$datum = StrFTime("%Y/%m/%d %H:%M:%S", Time());
$id2 = $_POST['id'];
if($zprava=="") {}
else{
$update= mysql_query("UPDATE clanky SET nadpis = '$nadpis', zprava ='$zprava', id='$id2' WHERE id ='$id'");
}
?>Prosím SMAZAT |
||
| BuGeR Profil |
#4 · Zasláno: 19. 1. 2011, 15:03:48 · Upravil/a: BuGeR
Všechny data se ti aktulizují, protože v tom příkazu nevybíráš (WHERE) žádný řádek, takže to bere všechno..
zkus: $update= mysql_query("UPDATE clanky SET nadpis = '$nadpis', zprava ='$zprava', datim='$datum' WHERE id='$id'"); edit: pozdě :( |
||
| janvoz Profil * |
#5 · Zasláno: 19. 1. 2011, 15:09:51
To nevadí, stejně děkuji. Mám ale pocit, že by ten tvůj příklad nefungoval, protože ve formuláři mám možnost editovat i ID a podmínka by se tedy nesplina protože v $id by byla nová hodnota z formuláře :-). Mám pravdu?
|
||
| BuGeR Profil |
#6 · Zasláno: 19. 1. 2011, 15:12:49
ano, moc jsem si ten tvůj html kód neprohlížel, spíš jsem se zaměřil na ten příkaz :-) .. jinak myslíš si že je moudré měnit ID článku?
|
||
| janvoz Profil * |
#7 · Zasláno: 19. 1. 2011, 15:14:05
Asi ne...
|
||
| candiess Profil |
#8 · Zasláno: 19. 1. 2011, 15:39:43
a je třeba to ošetřit proti SQL Injection, například funkcí mysql_real_escape_string();.. ;)
|
||
| janvoz Profil * |
#9 · Zasláno: 19. 1. 2011, 15:43:01
candiess:
No dobře, zjistím si, co to je :-) |
||
|
Časová prodleva: 15 let
|
|||
0