Foros del Web » Programando para Internet » PHP »

Plantear BBDD y envío de checkbox múltiples y con diferente name.

Estas en el tema de Plantear BBDD y envío de checkbox múltiples y con diferente name. en el foro de PHP en Foros del Web. Hola a todos, Estoy realizando una web en la que pretendo realizar una serie de relaciones entre tablas. Os explico un poco como está el ...
  #1 (permalink)  
Antiguo 19/08/2006, 07:51
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 13 años, 9 meses
Puntos: 0
Plantear BBDD y envío de checkbox múltiples y con diferente name.

Hola a todos,

Estoy realizando una web en la que pretendo realizar una serie de relaciones entre tablas. Os explico un poco como está el tema:

Tengo una serie de talleres, los cuales corresponden a una serie de marcas y a su vez realizan una serie de servicios. Por ejemplo: Taller "X" de la marca "Y" y realiza trabajos "Z" en un producto de tipo "P".

Me he planteado el sistema del siguiente modo:

Tabla taller: id_taller, nombre_taller, dirección....
Tabla marca: id_marca, marca
Tabla servicio: id_servicio, Servicio
Tabla producto: id_producto, Producto

Todo esto estaría relacionado en una tabla la cual contendría los campos id de cada una de las tablas anteriores. Por supuesto cada taller puede pertenecer a distintas marcas, distintos productos....

El formulario para introducción de datos incluiría:

- Por una parte los campos input text para los datos de los talleres
- Por otra parte diferentes checkbox con distintos name (nomprod[], nommarca[], nomserv[], nomprod[]) para cada una de las tablas asociadas, pues cada uno de los servicios, productos, marcas...

Las dudas que se plantean:

- Os parece bien este planteamiento de base de datos o haríais otra cosa distinta?

- ¿Cómo enviar los distintos checkbox? He estado revisando este post http://www.forosdelweb.com/f18/ayuda-con-arreglo-290090/ sobre enviar varios checkbox, pero no logro enfocarlo para enviar varios checkbox de distinto name a la vez.

Gracias y saludos,
Kailea
  #2 (permalink)  
Antiguo 19/08/2006, 11:46
 
Fecha de Ingreso: agosto-2006
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 4 meses
Puntos: 0
El planteamiento de la BDD en un principio parece correcto, pero si me permites una sugerencia, antes de liarte a hacer tablas, deberías plantear un diagrama Entidad-Relación (no sé si lo has hecho ya, por otra parte), ver qué atributos debe tener cada entidad, claves primarias, atributos derivador, multivalorados, cada relación, comprobar la inexistencia de ciclos, ver si las relaciones son uno a uno, uno a muchos, o muchos a muchos, etc... Puede que para un planteamiento tan sencillo como el que has propuesto, en apariencia no sea necesario, pero siempre es útil en el caso de que la BDD deba expandirse con nuevos elementos y deba seguir manteniendo la consistencia.
  #3 (permalink)  
Antiguo 19/08/2006, 13:18
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 13 años, 9 meses
Puntos: 0
Sí, esos aspectos lo he considerado y por eso concluí en ese planteamiento. Realmente, no estaba segura si este planteamiento era el óptimo para trabajar.

El problema que tengo es cómo realizar las inserciones con PHP con varios checkbox múltiples... :?
  #4 (permalink)  
Antiguo 21/08/2006, 03:30
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 13 años, 9 meses
Puntos: 0
¿Alguien que me pueda echar una manita con los checkbox múltiples que planteo arriba?

Gracias!!
  #5 (permalink)  
Antiguo 21/08/2006, 04:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 12 años, 6 meses
Puntos: 1
La cuestion la puedes solventar asi, si tiens varios checkbox y quiers recogerlos todos,

foreach($HTTP_POST_VARS as $key=>$value)
{
print "$key=>$value </br>";
}
o

foreach($HTTP_GET_VARS as $key=>$value)
{
print "$key=>$value </br>";
}

asi ves que parametros estas pasando
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
  #6 (permalink)  
Antiguo 22/08/2006, 13:25
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 13 años, 9 meses
Puntos: 0
El caso es que son varios checkbox de diferente name.

El formulario es el siguiente:

Código PHP:
<h2>Talleres post-venta</h2>
<br />
<form action="transact-article.php" method="POST" >
<p>Taller:</p>
<p><input type="text" class="nombre" name="nombre" size="80" maxlength="500" value="<?php echo htmlspecialchars($nombre); ?>" /></p>
<p>Contacto:</p>
<p><input type="text" class="contacto" name="contacto" size="80" maxlength="500" value="<?php echo htmlspecialchars($contacto); ?>" /></p>
<p>Dirección:</p>
<p><input type="text" class="direccion" name="direccion" size="80" maxlength="500" value="<?php echo htmlspecialchars($direccion); ?>" /></p>
<p>Código Postal:</p>
<p><input type="text" class="cp" name="cp" size="5" maxlength="500" value="<?php echo htmlspecialchars($cp); ?>" /></p>
<p>Población:</p>
<p><input type="text" class="poblacion" name="poblacion" size="80" maxlength="500" value="<?php echo htmlspecialchars($poblacion); ?>" /></p>
<p>Provincia:</p>
<select name="nomprov"> 
<?php
   $sql_padre
="SELECT * FROM motor_provincias ORDER BY provincia "
   
$padre mysql_query($sql_padre,$conn) or die(mysql_error()); 
       while (
$row[email protected]mysql_fetch_array($padre)){ 
         echo 
"<option value=\"".$row['id']."\">".$row['provincia']."</option>\n"
    } 
