Comunidad de diseño web y desarrollo en internet online

Cargar checkbox que se hayan seleccionado anteriormente y guardado en

Citar            
MensajeEscrito el 24 Dic 2014 03:58 pm
Hola amigos .. soy nuevo en estos temas de programacion y tengo un problema al momento de cargar checkbox que se hayan seleccionado anteriormente y que estan almacenados en un DB Mysql.

Estoy imprimiendo toda la lista de los check, que se hace desde la tabla 'interes' ...

dentro de la tabla 'interes_cliente' se guardan los check que el cliente seleccionó ...


el problema que tengo es al momento de hacer la relacion para que salgan checkeados los que esten guardados en la DB


El codigo que estoy utilizando es el siguiente:


$sql = "SELECT * FROM interes";
$res = mysql_query($sql,$con);


while($datos = mysql_fetch_array($res)){
$check = $datos["ID_interes"];

$sql_check = mysql_query("SELECT * FROM interes_cliente, interes WHERE interes_cliente.interes = interes.ID_interes");

while($sqlsql = mysql_fetch_array($sql_check)){
$check2 = $sqlsql["interes"];
}

if($check == $check2){

echo '<input type="checkbox" value="$check["ID_interes"]" name="checkbox[]" checked="checked"/><br />';

} else {

echo '<input type="checkbox" value="$check["ID_interes"]" name="checkbox[]"/><br />';
}

}

Por srgi0

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Dic 2014 04:17 pm
En primera ya debes actualizar las funciones que consultan a la base de datos; Para ello está este lindo tutorial:

http://elporfirio.com/wp/2014/12/conectarse-a-la-base-de-datos-con-php-y-pdo/

Y en cuanto a tu otro problema (de regresar los checkeados) es que ya les estas asignando values a los input checkbox, y tratas de comparar la respuesta de un query, con la respuesta de otro query.. en fin es un problema recurrente, dejame hacer un mini tutorial de eso para futuras referencias.

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 24 Dic 2014 05:01 pm
Gracias elporfirio por tu respuesta.
Esa conexión a base de datos con PHP y PDO no la conocía, aunque esta muy buena.

y acerca del mini tutorial que mencionas, es muy buena la idea, porque he buscado videos, y en foros pero en ninguno he encontrado una buena respuesta.

Agradezco tu ayuda elporfirio

Por srgi0

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Dic 2014 06:32 pm
Ya que no puedo poner spoilers, te dejo una lista de los archivos y el contenido que deben tener.

Crear la tabla y la Base de Datos

Código MySQL :

CREATE DATABASE  IF NOT EXISTS `pruebas` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci */;
USE `pruebas`;
-- MySQL dump 10.13  Distrib 5.6.17, for Win64 (x86_64)
--
-- Host: localhost    Database: pruebas
-- ------------------------------------------------------
-- Server version   5.6.17


--
-- Table structure for table `electronic_groups`
--

