2010-06-04 2 views
0

Je suis actuellement la construction d'un formulaire php en utilisant les radios style jQuery iPhone (trouvé à http://devgrow.com/iphone-style-switches/). Par défaut, la valeur radio est définie sur NO dans la table MySQL pour chaque nouvelle entrée, mais j'ai du mal à soumettre le formulaire.Soumettre des valeurs radio dans un formulaire PHP à une table MySQL (mise à jour valeur dans la table)

Comment le formulaire peut-il indiquer l'état actuel du bouton radio (c'est-à-dire est-il défini sur oui ou non lors de la soumission)? De plus, quel code MySQL devrais-je utiliser pour mettre à jour la valeur dans la table? C'est le code que j'ai jusqu'ici.

code forme 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> 

Code doit soumettre un formulaire

 <?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; 

       }; 
       ?> 

Répondre

3

Les informations seront présentes dans $_POST['<id>']<id> correspond à la ligne dans tbl_alerts comme indiqué dans votre formulaire php:

echo '< input type = "radio" id = "radio1" name = "'. $ Rows ['id']. '" value = "non" vérifié/> type d'entrée < = "radio" id = "radio2" name = " '$ rows [ 'id'].'" value = "oui"/>

(Nous soulignons)

Vous pouvez (et devriez) vérifier cela en ajoutant un var_dump ($ _ POST) en haut de votre script de traitement.

Il sera difficile pour votre script de traitement de connaître la valeur de l'ID, alors ce que vous voulez probablement est de nommer la radio comme un autre nom, puis d'ajouter un champ de formulaire caché qui va stocker l'ID.

ex. vos boutons radio apparaîtraient:

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

puis quelque part dans votre code que vous avez:

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

De cette façon, la valeur de bouton radio dans $_POST['status'] et l'identifiant de la ligne sera en $_POST['statusid']

Questions connexes