Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
#1 · Zasláno: 26. 7. 2013, 14:30:44
Zdravím,
rád by som si spravil zoznam ľudí s informáciami a naraz ich menil. Príklad: Meno a Priezvisko | Vek | Tel.číslo Jožko Mrkvička | 18 | 421000 Ferko Mrkvička | 17 | 421000 Janko Mrkvička | 16 | 421000 ..... Meniť by som chcel len vek a tel. číslo naraz len ich prepísaním a odoslaním, takže som spravil form (kombinovane s PHP): <form method="post" action=""> <fieldset> <?php $vyber=mysql_query("SELECT id, meno, vek, telefon FROM tabulka", $GLOBALS["result"]); while ($vysledok=mysql_fetch_array($vyber)): echo "<input type="hidden" name="zoznamID" value='".$vysledok["id"]."' />". $vysledok["meno"]. "<input name="vek" size="1" value=".$vysledok["vek"]." />". "<input name="telefon" size="1" value=".$vysledok["telefon"]." />"; endwhile; ?> <input type="submit" name="poslat" value="Poslať" /> <?php if (!empty($_POST["poslat"])) {foreach($_POST["zoznamID"] as $zoznamID) {mysql_query ("UPDATE `tabulka` SET `vek`=$_POST[vek], `telefon`=$_POST[telefon] WHERE `id`='$zoznamID';"); if (mysql_affected_rows()>0) echo "<p> Údaje boli zmenené. </p>\n"; else echo "<p> ! Operácia sa nezdarila ! </p>\n"; } } ?> Vie mi niekto poradiť ? |
||
Taps Profil |
Duchaplny:
zkus <form method="post" action=""> <fieldset> <?php $vyber=mysql_query("SELECT id, meno, vek, telefon FROM tabulka", $GLOBALS["result"]); while ($vysledok=mysql_fetch_array($vyber)): echo '<input type="hidden" name="zoznamID[]" value="'.$vysledok["id"].'" />' .$vysledok["meno"]. '<input name="vek[]" size="1" value="'.$vysledok["vek"].'" /> <input name="telefon[]" size="1" value="'.$vysledok["telefon"].'" />'; endwhile; ?> <input type="submit" name="poslat" value="Poslať" /> <?php if (!empty($_POST["poslat"])) {foreach($_POST["zoznamID"] as $index => $idecko) {mysql_query ("UPDATE `tabulka` SET `vek`='".$_POST[vek][$index]."', `telefon`='".$_POST[telefon][$index]."' WHERE `id`='$idecko';"); if (mysql_affected_rows()>0) echo "<p> Údaje boli zmenené. </p>\n"; else echo "<p> ! Operácia sa nezdarila ! </p>\n"; } } ?> |
||
Duchaplny Profil |
#3 · Zasláno: 26. 7. 2013, 16:29:45
Taps:
„zkus“ Nepomohlo. Všade to hodilo 0 a miesto hodnôt, ktoré vložím je výstup pole, teda -> Array[číslo] (začína 0). |
||
Taps Profil |
#4 · Zasláno: 26. 7. 2013, 16:39:44
Duchaplny:
pokud aktualizuješ více poležek v db tak je lepší pracovat s polem. |
||
Duchaplny Profil |
#5 · Zasláno: 26. 7. 2013, 16:49:47
Taps:
„pokud aktualizuješ více poležek v db tak je lepší pracovat s polem.“ verím, len keby to pole nehádže všade 0. Ja potrebujem vkladať vlastné hodnoty, nie číslovať riadky. |
||
Taps Profil |
#6 · Zasláno: 26. 7. 2013, 16:56:04
Duchaplny:
o odesílají se ti správně data z formuláře? Svůj kod jsem ještě poupravil, tak můžeš vyzkoušet |
||
Duchaplny Profil |
#7 · Zasláno: 26. 7. 2013, 17:31:49
Taps:
ID nájde tak ako predtým správne, ale vek a telefon je "Array[číslo]", pretože "vek[]" a "telefon[]" je pole, ktoré sa čísluje a nezaznamenáva hodnoty, ktoré vkladám, takže po odoslaní nastaví všetko na 0. BTW: Tento kód som skúšal, nevidím v ňom zmenu. |
||
Alphard Profil |
#8 · Zasláno: 26. 7. 2013, 17:33:34
Když editujete, je rozumné nevytvářet dynamické pole, ale napsat tam rovnou id konkrétní položky. Raději přímo
name="list[id][vek]"
Bylo to tady snad 100x, naposled před pár týdny, kdybyste diskusi sledovali pravidelně, nemusíte vymýšlet kolo :-) |
||
Duchaplny Profil |
#9 · Zasláno: 26. 7. 2013, 17:38:17
Alphard:
sry, ale nejak nechápem, nesledujem to tu pravidelne, aký list[id] ? to ID je napísané v <input type="hidden">, ale problém je s hodnotami, ktoré sa neukladajú podľa manuálneho zadania.. |
||
Alphard Profil |
#10 · Zasláno: 26. 7. 2013, 19:45:02
list je libovolný kontejner, na kterém se vystaví pole, kde jako klíč bude nejdříve id a pak jednotlivé položky. V jednodušším formátu to pro update už dostat nemůžete. Udělejte to, jak vám říkám, a při zpracování si zobrazte vstupní proměnné.
|
||
Duchaplny Profil |
keď dám toto, tak to nefunguje:
<input name="zoznamID[]vek" size="1" value="'.$vysledok["vek"].'" /> <input name="zoznamID[][vek]" size="1" value="'.$vysledok["vek"].'" /> name="list[id][vek]"
to urobiť nejde, abo aspoň ja nevidím spôsob, ako to urobiť.. |
||
Taps Profil |
#12 · Zasláno: 26. 7. 2013, 20:34:58
Duchaplny:
máš zakončený formulář pomocí </form> <? print_r($_POST); ?> |
||
Duchaplny Profil |
dopísal som do toho príkladu, resp. do selectu, limit 1, aby mi to hodilo len 1 riadok z MySQL a keď zmením dve hodnoty a odošlem, s týmto zadaním:
<input name="zoznamID[]vek" size="1" value="'.$vysledok["vek"].'" /> <input name="zoznamID[]telefon" size="1" value="'.$vysledok["telefon"].'" /> Array ( [zoznamID] => Array ( [0] => 1 [1] => 1 [2] => 2 ) [odosli] => Odošli ) print_r(Array) |
||
Taps Profil |
Duchaplny:
pokud použiješ ten můj původní zápis tak co ti zobrazí <?print_r($_POST); ?> |
||
Duchaplny Profil |
#15 · Zasláno: 26. 7. 2013, 21:10:22
Taps:
pokiaľ použijem tvoj zápis a vložím hodnoty vek = 1 a telefon = 2 tak mi to vypíše presne toto: Array ( [zoznamID] => Array ( [0] => 1 ) [vek] => Array ( [0] => 1 ) [telefon] => Array ( [0] => 2 ) [odosli] => Odošli ) ! Operácia sa nezdarila ! 1 |
||
Taps Profil |
Duchaplny:
pole se vypisuje správně :-) tak přejdeme do SQL <?php if (!empty($_POST["poslat"])) {foreach($_POST["zoznamID"] as $index => $idecko) { mysql_query ("UPDATE tabulka SET vek='".$_POST['vek'][$index]."', telefon='".$_POST['telefon'][$index]."' WHERE id='$idecko'") or die (mysql_error()); if (mysql_affected_rows()>0) echo "<p> Údaje boli zmenené. </p>\n"; else echo "<p> ! Operácia sa nezdarila ! </p>\n"; } } ?> |
||
Duchaplny Profil |
#17 · Zasláno: 26. 7. 2013, 21:16:57
Taps:
žiadna, všetko prebehne v poriadku a zobrazí sa to, čo predtým.. |
||
Taps Profil |
#18 · Zasláno: 26. 7. 2013, 21:20:56
Duchaplny:
tak to vypadá že ti vše funguje v pořádku, ještě uděláme drobnou úpravu <?php if (!empty($_POST["poslat"])) {foreach($_POST["zoznamID"] as $index => $idecko) { mysql_query ("UPDATE tabulka SET vek='".$_POST['vek'][$index]."', telefon='".$_POST['telefon'][$index]."' WHERE id='$idecko'") or die (mysql_error()); } $hlaska= (mysql_affected_rows()>0) ? 'Údaje byly úspěšně změněny' : 'Operace se nezdařila'; echo $hlaska; } ?> |
||
Duchaplny Profil |
juchú, teraz to už ukladá, akurát, že to hodí "Operace se nezdařila", aj keď zmení polovicu údajov a ostatné ponechám jak boli, ale to je len chyba hlášky, s tým si už hádam poradím.. nakoniec bol problém v úvodzovkách..
Ďakujem veľmi pekne.. |
||
Časová prodleva: 12 let
|
0