Frage

hello i have been trying to use multiple checkboxes to input info to a db i used [] with checkbox name but "array" is saved to db. What code and where should i input for this to work correctly? thank you!

this is my form code:

<?php
require_once('connection.php');

if(isset($_GET['process']))

    {
    $query = "Insert INTO `lista_precios` (Marca) values('$_POST[Marca]')";
    //echo $query; exit;
    $result = mysql_query($query) or die(mysql_error());
    if(!$result)
    {
       $msg = "not Inserted";
       }
       else
       {
       $msg = "Inserted";
       header("location:form.php?m=".$msg);
    }
   }
?>

<method="post" action="form.php?process">
<p>MARCA: <br><br>
<input type="checkbox" name="Marca" value="ACER">ACER     
<input type="checkbox" name="Marca" value="AOC">AOC 
<input type="checkbox" name="Marca" value="APPLE">APPLE

<input type="submit" name="Submit" value="Submit" />


</form>

And this is my connection:

<?php


$link=mysql_connect("xxxx","xxxx","xxxx");
  $database='xxxxxxx';             
  if (!$link)
  die('Failed to connect to Server'.mysql_error());
  $db=mysql_select_db($database, $link);
  session_start();
  if(!$db)
  die('Failed to select Data Base '.mysql_error());


?>
War es hilfreich?

Lösung

First off you need to set your checkboxes names and turn them to name=Marca[]

<form method="post" action="form.php?process">
    <p>MARCA: <br><br>
    <input type="checkbox" name="Marca[]" value="ACER">ACER
    <input type="checkbox" name="Marca[]" value="AOC">AOC
    <input type="checkbox" name="Marca[]" value="APPLE">APPLE

    <input type="submit" name="Submit" value="Submit" />
</form>

Then on your form.php process the values:

Note: You have to understand, you can't just put $_POST['Marca'] and concatenate them into the string, you have to get each value and build the insert query.

if(isset($_GET['process'])) {
    $marca = isset($_POST['Marca']) ? $_POST['Marca'] : null;
    if(count($marca) < 3) {
        // your validation that no checkboxes were selected
        $msg = 'You need to select at least 3 values';
        header("Location: form.php?m=".$msg);
    }

    $values = implode(',', $marca);
    $statement = "INSERT INTO `lista_precios` (`Marca`) VALUES ('$values');";
    // should result into
    // INSERT INTO `lista_precios` (`Marca`) VALUES ('ACER,AOC,APPLE');
    // then continue on your query code
    $query = mysql_query($statement);
    $msg = ($query && mysql_affected_rows() > 0) ? 'Inserted' : 'Not Inserted';
    header("Location: form.php?m=".$msg);
}

Andere Tipps

you can try this...

<?php
require_once('connection.php');

if(isset($_GET['process']))
$marc = implode(", ", $_POST['Marca']); <== add this


    {
    $query = "Insert INTO `lista_precios` (Marca) values('" . $marc . "')"; <== change this
    //echo $query; exit;
    $result = mysql_query($query) or die(mysql_error());
    if(!$result)
    {
       $msg = "not Inserted";
       }
       else
       {
       $msg = "Inserted";
       header("location:form.php?m=".$msg);
    }
   }
?>

<method="post" action="form.php?process">
<p>MARCA: <br><br>
<input type="checkbox" name="Marca[]" value="ACER">ACER <==change this     
<input type="checkbox" name="Marca[]" value="AOC">AOC  <==change this
<input type="checkbox" name="Marca[]" value="APPLE">APPLE <==change this

<input type="submit" name="Submit" value="Submit" />


</form>

Use at least MySQLi instead of deprecated MySQL. Try this:

connection.php:

<?php

$con=mysqli_connect("YourHost","YourUsername","YourPassword","YourDatabase");

if(mysqli_connect_errno()){

echo "Error".mysqli_connect_error();
}

?>

Your main file:

<html>
<body>

<?php

include('connection.php');

if(isset($_POST['Submit'])){ /* IF FORM IS SUBMITTED */

        if(!empty($_POST['Marca'][0])){ /* IF THE SUBMITTED CHECKBOX IS SELECTED */

        $acer=mysqli_real_escape_string($con,$_POST['Marca'][0]); /* ESCAPE STRING */

        } /* END OF IF NOT EMPTY MARCA 0 */

        else { $acer=""; }

        if(!empty($_POST['Marca'][1])){ /* IF THE SUBMITTED CHECKBOX IS SELECTED */

        $aoc=mysqli_real_escape_string($con,$_POST['Marca'][1]); /* ESCAPE STRING */

        } /* END OF IF NOT EMPTY MARCA 1 */

        else { $aoc=""; }

        if(!empty($_POST['Marca'][2])){ /* IF THE SUBMITTED CHECKBOX IS SELECTED */

        $apple=mysqli_real_escape_string($con,$_POST['Marca'][2]); /* ESCAPE STRING */

        } /* END OF IF NOT EMPTY MARCA 2 */

        else { $apple=""; }

    $overalldata=$acer.", ".$aoc.", ".$apple;

    $query = "INSERT INTO lista_precios (Marca) VALUES ('$overalldata')"; 
    $result = mysqli_query($con,$query); /* INSERT QUERY */
    echo "Inserted data properly.<br>";

} /* END OF ISSET SUBMIT */

?>

<form method="POST" action=""> <?php /* SUBMIT PAGE ON ITSELF */ ?>
<p>MARCA: <br><br>

<?php
echo "<input type='checkbox' name='Marca[0]' value='ACER'>ACER";
echo "<input type='checkbox' name='Marca[1]' value='AOC'>AOC";
echo "<input type='checkbox' name='Marca[2]' value='APPLE'>APPLE";
?>

<input type="submit" name="Submit" value="Submit" />


</form>

</body>
</html>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top