Autor Zpráva
kozusnik
Profil
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;
a napiš je-li tam co má být.
Tori
Profil
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
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
Už to funguje...děkuji všem za rady

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: