Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
Zdravím,
spravil som si 2 php scripty, ktoré by mali podľa vybraného radio buttonu, a následnom odoslaní, upraviť stĺpec podľa určených podmienok (if, elseif). Problém je, že script č.1 mi vypíše chybu, ktorú neviem vyriešiť "Warning: mysql_query() expects parameter 2 to be resource". Je to akoby ťahal viac IDčiek, ale keď si to vypíšem, tak ťahá len 1 a presto píše, že je tých zdrojov viac. V scripte č.2 neviem nastaviť podmienky, pre vybraný radio button. Je to vo while, takže sa tie buttony prideľujú k viacero riadkom, preto treba rozlišovať ID. Každopádne uvítam akékoľvek postrehy. Script č.1 (keď to umiestním mimo while cyklu a napíšem tam ID "natvrdo" (bo inak to ID nemá odkiaľ vedieť), tak to funguje, ale to zas neviem, ako by som ťahal tie IDčka): <? $vysledok=mysql_query("SELECT id FROM table WHERE state=0"); while ($zaznam=mysql_fetch_array($vysledok)): if (isset($_POST['state']) && !empty($_POST['state'])) {$state=mysql_real_escape_string($_POST['state']); if ($state=="jedna") mysql_query ("UPDATE table SET state=1 WHERE id=$zaznam[id]", $GLOBALS["result"]); elseif ($state=="dva") mysql_query ("UPDATE table SET state=2 WHERE id=$zaznam[id]", $GLOBALS["result"]); elseif ($state=="tri") mysql_query ("UPDATE table SET state=3 WHERE id=$zaznam[id]", $GLOBALS["result"]); else echo "chyba v scripte."; } <form method='post' action=''> <input type='radio' name='state' value='jedna' /> <input type='radio' name='state' value='dva' /> <input type='radio' name='state' value='tri' /> <input type='submit' value='odoslať' /> </form> endwhile; ?> <? $vysledok=mysql_query("SELECT id FROM table WHERE state=0"); if (isset($_POST['idecko'])) {foreach($_POST["idecko"] as $idecko) {// tu by mali byť podmienky, ale neviem podľa čoho ich spraviť mysql_query ("UPDATE table SET state='$cislo' WHERE id='$idecko'", $GLOBALS["result"]);} // $cislo by mal obsahovať číslo 1-3 } while ($zaznam=mysql_fetch_array($vysledok)): <form method='post' action=''> <input type='radio' name='idecko[]' value='$zaznam[id]' /> <input type='radio' name='idecko[]' value='$zaznam[id]' /> <input type='radio' name='idecko[]' value='$zaznam[id]' /> <input type='submit' value='odoslať' /> </form> endwhile; ?> |
||
Keeehi Profil |
Duchaplny:
„Warning: mysql_query() expects parameter 2 to be resource“ - to znamená, že očekává 2 parametr jako zdroj (proměnnou se spojením na DB). Tedy proměnnou ve které je návratová hodnota funkce mysql_connect(). Ale je to nepovinný parametr, takže když ho vynecháš, nic se nestane. řádek 5 si přepiš na $state=$_POST['state']; řádky 7-17: Vhodnější by byl switch. Případně to celé přepsat takto: $preklad = array("jedna" => 1, "dva" => 2, "tri" => 3); if(isset($preklad[$state])) mysql_query ("UPDATE table SET state=$preklad[$state] WHERE id=$zaznam[id]"); else echo "chyba v scripte."; Ten druhý script moc nechápu. |
||
Duchaplny Profil |
Keeehi:
Ten druhý script je na checkboxy, tam podmienky nie sú, ale skúšal som to aj touto cestou. Dík za opravu. Takže v tom prvom mi chýbal vlastne $GLOBALS["result"]; ak som to správne pochopil. Inak ten tvoj príklad mi upraví všetky riadky naraz. Neviem ako to ošetriť. |
||
Keeehi Profil |
#4 · Zasláno: 20. 2. 2012, 17:23:54
Duchaplny:
„Takže v tom prvom mi chýbal vlastne $GLOBALS["result"]; ak som to správne pochopil.“ Spíše přebýval. „Ten druhý script je na checkboxy“ Ale já tam vidím type="radio"
|
||
Duchaplny Profil |
Keeehi:
Spíše přebýval. Ahá tak. Ale já tam vidím type="radio" to už bola moja úprava na radio. Originál script nájdeš tu update riadkov cez checkboxy - [#3]. Nevieš mi poradiť čo s tým, keď mi to upravuje všetky riadky naraz ? |
||
Duchaplny Profil |
už to skúšam pekne dlho, ale nejde mi to. Potrebujem ten script mať mimo while cyklu, takže tým pádom musím do input value dať $zaznam[id], ale neviem ako mám potom rozlišovať, ktorý <input type='radio'> bol označený. Keď zas rozlišujem <input type 'radio'>, tak mi nejdu IDčka. Na nete som videl akurát nejakú možnosť s <input type='hidden'>, ale tá sa mi vôbec nepáčila, bo nebola dobre rozpísaná a prišla mi zbytočne komplikovaná. Nemá niekto lepší nápad ?
|
||
Duchaplny Profil |
ok, tak už som to vyriešil. Poradili mi na inej stránke, ako to funguje s <input hidden>.
Riešenie: <? if (!empty($zaznamId) && !empty($state)) {$zaznamId = (int)$_POST['zaznamId']; $state = (int)$_POST['state']; if (isset($zaznamId) && isset($state)) mysql_query ("UPDATE table SET state=$state WHERE id=$zaznamId"); else echo "chyba v scripte."; } $vysledok=mysql_query("SELECT id FROM table WHERE state=0"); while ($zaznam=mysql_fetch_array($vysledok)): <form method='post' action=''> <input type='hidden' name='zaznamId' value='$zaznam[id]' /> <input type='radio' name='state' value='1' /> <input type='radio' name='state' value='2' /> <input type='radio' name='state' value='3' /> <input type='submit' value='Odoslať' /> </form> endwhile; ?> |
||
Časová prodleva: 12 let
|
0