Autor Zpráva
ludvalb
Profil
Ahoj, mohl by jste mi někdo pomoci s pro mě neřešitelným problémem?

Mám formulář co se mi generuje pomocí forcyklu podle počtu unikátních ID a produktID a potřeboval bych aby se dalo udělat, že když změním všechna pole v tomto formuláři, tak se mi upraví v databázi jednotlivé záznamy. Nyní to řeším tak, že mám pro každý produkt tlačítko uložit, což je ale nepohodlné. Jelikož se může jednat o desítky ID s desítkami produktID.

Nevím jak to sestavit tak, abych dostal několik hodnot pro imputy se stejným názvem, Předpokládám, že asi přes pole. Ale fakt nevím.

Předem děkuji všem za jakoukoliv pomoc či návod.
Tori
Profil
Data pro každý produkt musí být identifikovaná pomocí jeho ID. Formulář udělejte tak, aby se všechny prvky jmenovaly ne např. name="nazev", ale třeba name="data[3][nazev]", kde 3 je ID produktu. Údaje o jednotlivých produktech pak budou v $_POST['data'][ID produktu], to můžete už procházet pomocí foreach.
ludvalb
Profil
Děkuji za radu, tušil jsem, že to bude přes pole. :-)

Zkusil jsem to aplikovat na můj kod a narazil jsem na problém, kterému nerozumím. Pročítal jsem si i různé návody jak na víceúrovňové pole, ale nějak z toho nejsem moudrý.

Nemohu nějak pochopit, jak dokážu zjisti, o které pole z formuláře se jedná? počet polí se mi totiž ve formuláři mění dle potřeby.

nahradil jsem názvy ve formuláři takto:

name="data['.$Id.']['dopravce']"
name="data['.$Id.']['baliku']"
name="data['.$Id.']['hmotnost']"

a předpokládám, že je vypíšu takto:

for ($i = 0;$i<  mysql_num_rows($result);$i++) {
  $Id = mysql_result($result,$i,'Id');
  $dopravce = $_POST['data'][$Id];
  $baliku = $_POST['data'][$Id];
  $hmotnost = $_POST['data'][$Id];

}


foreach ($data as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}
Tori
Profil
ludvalb:
jak dokážu zjisti, o které pole z formuláře se jedná?
Proto tam je ID produktu jako klíč. Kdybyste měl jen <input name="data[nazev][]">, tak z toho nepoznáte, ke kterému produktu který název patří. Příklad zpracování dat z formuláře:
foreach ($_POST['data'] as $id => $produkt) {
    // např.:
    $sql = 'UPDATE produkty SET nazev = "'.$produkt['nazev'].'" WHERE id = '.$id;

    // anebo prochazení jednotlivých hodnot:
    foreach ($produkt as $vlastnost => $hodnota) {
        ...
    }
}

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: