Autor Zpráva
Hitny 14
Profil *
Dobrý den, mám stránku na které jsou články a můžou se na ní editovat mám tam například mazání i editaci které mi text daného článku vypíše do editoru. Problém nastává když chci odeslat upravený článek zpět do tabulky. Potřeboval by jsem nějaký script který mi najde id právě upravovaného článku abych ho mohl přepsat. Děkuji za každou radu.
ninja
Profil
Na stránce s formuláře pro editaci stránky si vložíty i (skryté) políčko s id článku.
Hitny 14
Profil *
Do toho políčka se mi to musí vypsat nějakým scriptem nebo jak se idndostane do políčka?
CrazyC0de
Profil
Normálně, stačí při výpisu vytahovat i id, a pak udělat stránku smaz.php - a při každém vypsání se vypíše <a href="smaz.php?id=".$id."">, tím pádem pak budeš vytahovat id přes GET, a jednoduše pak updatuješ UPDATE clanky SET obsah='$obsah' WHERE id='$id'
ninja
Profil
CrazyC0de: CrazyC0de chtěl samozřejmě napsat, že se to bude odesílat POST požadavkem. <a href="smaz.php?id=".$id.""> je bezpečnostní a UX prasárna.
Someone
Profil
ninja proč myslíš, že to tak chtěl CrazyC0de napsat? Správně ošetřený GET vstup může být bezpečnější než neošetřený POST, je jedno jakou metodou se to posílá. Tím pádem mi <a href="smaz.php?id=".$id.""> nepřijde nějak nebezpečné (samozřejmě pokud je správně ošetřeno).
CrazyC0de
Profil
Ninja - v čem by to nebylo bezpečné, pokud by to správně ošetřil, id je číslo, takže is_numeric, a ještě k tomu to mohl vytahovat jako htmlspecialchars($_GET....)..
pcmanik
Profil
CrazyC0de:
Htmlspecialchars sluzi na zabezpečenie výstupu a nie vstupu.
CrazyC0de
Profil
Ale když ti někdo do toho id hodí "mysql_query("UPDATE users SET hodnost=5 WHERE ....")"

Tak se to provede, pokud však vytáhneme htmlspecialchars. tak ne...
Someone
Profil
CrazyC0de:
To co uvádíš je nesmysl.
Hitny 14
Profil *
To jste mi to moc nepřiblížili jsem začáteční :)
Someone
Profil
Hitny 14:

když vypisuješ informace o článku, který chceš upravovit tak to uděláš asi takto:

$sql = mysql_query("SELECT * FROM clanky WHERE id = " . (int)$_GET['id_upravovaneho_clanku']);
while ($radek = mysql_fetch_assoc($sql)) {

    echo '
        <form method="POST">

            Nadpis: <input type="text" name="nadpis_clanku" value="' . htmlspecialchars($row['nadpis']) . '"><br>
            Obsah: <textarea name="obsah">' . $row['obsah'] . '</textarea>
            <input type="hidden" name="id_clanku" value="' . (int)$row['id'] . '">
            <input type="submit" name="ulozit" value="Uložit">

        </form>
    ';

}

všimni si zvýrazněného, tam si do hidden inputu uložíš id právě upravovaného článku a při ukládání to bude vypadat asi takto: mysql_query("UPDATE clanky blablabla WHERE id = " . (int)$_POST['id_clanku'])
Hitny 14
Profil *
Vytvořil sem políčko:
<input name="id" type="hidden" value="<?php echo $row["id"] ?>">
Do kterého se mi vypíše správné id článku to už mám vyzkoušené ale když formulář odešlu pomocí scriptu:
<?php
 include 'config.php';
    if(isset($_POST['save']))
        {
            $nadpis = ($_POST['nadpis']);
            $text = ($_POST['content']);
            $id = ($_POST['id']);
            //$text=str_replace("\n","<br>",$text);
            $vloz ="UPDATE tabulka_acko SET nadpis = '".$nadpis."' text = '".$text."' WHERE id =  '".$id."';
            $result=mysql_query($vloz);

            echo '<script type="text/javascript" for="window" event="onLoad()">
            <!--
                window.location.href="aktualizace_a.php?edit=ok"
            // --> </script>';    
        }
?>
Text v článku se nezmění :(
Someone
Profil
ten vzor je SET nadpis = 'neco', text = 'neco' atd.. chybí ti tam čárka jinak nezapomeň ošetřit ten vstup:
$id = (int)$_POST['id'];
$nadpis = mysql_real_escape_string($_POST['nadpis']);
atd.
Hitny 14
Profil *
Děkuji čárku sem doplnil i ošetřil vstup ale data se stále nezmění =(


Děkuji vše funguje chybu už sem našel měl sem tam špatně zadanej název tabulky přepracovanost asi =D

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: