2009-08-19 5 views
2

Je suis novice en PHP et je crée un CMS de base en utilisant PHP et MySQL. J'ai du mal à obtenir les informations de la case à cocher de ma page HTML dans la base de données.Ajout de valeurs de cases à cocher binaires à la base de données MySQL en utilisant PHP

Comment puis-je faire apparaître les valeurs comme valeurs binaires 0 ou 1?

Le document HTML est écrit comme suit:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title>Create your news page</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <body> 
     <fieldset> 
      <legend>Checked components will show in the page</legend> 
      <form method="POST" action="http://*********.php"> 
       <span class="label">Header</span> 
       <input type="checkbox" name="header" value="HEADER"> 
       <br> 
       <span class="label">Footer</span> 
       <input type="checkbox" name="footer" value="FOOTER"> 

       <hr> 
       <span class="label">Local news</span> 
       <input type="checkbox" name="local" value="LOCALNEWS"> 
       <br> 
       <span class="label">National news</span> 
       <input type="checkbox" name="national" value="NATIONALNEWS"> 
       <br> 
       <span class="label">International news</span> 
       <input type="checkbox" name="international" value="INTERNATIONALNEWS"> 
       <p> 
       <input type="submit"> 
      </form> 
     </fieldset> 
    </body> 
</html> 

Le document PHP est écrit comme suit:

<?php 
    $user="user_***"; 
    $password="*********"; 
    $database="dbxyz"; 
    mysql_connect("localhost", $user, $password); 
    mysql_select_db($database, $db_handle); 
    mysql_select_db("dbxyz"); 
    if(isset($_POST['layout'])) 
    { 
     foreach($_POST['layout'] as $value { 
      $insert="INSERT INTO layout (header, footer, local, national, international) VALUES ('$value')"; 
      mysql_query($insert); 
     } 
    } 
?> 

Répondre

0

Je pense que vous cherchez BOOL'-type de données » MySQL.

Editer: Votre code est effectivement chargé avec des erreurs de syntaxe/code ... Je ne crois pas que cela fonctionne réellement. Pouvez-vous coller l'original ici?

0

Créez le champ qui stockera les valeurs dans votre table TINYINT (1), vérifiez l'état de la case à cocher lors de la soumission en comparant $ _POST ['nameOfCheckboxField'] avec 'on', s'il est vrai, put 1 dans votre champ db, sinon mettez 0.

2

Vous êtes censé mettre toutes les valeurs dans la requête à la fois.
Il peut être fait comme ça:

$values = array(
    'header'  => null, 
    'footer'  => null, 
    'local'   => null, 
    'national'  => null, 
    'international' => null 
); 

foreach (array_intersect_key($_POST, $values) as $key => $value) { 
    $values[$key] = mysql_real_escape_string($value); 
} 

mysql_query("INSERT INTO layout (header, footer, local, national, international) VALUES ('$values[header]', '$values[footer]', '$values[local]', '$values[national]', '$values[international]')"); 

Notez également l'appel mysql_real_escape_string. Il échappe tous les caractères de son paramètre qui peut être utilisé pour les injections SQL.

+0

Et oui, comme les affiches ont déjà dit, vous devez convertir la case à cocher valeurs à 1 ou 0, puis enregistrer dans un champ tinyint. –

2

Si les cases à cocher ne sont pas cochées dans un formulaire, la paire clé/valeur n'est pas envoyée lorsque le formulaire est soumis, vous devez donc vérifier si chacune est définie. Alors:

$header = isset($_POST['header']) ? 1 : 0; 

Cette variable sera 1 si la case « en-tête » a été vérifié, sinon il sera 0.

$header  = isset($_POST['header']) ? 1 : 0; 
$footer  = isset($_POST['footer']) ? 1 : 0; 
$local   = isset($_POST['local']) ? 1 : 0; 
$national  = isset($_POST['national']) ? 1 : 0; 
$international = isset($_POST['international']) ? 1 : 0; 

$insert = "INSERT INTO layout (header, footer, local, national, international) 
      VALUES ($header, $footer, $local, $national, $international)"; 

mysql_query($insert); 
Questions connexes