DROP TABLE IF EXISTS `electronic_groups`;
CREATE TABLE `electronic_groups` (
  `id_electronic_groups` int(11) NOT NULL AUTO_INCREMENT,
  `nombre_grupo` varchar(45) COLLATE utf8_spanish_ci DEFAULT NULL,
  PRIMARY KEY (`id_electronic_groups`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

--
-- Dumping data for table `electronic_groups`
--

LOCK TABLES `electronic_groups` WRITE;
INSERT INTO `electronic_groups` VALUES (1,'Clazziquai'),(2,'M-flo'),(3,'Fantastic Plastic Machine'),(4,'House rulez'),(5,'Rip Slyme'),(6,'Shinichi Osawa');
UNLOCK TABLES;

--
-- Table structure for table `users`
--

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id_users` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(45) COLLATE utf8_spanish_ci DEFAULT NULL,
  `electronic_groups_preference` varchar(45) COLLATE utf8_spanish_ci DEFAULT NULL,
  PRIMARY KEY (`id_users`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

--
-- Dumping data for table `users`
--

LOCK TABLES `users` WRITE;
INSERT INTO `users` VALUES (1,'lalito','1,2,3'),(2,'gumaro','1,4,5');
UNLOCK TABLES;


preferencesForm.php


Se ocupa degenerar los primeros checkbox y enviar los datos para guardar.

Código PHP :

<?php
/**
 * Created by PhpStorm.
 * @author: Porfirio Chávez <[email protected]>
 * @link http://www.elporfirio.com
 * Date: 24/12/2014
 * Time: 10:50 AM
 */

require_once("utilFunctions.php");

$conexion = connectDB();
$opcionesDisponibles = queryAll($conexion);

if($opcionesDisponibles){
    $html = "";
    foreach($opcionesDisponibles as $elemento){
        $html .= '<label>
                    <input type="checkbox" name="preferencias[]" value="'.$elemento['id_electronic_groups'].'">
                    '.$elemento['nombre_grupo'].'
                  </label>
                  <br>';

    }
}

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head lang="en">
    <meta charset="UTF-8">
    <title>Guardado y recuperado de preferencias</title>
</head>
<body>

<form action="preferencesSave.php" method="post">
    <fieldset>
        <legend>Selecciona que te gustaría escuchar</legend>
        <?php echo $html; ?>
    </fieldset>
    <label for="username">Nombre de Usuario:</label>
    <input type='text' name="username" id="username">
    <input type="submit" value="Guardar Preferencias">
</form>
</body>
</html>


utilFunctions.php


Tiene todas las lineas para conectarse a la base de datos y consultar.

Código PHP :

<?php
/**
 * Created by PhpStorm.
 * @author: Porfirio Chávez <[email protected]>
 * @link http://www.elporfirio.com
 * Date: 24/12/2014
 * Time: 10:57 AM
 */

#Conectarse a la base de datos
function connectDB(){
    #Datos para conexión
    $domain = "localhost";
    $database = "pruebas";
    $user = "root";
    $password = "";

    try {
        $dbConnection = new PDO(
            'mysql:host=' . $domain . ';dbname=' . $database .';port=3306',
            $user,
            $password,
            array(
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
        );
        return $dbConnection;
    } catch (PDOException $ex){
        echo "<strong>Error de Conexión: </strong>" . $ex->getMessage() . "<br>";
        die();
    }
}


#Consultar datos
function queryAll($connection){
    try{
        $query = 'SELECT * FROM electronic_groups';
        $stmt = $connection->prepare($query);
        if($stmt->execute()){
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
        return false;
    } catch (PDOException $ex){
        echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
        die();
    }
}

function insertPreferences($connection, $user, $preferences){
    try{
        $query = 'INSERT INTO users (username, electronic_groups_preference)
                  VALUES (:username, :idsgroup)';
        $stmt = $connection->prepare($query);

        $stmt->bindParam(':username', $user);
        $stmt->bindParam(':idsgroup', $preferences);

        if($stmt->execute()){
            return $connection->lastInsertId();
        }
        return false;
    } catch (PDOException $ex){
        echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
        die();
    }
}

function obtainPreferences($connection, $user){
    try{
        $query = 'SELECT electronic_groups_preference
                  FROM users
                  WHERE username = :username
                  LIMIT 1';
        $stmt = $connection->prepare($query);

        $stmt->bindParam(':username', $user);

        if($stmt->execute()){
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
        return false;
    } catch (PDOException $ex){
        echo "<strong>Error de ejecución: </strong>" . $ex->getMessage() . "<br>";
        die();
    }
}


preferencesSave.php


Página que guarda los datos del formulario

Código PHP :

<?php
/**
 * Created by PhpStorm.
 * User: Porfirio
 * Date: 24/12/2014
 * Time: 11:12 AM
 */

require_once("utilFunctions.php");

if(isset($_POST['preferencias'])){
    $preferenciasUsuario = implode(",", $_POST['preferencias']);

    $conexion = connectDB();
    $iduser = insertPreferences($conexion,$_POST['username'], $preferenciasUsuario);

    if($iduser !== false){
        echo "preferencias guardadas";
    }
}


detailUser.php


Está página muestra los datos elegidos dependiendo el usuario

Para ver como funciona debes decirle mediante la variable $_GET["username"] el nombre del usuario como lo tienes en la Base de datos

por ejemplo

Código :

http://localhost/detailUser.php?username=lalito


Código PHP :

<?php
/**
 * Created by PhpStorm.
 * @author: Porfirio Chávez <[email protected]>
 * @link http://www.elporfirio.com
 * Date: 24/12/2014
 * Time: 11:30 AM
 */

require_once("utilFunctions.php");

$conexion = connectDB();

$opcionesDisponibles = queryAll($conexion);

$opcionesUsuario = obtainPreferences($conexion, $_GET['username']);

$opcionesElegidas = explode(",",$opcionesUsuario[0]['electronic_groups_preference']);

if($opcionesDisponibles){
    $html = "";
    foreach($opcionesDisponibles as $elemento){
        $selected = "";
        if(in_array($elemento['id_electronic_groups'], $opcionesElegidas)){
            $selected .= 'checked';
        }
        $html .= '<label>
                    <input type="checkbox" name="preferencias[]" value="'.$elemento['id_electronic_groups'].'" '. $selected .'>
                    '.$elemento['nombre_grupo'].'
                  </label>
                  <br>';
    }
}

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head lang="en">
    <meta charset="UTF-8">
    <title>Guardado y recuperado de preferencias</title>
</head>
<body>

<form action="#" method="post">
    <fieldset>
        <legend>El usuario eligio:</legend>
        <?php echo $html; ?>
    </fieldset>
    <label for="username">Nombre de Usuario:</label>
    <input type='text' name="username" id="username" value="<?php echo $_GET['username']; ?>" disabled>
</form>
</body>
</html>


Suerte en un post de mi blog, explicare como funciona el código ;) Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.