?>

</select>
<p>Teléfono:</p>
<p><input type="text" class="telefono" name="telefono" size="9" maxlength="500" value="<?php echo htmlspecialchars($telefono); ?>" /></p>
<p>Fax:</p>
<p><input type="text" class="fax" name="fax" size="9" maxlength="500" value="<?php echo htmlspecialchars($fax); ?>" /></p>
<p>e-mail:</p>
<p><input type="text" class="email" name="email" size="80" maxlength="500" value="<?php echo htmlspecialchars($email); ?>" /></p>
<br /><p style="font-weight:bold">Marca:</p>
<?
    $sql
='select * from motor_marca ORDER BY marca';
    
/*Asumiendo que se usa MySQL (se puede cambiar facilmente a otra db)*/
    
$rs=mysql_query($sql);
           
/*Recorrer todos las entradas */
           
while($row=mysql_fetch_array($rs)){
        
/* Imprimir campo a mostrar*/
            
echo '<p><input type="checkbox" name="nommarca[]" value="'.$row['id'].'">'.$row['marca'].'</p>';
            }
?>

<br /><p style="font-weight:bold">Tipo de servicio:</p>
<?
    $sql
='select * from motor_servicio ORDER BY servicio';
    
/*Asumiendo que se usa MySQL (se puede cambiar facilmente a otra db)*/
    
$rs=mysql_query($sql);
           
/*Recorrer todos las entradas */
           
while($row=mysql_fetch_array($rs)){
        
/* Imprimir campo a mostrar*/
            
echo '<p><input type="checkbox" name="nomservicio[]" value="'.$row['id_servicio'].'">'.$row['servicio'].'</p>';
            }
?>

<p style="font-weight:bold">Tipo de producto:</p>
<br />
<?
    $sql
='select * from motor_productos ORDER BY producto';
     
$rs=mysql_query($sql);
   
           while(
$row=mysql_fetch_array($rs)){
                   echo 
'<p><input type="checkbox" name="nomprod[]" value="'.$row['id_producto'].'">'.$row['producto'].'</p>';
            }
?>

<br />
<br/>
<?php

echo '<input type="hidden" name="taller" value="' $taller "\" />\n";
    if (
$_SESSION['access_lvl'] < 2) {
        echo 
'<input type="hidden" name="autorid" value="' $row['autor_id'] . "\" />\n";
    }
    if (isset(
$_GET['article'])) {
        echo 
'<input type="submit" class="submit" name="action" ' "value=\"Guardar los cambios\" />\n";
    } else {
        echo 
'<input type="submit" class="submit" name="action" ' "value=\"Enviar\" />\n";
    }
?>

</form>
¿Debería recogerlos así?
Código PHP:

//Primero recojo los datos e inserto los datos del taller en la tabla de talleres
if (isset($_POST['nombre']) and isset($_POST['direccion'])    and isset($_POST['autorid']) and isset($_POST['nomprov']) and ($_POST['telefono'])){
    
$sql "INSERT INTO motor_talleres (id_taller, nombre, contacto, direccion, cp, poblacion,provincia_id,telefono,fax,email,$marca,servicio_id,subcategoria_id)  VALUES ('','".$_POST['nombre']."','".$_POST['contacto']."','".$_POST['direccion']."','".$_POST['cp']."','".$_POST['poblacion']."','".$_POST['provincia_id']."','".$_POST['telefono']."','".$_POST['fax']."','".$_POST['email']."')";
        
mysql_query($sql$conn) or die('No se puede enviar el artículo; ' mysql_error());

// ahora recojo los checkbox

foreach($_POST['nommarca'] as $indice=>$valor) { 
$marca[]= $indice
$values[]= "'$valor'"


$marcaimplode(", "$marca); 
$valuesimplode(", "$values); 

foreach(
$_POST['nomservicio'] as $indiceserv => $valorserv){
$servicio[]=$indiceserv;
$valueserv[]="'$valorserv'";
}
$servicio=implode("," $servicio);
$valueserv implode("," $valueserv);

foreach(
$_POST['nomprod'] as $indiceprod => $valorprod){
$producto[]=$indiceprod;
$valueprod[]="'$valorprod";
}
$producto=implode("," $producto);
$valueprodimplode("," $valueprod);

$sql="INSERT INTO motor_link (id, taller_id,marca_id,servicio_id,producto_id) VALUES ('','".$_POST['id_taller']."','$marca,'$servicio','$producto')";

$res=mysql_query($sql,$conn) or die('No se puede enviar el taller';.mysql_error());

            } else {
                echo 
'Debe elegir una categoría <br />';
                }
                
redirect('index.php'); 
Este código no me funciona, y no sé si está bien planteado. No sé qué le sucede a mi PHP que no me muestra ningún error (a ver si también alguien me puede ayudar a verlos) así que no sé por dónde puede fallar. ¿Alguna idea?

Gracias!!!

Kailea
  #7 (permalink)  
Antiguo 23/08/2006, 11:12
 
Fecha de Ingreso: marzo-2004
Ubicación: Sureste
Mensajes: 186
Antigüedad: 13 años, 9 meses
Puntos: 0
Ya solucioné lo de no mostrar los errores, pero no logro recoger los checkbox diferentes a la vez. Ahg!! Alguna idea???

En el php.ini había que dejar esta línea así:

error_reporting = E_PARSE;

Saludos y gracias!
Kailea
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 10:49.