web-dev-qa-db-fra.com

PHP : insère plusieurs valeurs de cases à cocher dans une colonne MySQL

Je veux écrire une simple fonction PHP pour insérer des valeurs de 10 et 20 cases à cocher. Le problème est le suivant: dois-je insérer toutes les valeurs dans une seule colonne de la table MySQL ou dois-je utiliser la table séparée?

Mon objectif principal est d'insérer les valeurs de plusieurs cases à cocher dans MySQL, puis de les mettre à jour. Si j'ai coché 7 cases à cocher, et après un certain temps, je souhaite mettre à jour de 7 à 5, comment il va supprimer les valeurs de la colonne de la table?

Aidez-moi avec un exemple simple PHP et le type de champs MySQL que je devrais ajouter, car je veux insérer une valeur de case à cocher qui devrait être en format numérique et l’étiquette des cases à cocher dans un autre champ.

Voici le HTML que j'ai 

<form method="post" action="">
   Games You Like: <br/>
   <input type="checkbox" name="games[]" value="1"><label>Football</label><br>
   <input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br>
   <input type="checkbox" name="games[]" value="3"><label>Pool</label><br>
   <input type="checkbox" name="games[]" value="4"><label>Rugby</label><br>
   <input type="checkbox" name="games[]" value="5"><label>Tennis</label><br>
   <input type="checkbox" name="games[]" value="6"><label>Cricket</label><br>
   <input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br>
   <input type="checkbox" name="games[]" value="8"><label>Hockey</label><br>
   <input type="submit" name="submit" value="submit">
</form>
5
Sohail Sardar

Essayez tout cet exemple,

Structure de la table

CREATE TABLE IF NOT EXISTS `games` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `game_name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
<?php
include_once("yourconfig.php"); //include your db config file
extract($_POST);
$check_exist_qry="select * from games";
$run_qry=mysql_query($check_exist_qry);
$total_found=mysql_num_rows($run_qry);
if($total_found >0)
{
    $my_value=mysql_fetch_assoc($run_qry);
    $my_stored_game=explode(',',$my_value['game_name']);
}

if(isset($submit))
{
    $all_game_value = implode(",",$_POST['games']);
    if($total_found >0)
    {
        //update
        $upd_qry="UPDATE games SET game_name='".$all_game_value."'";
        mysql_query($upd_qry);

    }
    else
    {
        //insert
        $ins_qry="INSERT INTO games(game_name) VALUES('".$all_game_value."')";
        mysql_query($ins_qry);
    }
}

?>
<form method="post" action="">
Games You Like: <br/>
    <input type="checkbox" name="games[]" value="1" <?php if(in_array(1,$my_stored_game)){echo "checked";}?>><label>Football</label><br>
    <input type="checkbox" name="games[]" value="2" <?php if(in_array(2,$my_stored_game)){echo "checked";}?>><label>Basket Ball</label><br>
    <input type="checkbox" name="games[]" value="3" <?php if(in_array(3,$my_stored_game)){echo "checked";}?>><label>Pool</label><br>
    <input type="checkbox" name="games[]" value="4" <?php if(in_array(4,$my_stored_game)){echo "checked";}?>><label>Rugby</label><br>
    <input type="checkbox" name="games[]" value="5" <?php if(in_array(5,$my_stored_game)){echo "checked";}?>><label>Tennis</label><br>
    <input type="checkbox" name="games[]" value="6" <?php if(in_array(6,$my_stored_game)){echo "checked";}?>><label>Cricket</label><br>
    <input type="checkbox" name="games[]" value="7" <?php if(in_array(7,$my_stored_game)){echo "checked";}?>><label>Table Tennis</label><br>
    <input type="checkbox" name="games[]" value="8" <?php if(in_array(8,$my_stored_game)){echo "checked";}?>><label>Hockey</label><br>
    <input type="submit" name="submit" value="submit">
</form>

ceci est juste un exemple de base et une requête que j'ai ajoutée dans cet exemple, vous pouvez apprendre de cet exemple de base et je pense que cela est très utile pour vous ... si utile que de donner une réponse correcte pour cette solution

Db Table Stored Output

Form Output

12
Mahendra Pumbhadiya

utilise la fonction implode pour convertir le tableau retourné en chaîne puis l'insérer dans la base de données comme d'habitude

if(isset($_POST['submit'])){
   $result = implode(",",$_POST['games']);

}

j'espère que cela vous aidera ... Amitiés, Imran Qasim

1
imran qasim

Tout d'abord très directement au point, je préfère faire des noms comme celui-ci à partir de différentes cases à cocher 

BasketBall;Cricket;Tennis

Vous pouvez le faire en 

implode(";",$array);

et ensuite écrire cela dans la table MySQL ...

Pour obtenir ces valeurs, utilisez simplement

$array = explode(";",$urVariable);

Pour différentes valeurs, utilisez

numberOne = $array[1]; // returns Cricket

pour changer n'importe quelle valeur, utilisez simplement les valeurs et réécrivez ";" forme..

J'aime cela car il est simple à mettre en œuvre et à faire le travail parfaitement!

0
Gavin

S'il vous plaît essayez ceci

<?php
if(isset($_POST['submit']))
{
//in here you get games array
   $mygames = $_POST['games'];  
}

?>


<form method="post" action="">
Games You Like: <br/>
<input type="checkbox" name="games[]" value="1"><label>Football</label><br>
<input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br>
<input type="checkbox" name="games[]" value="3"><label>Pool</label><br>
<input type="checkbox" name="games[]" value="4"><label>Rugby</label><br>
<input type="checkbox" name="games[]" value="5"><label>Tennis</label><br>
<input type="checkbox" name="games[]" value="6"><label>Cricket</label><br>
<input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br>
<input type="checkbox" name="games[]" value="8"><label>Hockey</label><br>
<input type="submit" name="submit" value="submit">
</form>
0
sujeet gupta

J'ai mis le nom du jeu entre parenthèses et modifié leurs valeurs en true:

<form method="post" action="">
Games You Like: <br/>
<input type="checkbox" name="games[Football]" value="true"><label>Football</label><br>
<input type="checkbox" name="games[Basket]" value="true"><label>Basket Ball</label><br>
<input type="checkbox" name="games[Pool]" value="true"><label>Pool</label><br>
<input type="checkbox" name="games[Rugby]" value="true"><label>Rugby</label><br>
<input type="checkbox" name="games[Tennis]" value="true"><label>Tennis</label><br>
<input type="checkbox" name="games[Cricket]" value="true"><label>Cricket</label><br>
<input type="checkbox" name="games[Table]" value="true"><label>Table Tennis</label><br>
<input type="checkbox" name="games[Hockey]" value="true"><label>Hockey</label><br>
<input type="submit" name="submit" value="submit">
</form>

Après soumission, cela donnera un tableau comme celui-ci:

$_POST["games"] = Array ( [Tennis] => true [Cricket] => true [Table] => true ) 
// all other values false

Vous pouvez facilement stocker et manipuler ultérieurement ce tableau si vous le stockez sous forme de chaîne JSON dans votre base de données. Pour cela, vous avez besoin d'une seule colonne varchar ou text.

json_encode($_POST["games"])
// {"Tennis":"true","Cricket":"true","Table":"true"}
0
chrki