Autor Zpráva
Stepanka
Profil *
Ahoj,

potřebovala bych, prosím, poradit.
Mám před sebou formulář. Checkboxy a tlačítko "Odeslat".
Když NEzaškrtnu žádný checkbox a kliknu na "Odeslat", stránka se mi obnoví a údaje na ní se tím pádem někdy změní, což nechci.

Šlo by nějak ověřit (asi přes JS), že pokud uživatel nezaškrtne žádný checkbox a klikne na "Odeslat", aby to tlačítko nic neudělalo? Aby se formulář neodeslal "s žádnými daty"? Prostě aby stránka zůstala nehnutá tak, jak vypadala před tím, než na to tlačítko klikl?

Jinak ten formulář vypadá nějak takto:

$query = "SELECT * 
			FROM $t_user_table 
			ORDER BY realname ASC";
$result = db_query($query);	

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="user_id">
<option value="0">Vše

while ($row = db_fetch_array($result)) {	
	echo '<option value = "' .$row['id']. '"' . 
    ((int) $row['id'] === (int) $_POST['user_id'] ? 'selected' : '') . '>'. 
    $row['realname'];
}?>	

</select>
<input type="submit" name="zobrazit" value="Odeslat">
</form>


Zkoušela jsem hledat, ale našla jsem jen rady podobného typu: [url=http://interval.cz/clanky/javascript-kontrola-formulare-pred-odes lanim /]http://interval.cz/clanky/javascript-kontrola-formulare-pred-odeslan im /[/url]
a ty mi do mojeho formuláře moc nesedí, protože se vše odvíjí od "name" daného inputu.

Neexistuje jiné řešení jak to udělat?

Budu ráda za jakékoliv rady a předem moc děkuju.
Stepanka
Profil *
Omlouvám se špatně vloženou adresu, zde je znovu: http://interval.cz/clanky/javascript-kontrola-formulare-pred-odeslanim /
Taps
Profil
Stepanka
zkus to pomocí podmínek
if($_POST['nazev_checkboxu']="on")// pokud je checkbox zaškrknutýy
{
zapis do db


}
else{

echo "nic se nezapsalo do databáze";
}
Stepanka
Profil *
Taps
Nevím teď akorát, co vložit do $_POST['nazev_checkboxu'], když checkbox vypadá takto:
echo "<input type='checkbox' name='row".$row['id']."'>";

Ale zatím i tak moc děkuju.
Kcko
Profil
Inputy si pojmenuj jako pole



echo "<input type='checkbox' name='inputak[]' value='$row[id]'>";


a pak ti staci jen otestovat toto pole


$odeslat = false;
if (is_array($_POST['inputak']))
{
foreach ($_POST['inputak'] as $k => $v)
{
if ($k && $v)
{

$odeslat = true; break;
}
}
}



a podminka if ($odeslat)
{
// vymaz
}

else
{
//nic
}
Stepanka
Profil *
Kcko
ale já mám to zpracování takové:

while ($row = db_fetch_array($result)) {
echo "<input type='checkbox' name='row".$row['id']."'>";
atd., dalsi vypisy z db
}


A potom to vykonání:

foreach ($_POST as $k => $v) {
	if (($v == "on") && (preg_match("/^row(\d+)$/", $k, $regs))) {
		$query = "UPDATE $t_custom_field_string_table 
					SET value='ANO'
					WHERE field_id = 8
					AND bug_id = '".$regs[1]."'";
		$result = db_query($query);	
	}
} 



To mi tu poradil někdo před Tebou. ( tady )

Ten Tvůj kód mi do toho nešel nasáčkovat tak, aby zůstalo zachováno to "name" inputů.. Pokud ho změním na Tvůj "inputak[]", tak se mi nic v dotazu do db neuloží.

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: