Autor Zpráva
Akacko
Profil
Jde o editaci menu:

Cyklem vypisuji položky z databáze. Názvy inputů jsou jako pole např. nazev[] a inputem input type="checkbox" name="akce[]" chci označovat a mazat/upravovat data. Mazání jde v klidu. Editace však blbne.

Kod editace:
if ( $_POST['sbm_edit'] )
{                  
        foreach ($_POST['action'] as $key => $id)
        {                      
               $url = htmlspecialchars(friendlyUrl($_POST['txt_link'][$key]));//pekne url
                           
               $db->execute("
                      UPDATE menu SET
                      link = '".htmlspecialchars($_POST['txt_link'][$key])."',
                      url = '".$url."',
                      title = '".htmlspecialchars($_POST['txt_title'][$key])."'
                      WHERE
                      id = '".$id."'
                       "); 
        }
}

když přepíšu kód do "debuggeru" (místo posíláni do db si to vypíšu na obrazovku)
                echo "
                      UPDATE menu SET
                      link = '".htmlspecialchars($_POST['txt_link'][$key])."',
                      url = '".$url."',
                      title = '".htmlspecialchars($_POST['txt_title'][$key])."'
                      WHERE
                      id = '".$id."' ... key = '".$key."'
                   ";

a zaškrtnu první poličko a zmáčknu editovat, vše bude OK:

UPDATE menu SET link = 'První položka', url = 'prvni-polozka', title = 'Toto bude asi první položka' WHERE id = '7' ... key = '0'

Zaškrtnu li obě plička, opět vše funguje OK
UPDATE menu SET link = 'První položka', url = 'prvni-polozka', title = 'Toto bude asi první položka' WHERE id = '7' ... key = '0'
UPDATE menu SET link = 'Druhá položka', url = 'druha-polozka', title = 'Toto bude asi druha položka' WHERE id = '12' ... key = '1'


Zaškrtnu li druhe poličko, nastane nepřijatelná chyba
UPDATE menu SET link = 'První položka', url = 'prvni-polozka', title = 'Toto bude asi první položka' WHERE id = '12' ... key = '0'

ID zůstane 2he položky, ale data se odešlou první položky => dojde k duplikaci. A to by se nemělo stát. Přece když mi to vypíše správné ID, mělo by to vypsat i správné data ne?

Omlouvám se za příliš dlouhý kód, ale stručněji jsem to vysvětlit nedokázal. Dík za každou radu.
tiso
Profil
Toto je správne chovanie, odošle sa iba checkbox ktoré si zaškrtol... Riešením je dať do checkboxu natvrdo index - akce[0], akce[1], ...
Akacko
Profil
tiso
Aha, tak proto. Dík.

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