Autor | Zpráva | ||
---|---|---|---|
kozusnik Profil |
#1 · Zasláno: 11. 3. 2012, 20:59:52
Dobrý den, psal jsem tady včera, a sice ohledně kontroly vstupu do DB...dnes jsem použil včerejší model kontroly i na úpravu v DB, ale když si vyberu článek, a chci jej upravit, tak se mi obsah článku vypíše v pohodě, ale už se neupraví...pravděpodobně mám někdo nadefinovanou špatně proměnnou, nevím...mohli byste mi to zkouknout a říct, kde je chyba, a nebo popř. o5 poradit lepší řešení? moc děkuji
<?php include("hlavicka.php"); ?> <body> <div id="kontejner"> <div class="header"> <?php include("zahlavi.php"); ?> </div> <br /> <div class="center"> <h1>Uprava článku</h1> <?php if(!isset($_GET['id_clanku'])){ $sql = "SELECT id, nazev, text from clanky"; $res = mysql_query($sql) or die("Chyba. Nelze provést akci! Prosím kontaktujte administrátora"); echo"<form method='get' action='uprava_clanku.php'>"; echo"<select name='id_clanku'>"; while ($zaznam = mysql_fetch_array($res)) { echo"<option value='".$zaznam['id']."'>".$zaznam['nazev']; } echo"<input type='submit' value='Vyber'>"; echo"</select>"; echo"</form>"; } if (isset($_POST['upravit'])) { if (trim($_POST['nazev2']) == "") { $errors[] = "Název je povinný údaj"; } if (trim($_POST['text2']) == "") { $errors[] = "Text je povinný údaj"; } if (!isset ($errors)) { $autor = "hanis"; $timezone = new DateTimeZone("Europe/Prague"); $date = new DateTime(); $date->setTimezone($timezone); $datum = $date->format('d.m.Y H:i'); $nazev2 = $_POST['nazev2']; $text2 = $_POST['text2']; $ide = $_GET['id_clanku']; $sql = "UPDATE clanky SET nazev = $nazev2, text = $text2 WHERE id = $ide"; $res = mysql_query($sql); } else { foreach ($errors as $error){ echo $error."<br />"; } } } if(isset($_GET['id_clanku'])) { $ide = $_GET['id_clanku']; $sql2 = "SELECT nazev, text from clanky WHERE id = $ide"; $res2 = mysql_query($sql2) or die("Vámi zvolený článek pravděpodobně neexistuje!"); while ($zaznam2 = mysql_fetch_array($res2)) { $nazev2 = $zaznam2['nazev']; $text2 = $zaznam2['text']; } echo' <form method="post" name="tvorba" action=""> <table> <tr><td>Nazev</td></tr> <tr><td><input type="text" name="nazev2" class="nazev" value="'.$nazev2.'"></td></tr> <tr><td>Text</td></tr> <tr><td><textarea name="text2" >'.$text2.'</textarea></td></tr> <tr><td><input type="submit" name="upravit" value="Upravit clanek"></td></tr> </table> </form> '; //} } ?> </div> <div class="right"> <?php include("right.php"); ?> </div> <div class="footer"> <?php include("zapati.php"); ?> </div> </div> </body> </html> |
||
Bertram Profil |
kozusnik:
Ahoj, zkus před řádek 49 napsat, var_dump($ide);exit; |
||
Tori Profil |
#3 · Zasláno: 11. 3. 2012, 21:41:00
kozusnik:
Chyby SQL dotazu: Ukládáte řetězec, tzn. hodnoty $nazev2 a $text2 musí být escapované a uzavřené v uvozovkách nebo apostrofech. ID článku před použitím v dotazu ošetřete funkcí intval. Název sloupce "text" bude lepší dát do zpětných apostrofů, je to rezervované slovo v MySQL. |
||
kozusnik Profil |
#4 · Zasláno: 13. 3. 2012, 16:55:32 · Upravil/a: kozusnik
Bertram:
vypíše mi to " string(1) "4" " Tori: takže mám použít mysql_real_escape_string? zkusím a dám vědět zkusil jsem to, ale pořád to nefunguje.... |
||
Bertram Profil |
kozusnik:
ř.49 $sql = "UPDATE clanky SET nazev = '".$nazev2."', text = '".$text2."' WHERE id = $ide"; |
||
kozusnik Profil |
#6 · Zasláno: 13. 3. 2012, 18:16:05
Už to funguje...děkuji všem za rady
|
||
Časová prodleva: 11 let
|
0