Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: luisah 19 Července 2008, 14:15:16

Název: Prosba s PHP [vyřešeno]
Přispěvatel: luisah 19 Července 2008, 14:15:16
Předem se omlouvám moderátorům, dovolím si sem hodit drobnou prosbu (kdyžtak sám téma smáznu, pokud to budete vyžadovat)

Vytvořil jsem si skrypt PHP, na update databáze, ale pokud si ve formuláři upravím data a nechám uložit, tak se vše jakoby provede, ale nic se neuloží (vše zůstane při starém. Pokud jsem nezadal podminku WHERE a LIMIT tak se vše uloží OK. Už vážně nevím, kde dělám chybu.
Kód: [Vybrat]
   
    $id = $_POST['id'];
    $autor = $_POST['autor'];
    $email = $_POST['email'];
    $nazev = $_POST['nazev'];
    $typ = $_POST['typ'];
    $okres = $_POST['okres'];
    $clanek = $_POST['clanek'];
       
       $sql = "UPDATE pamatka SET
        autor = '$autor',
        email = '$email',
        nazev = '$nazev',
        typ = '$typ',
        okres = '$okres',
        clanek = '$clanek'
        WHERE  id = '$id'
        LIMIT 1; ";
       

    mysql_query($sql)
        or die("
            <script language='JavaScript'>
                alert('Aktualizace nebyla provedena!');
                history.back();
            </script>
            ");

   

    mysql_close();
Název: Re: Prosba s PHP
Přispěvatel: Marek_ 19 Července 2008, 14:26:40
co třeba ten středník za jedničkou
Název: Re: Prosba s PHP
Přispěvatel: wam]Spider007 19 Července 2008, 14:26:52
cize ked tam nie je WHERE klauzula a LIMIT tak to ide?...
priciny mozu byt 2-
1) nie je splnena podmienka vo WHERE klauzule
2) LIMIT nema v UPDATE co hladat
Název: Re: Prosba s PHP
Přispěvatel: luisah 19 Července 2008, 14:33:04
Sakra chlapi, to musíte být tak rychlí, už jsem chtěl theard smáznout.
Marek_ : ten středník by měl být ok -> už to funguje
wam: chyba byla -> bod č. 1 -> chyba ve formuláři nenadefinoval jsem správně id

I tak díky moc. To tak bývá když na to dobu koukáte, pak se zeptáte a hned na to přijdete :D
Název: Re: Prosba s PHP
Přispěvatel: Marek_ 19 Července 2008, 14:41:19
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
Název: Re: Prosba s PHP
Přispěvatel: luisah 19 Července 2008, 14:42:34
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
Přesně tak :)
Název: Re: Prosba s PHP
Přispěvatel: wam]Spider007 19 Července 2008, 14:58:00
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
to je sice pravda, ale neodporucam to robit, moze to sposobyt vacsie problemy ako sa zda :D

// ale hlavne je, ze sa prislo na pricinu ;)
Název: Re: Prosba s PHP
Přispěvatel: luisah 19 Července 2008, 15:51:22
LIMIT tam být může, zaručí tím, že se bude updatovat/opravovat jen jeden řádek (nebo tolik, kolik je za limit). Někdy to může odvrátit katastrofu.
to je sice pravda, ale neodporucam to robit, moze to sposobyt vacsie problemy ako sa zda :D

// ale hlavne je, ze sa prislo na pricinu ;)
A jaký problémy? Nějaká konkrétní situace, abych věděl, na co bych se měl připravit.
Název: Re: Prosba s PHP
Přispěvatel: wam]Spider007 19 Července 2008, 16:31:37
no napriklad podmienke vyhovuje 5 zaznamov z tabulky a vdaka LIMITu sa updatne len jeden a to ktorykolvek z nich, zalezi na poradi ID pripadne niecoho ineho. Ak na to prides hned nic sa nedeje, ale ak neskoro tak ten jeden riadok sa ti bude hladat dost tazko.
Lepsie je podobnu vec riesit kontrolou napr:
Kód: [Vybrat]
DECLARE P_POCET INT -- zadeklarujes si premennu

-- do premennej P_POCET si zistis kolko riadkov bude updatovanych
SELECT COUNT(*) INTO P_POCET FROM TABULKA WHERE podmienka

IF P_POCET = 1 -- ak je pocet riadkov 1, tak vykonas UPDATE
BEGIN
 -- tu vykonas prikaz UPDATE, ktory bude mat rovnaku WHERE ako ma SELECT o 4 riadky vyssie
END