Передача значений радио в форме PHP в таблицу MySQL (обновление значения в таблице)

0

В настоящее время я создаю php-форму, используя радиоуправляемые стили iPhone jQuery (найденные в http://devgrow.com/iphone-style-switches/). По умолчанию для каждой новой записи значение радиосвязи установлено в NO в таблице MySQL, но мне трудно отправить форму.

Как форма сможет сообщить текущее состояние переключателя (т.е. установлено ли оно да или нет при представлении)? Также, какой код MySQL мне нужно будет использовать для обновления значения в таблице? Это код, который у меня есть.

Код формы PHP

<!--- iphone checkbox --->

<script type="text/javascript"> 
$(document).ready( function(){ 
    $(".cb-enable").click(function(){
        var parent = $(this).parents('.switch');
        $('.cb-disable',parent).removeClass('selected');
        $(this).addClass('selected');
        $('.checkbox',parent).attr('checked', true);
    });
    $(".cb-disable").click(function(){
        var parent = $(this).parents('.switch');
        $('.cb-enable',parent).removeClass('selected');
        $(this).addClass('selected');
        $('.checkbox',parent).attr('checked', false);
    });
});
</script> 

 <style type="text/css"> 
.cb-enable, .cb-disable, .cb-enable span, .cb-disable span { background: url(resources/switch.gif) repeat-x; display: block; float: left; }
    .cb-enable span, .cb-disable span { line-height: 30px; display: block; background-repeat: no-repeat; font-weight: bold; }
    .cb-enable span { background-position: left -90px; padding: 0 10px; }
    .cb-disable span { background-position: right -180px;padding: 0 10px; }
    .cb-disable.selected { background-position: 0 -30px; }
    .cb-disable.selected span { background-position: right -210px; color: #fff; }
    .cb-enable.selected { background-position: 0 -60px; }
    .cb-enable.selected span { background-position: left -150px; color: #fff; }
    .switch label { cursor: pointer; }
    .switch input { display: none; }
</style> 


</head>

<body style="text-align:left;">

<div style="padding: 15px;">

<span class="loginfail" style="font-size:24px; font-weight: bold">Notifications</span><p>

<?php include("progress_insertcomment.php"); ?>

 <?php 

// Make a MySQL Connection
mysql_select_db("speedycm_data") or die(mysql_error());

$query_comment = "select * from tbl_alert order by id desc limit 1";
$comment = mysql_query($query_comment, $speedycms) or die(mysql_error());
$row_comment = mysql_fetch_assoc($comment);
$totalRows_comment = mysql_num_rows($comment);

?>

<!--- add notification --->

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <span id="sprytextarea1">

<textarea id='comment' name="comment" style="height: 75px; width:330px;"><?php echo $row_comment['comment']; ?></textarea> 
</span>
<p>
<button type="submit">Add</button>
               <input type="hidden" name="notc" value="1"/>
               </form>

               <!--- notification history --->

               <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

               <table border="0" cellspacing="2" cellpadding="2">
                  <?php

if ( $row_comment == 0 ) {

        echo "<span style='font-size: 11px;'>No current alerts.</span>";

    } else {

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM tbl_alert ORDER BY id DESC") 
or die(mysql_error());  

while($rows=mysql_fetch_array($result)){ ?>
  <tr>
    <td>
     <?php
echo "<div class='bubble'><div class='pimped'>
        <blockquote>" . $rows['comment'] . "
        </blockquote></div>
        <cite><strong>" . $rows['user'] . "</strong> @ " . $rows['date'] . "</cite>
        <span style='font-size: 10px;'>
        <p>
    <a href='editalert.php?id=". $rows['id'] ."' class='form' >Edit</a>&nbsp;&#8226;&nbsp;<a href='deletealert.php?id=". $rows['id'] ."' class='form'>Delete</a>
    </span>
    </div>
    "; 
    ?> 
    </td>
    <td valign="top" align="center"><div style="padding-left: 30px;"><span style="font-size: 10px;">Completed?</span>
    <p class="field switch">

    <!--- determine status of notification --->

    <?php

    $status = $rows['status'];

    if ( $status == yes ) {

    echo '<input type="radio" id="radio1" name="'.$rows['id'].'" value="no" checked/>
    <input type="radio" id="radio2" name="'.$rows['id'].'" value="yes"/>
    <label for="radio1" class="cb-enable selected"><span>Yes</span></label>
    <label for="radio2" class="cb-disable"><span>No</span></label>';

} else {

    echo '<input type="radio" id="radio1" name="'.$rows['id'].'" value="yes"/>
    <input type="radio" id="radio2" name="'.$rows['id'].'" value="no" checked/>
    <label for="radio1" class="cb-enable"><span>Yes</span></label>
    <label for="radio2" class="cb-disable selected"><span>No</span></label>';

} 

?>
    </p>
    </div></td>
  </tr>
  <tr>
    <td></td>
    <td align="center"><div style="padding-left: 30px;">
<button type="submit">Update</button>
        <input type="hidden" name="notc2" value="1"/>
    </div></td>
  </tr>
  <?php
    }
    }
    ?>
</table>
</form>


</div>

для отправки формы

      <?php   

        // 6) update notifications

        if (array_key_exists('notc2',$_POST)) {

echo "<p style='font-size: 12px;'>Thank you. The notifications have been updated successfully.</p>";

    echo "<span style='font-size: 12px;'>
                            <a onClick=\"history.go(-1)\" class='form'>Return</a>
                            <p></span>
                ";

            exit;

                };  
                ?>
Теги:

1 ответ

3
Лучший ответ

Информация будет присутствовать в $_POST['<id>'], где <id> соответствует строке в tbl_alerts как указано в вашей php форме:

echo '< input type = "radio" id = "radio1" name= "'. $rows ['id']. '" value = "no" checked/ > < input type = "radio" id = "radio2" name= "'. $rows [' id '].'" value = "yes" / >

(выделено курсивом)

Вы можете (и должны) убедиться, что добавив var_dump ($ _ POST) вверху вашей обработки script.

Для вашей обработки script будет сложно узнать значение id, так что, возможно, вы хотите назвать радио как какое-то другое имя, а затем добавить скрытое поле формы, в котором будет храниться идентификатор.

ех. появятся ваши переключатели:

<input type="radio" id="radio1" name="status" value="no" checked/>
<input type="radio" id="radio2" name="status" value="yes"/>

а затем где-то в вашем коде есть:

echo '<input type="hidden" name="statusid" value="'.$rows['id'].'"/>';

Таким образом, значение переключателя будет находиться в $_POST['status'], а идентификатор строки будет находиться в $_POST['statusid']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню