Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

...A ver si alguien lo sabe (Entrada múltiple)

Estas en el tema de ...A ver si alguien lo sabe (Entrada múltiple) en el foro de Mysql en Foros del Web. Hola a todos/as: Esto es un poco lioso . A ver si me explico bien. En mi proyecto tengo un formulario de entrada de datos ...
  #1 (permalink)  
Antiguo 18/04/2011, 02:47
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
...A ver si alguien lo sabe (Entrada múltiple)

Hola a todos/as:
Esto es un poco lioso.
A ver si me explico bien. En mi proyecto tengo un formulario de entrada de datos que, en uno de sus campos, permite hacer una selección múltiple de la visibilidad que tendrá después el registro. Tengo resuelto el tema mediante tres tablas. Una de ellas (visibilidad) contiene los valores entre los que se puede escoger, otra de ellas (referencias) contiene el resto de los valores del registro y esta última está a su vez relacionada de uno a varios con una tercera (visible) que contiene los registros de los valores seleccionados por el usuario para esta referencia, de manera que un registro en Referencias pueda resultar visible para más de un tipo de usuario. O no.
La duda que tengo es como pasar esta selección múltiple a la tabla Visible en la base de datos.
Os pongo el código del campo, el resto del formulario no tiene mucho interés:
Código PHP:
.../...    <?php
    
// Llamo las variables de conexión a DB
            
            
$host "localhost"
            
$user "root"
            
$pass "manolo"
            
$db "bbdd"

            
                
$_SESSION['usuario'];
                
$usuario=$_SESSION['usuario'];
                
    
// Abro conexión y selecciono la base de datos

            
$connection mysql_connect($host$user$pass,$db) or die ("Unable to connect!"); 
            
mysql_select_db($db) or die ("Unable to select database!"); 
    

?>                    
            <!--Tabla Visibilidad de la Base de datos-->
            <fieldset>
            <legend>Visibilidad</legend>
            <p>Visible para: </p>
            <div id="BOXForm3"><label for="visibilidad"></label><select multiple name="visibilidad" size="4"><option value="<?php
            
//Creamos la sentencia SQL y la ejecutamos
                
$sSQL="SELECT Visibilidad FROM visibilidad";
                
$result=mysql_query($sSQL);

                 echo 
'<select name="Visibilidad">';

                
//Mostramos los registros en forma de menú desplegable
                
while ($row=mysql_fetch_array($result))
                {echo 
'<option>'.$row["Visibilidad"];}
                
mysql_free_result($result)
                
?>"></option>
                </select>
            <p>(Manten presionada la tecla CTRL para seleccionar más de una opción)</>
             </div>
            </fieldset>
.../...
Un poco de ayuda esclarecedora de mi empanada se agradecería mucho, y si alguien saba la solución sería la bomba
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #2 (permalink)  
Antiguo 18/04/2011, 05:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

porque no has puesto el valor de la option para poder insertarla en la base mas tarde?
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 18/04/2011, 06:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

SI he entendido bien, cada selector se corresponde con una columna distinta de la tabla leída. En ese caso, si las selecciones son opcionales y relacionadas, hay que crear una sentencia en forma dinámica, agregando partes del WHERE según lo seleccionado, de modo de contemplar todas las combinaciones usadas.
En otras palabras, hay que usar una combinación de programación y SQL.
Necesitaríamos detalles más precisos de la estructura y de los datos para darte una idea más cercana.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/04/2011, 15:51
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

Hola arros:
Cita:
porque no has puesto el valor de la option para poder insertarla en la base mas tarde?
¿Dónde? ¿Cómo?
Gracias por la precisión

Hola gnzsoloyo:

Todos los selectores son valores distintos del mismo campo de la tabla Visibilidad. La estructura es:
Tabla Visibilidad campo visibilidad (recoge los distintos valores de visibilidad)

idPrimaryVIS Visibilidad
3 Prospect
5 Todos
2 Consultores
7 Empresas
8 IT Manager

Tabla Referencias (recoge los valores de las referencias) tiene establecida una relación de uno a varios con la tabla visible.
La cosa funciona de la siguiente manera, los registros de la tabla visibilidad son las opciones posibles para cada referencia y pueden seleccionarse uno o varios valores simultáneamente desde el formulario. Estos valores deberían pasar por POST a la tabla visible que registra los valores de visibilidad elegidos para cada referencia, de manera que, por ejemplo para la referencia cuya PK sea 1 se podrá elegir por ejemplo visibilidad para “Consultores” e “IT Manager” y eso deberá recogerse por POST (que supongo que lo recogerá como una cadena separada por comas) separarse y registrarse en la tabla “Visible” como la entrada PK 1 (Consultores) de la referenciaPK1 y la entrada PK2 (IT Manager) de la referenciaPK1.
Espero haber aclarado algo de lo que deseo ¿…no ?
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #5 (permalink)  
Antiguo 18/04/2011, 16:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

en el formulario que tienes tienes que definer cada valor ej:
Código HTML:
Ver original
  1. echo '<select name="Visibilidad[]">';
  2.  
  3.                 //Mostramos los registros en forma de menú desplegable
  4.                 while ($row=mysql_fetch_array($result))
  5.                 {echo '<option value="'".$row["Visibilidad"]."'">'.$row["Visibilidad"];}
  6.                 mysql_free_result($result)
  7.                 ?>"></option>
  8.                 </select>
de esta manera tienes que recojer los port atraves de foreach(){}
ej:
Código PHP:
Ver original
  1. <?php
  2. foreach($_POST['Visibilidad'] as $v => $k){
  3. $visibelite = $k // este el valor seleccionado del cliente que hay que insertar
  4. }
  5. ?>
__________________
cada vez que aprendes algo te crees que no sabes nada
  #6 (permalink)  
Antiguo 18/04/2011, 23:24
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

Hola Arros:

Muchas gracias por tu indicación he corregido el html de entrada según indicas pero el foreach me da problemas. Adjunto el resultado de la prueba.

Cita:
Cliente: Prueba
Area: CRM
Funcion: Consultor
Descripcion: Puesta en marcha del proyecto de CRM para los vendedores autoventa de la compañía, utilizando herramientas de código abierto
Visible: Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\login\checkReferenciasCON.php on line 39
Logo: ../img/Logos/Prueba.gif
Otra duda que tengo es, una vez obtenidos los valores seleccionados de visibilidad como los trato para insertarlos individualmente en la tabla Visible ¿Como seria el query?

Muchas gracias
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #7 (permalink)  
Antiguo 19/04/2011, 22:50
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: ...A ver si alguien lo sabe (Entrada múltiple)

Hola:

Veo que el tema que yo pensaba que sería de MySQL se ha convertido en PHP.
¿Sabe alguien cómo moverlo al foro correcto?

Muchas gracias,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)

Etiquetas: entrada, múltiple
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:18.