mysql — обновляет значения базы данных для флажков, используя PHP PDO, не обновляя все флажки

У меня есть 3 строки, и у каждой строки есть флажок, когда я снимаю флажки со всех полей и нажимаю сохранить, я получаю сообщение об ошибке в своем операторе else. Если я снимаю флажок и нажимаю «Сохранить», когда я дохожу до последнего флажка и нажимаю «Сохранить», я также получаю сообщение об ошибке в операторе else.

Вот мой вопрос — как разрешить снятие всех флажков без получения ошибки?

Вот мой PHP-код:

//Update Social Preferences with new value for display on homepage
$settingsArray = array('myfacebook', 'mytwitter', 'mygoogle');
if(isset($_POST['btn-save']))
{
if(isset( $_POST['mysocial']))
{
$values = array();
foreach($_POST['mysocial'] as $selection )
{  if(in_array($selection, $settingsArray))
{  $values[ $selection ] = 1; }
else
{  $values[ $selection ] = 0; }
} // end of foreach.

$user_id = $_SESSION['user']['id'];

try // save user selection to the database
{

$stmt = $db->prepare("UPDATE social_preferences SET my_facebook = :myfacebook, my_twitter = :mytwitter, my_google = :mygoogle WHERE user_id = :userID");
$stmt->bindParam(":userID", $userid, PDO::PARAM_INT);
$stmt->bindParam(':myfacebook', $values['myfacebook']);
$stmt->bindParam(':mytwitter', $values['mytwitter']);
$stmt->bindParam(':mygoogle', $values['mygoogle']);
$stmt->execute();

header("Location: admin-social-test.php");
die("Redirecting to admin-social-test.php");
}  catch(PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
}
else
{  $noCheckbox = 'No checkbox selection made...'; }
} // End of, if statement from the button check

Вот мой HTML-код:

<input type="checkbox" name="mysocial[]" value="myfacebook" <?php echo ($result['my_facebook']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mytwitter" <?php echo ($result['my_twitter']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mygoogle" <?php echo ($result['my_google']==1 ? 'checked' : '');?> />

0

Решение

Я добавил скрытый вход для каждого.

Так что я изменяю это:

<input type="checkbox" name="mysocial[]" value="myfacebook" <?php echo ($result['my_facebook']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mytwitter" <?php echo ($result['my_twitter']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mygoogle" <?php echo ($result['my_google']==1 ? 'checked' : '');?> />

К этому:

<input type="hidden" name="mysocial[]" value="myfacebook1" <?php echo ($result['my_facebook']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="myfacebook" <?php echo ($result['my_facebook']==1 ? 'checked' : '');?> />
<input type="hidden" name="mysocial[]" value="mytwitter1" <?php echo ($result['my_twitter']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mytwitter" <?php echo ($result['my_twitter']==1 ? 'checked' : '');?> />
<input type="hidden" name="mysocial[]" value="mygoogle1" <?php echo ($result['my_google']==1 ? 'checked' : '');?> />
<input type="checkbox" name="mysocial[]" value="mygoogle" <?php echo ($result['my_google']==1 ? 'checked' : '');?> />

Кажется, это работает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector