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=@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'";
}
$marca= implode(", ", $marca);
$values= implode(", ", $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);
$valueprod= implode("," , $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