| 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: 14 let
|
|||
0