Autor Zpráva
janvoz
Profil *
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 *
Teda vlastně se úprava provede, ale aktualizují se mi všechny zápisy v tabulce, a ne jenom ten jeden požadovaný...
janvoz
Profil *
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
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 *
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
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 *
Asi ne...
candiess
Profil
a je třeba to ošetřit proti SQL Injection, například funkcí mysql_real_escape_string();.. ;)
janvoz
Profil *
candiess:
No dobře, zjistím si, co to je :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0