Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar arrays

Estas en el tema de Insertar arrays en el foro de PHP en Foros del Web. Hola tengo el siguiente Form el cual recoje datos de un horario, funciona bien pero estoy tratando de insertar varios registros a la vez y ...
  #1 (permalink)  
Antiguo 09/04/2013, 12:05
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Exclamación Insertar arrays

Hola tengo el siguiente Form el cual recoje datos de un horario, funciona bien pero estoy tratando de insertar varios registros a la vez y no he conseguido hacerlo
pasa un registro bien , pero si por ejemplo selecciono dos días solo pasa bien toda la información en el primero, y en el segundo solo inserta el dia bien y los demás datos ya no los pasa como nulos
lo que no pasa son los valores de los selects estos son selects dependientes tienen los corchetes q indican q son array pero nada.....
Código HTML:
<form action="<?php echo $editFormAction; ?>" method="post" id="form1" name="form1" enctype="multipart/form-data">

  <table>

     <tr valign="baseline">
 <td width="144" height="31" align="right" valign="middle" > <div align="left"><font size="2">D&iacute;a:</font></div></td>
        <td width="196" height="31" valign="middle">
          <input type="checkbox" name="dia[]"  value="1"/>L
          <input type="checkbox" name="dia[]"  value="2"/>M
          <input type="checkbox" name="dia[]"  value="3"/>Mi
          <input type="checkbox" name="dia[]"  value="4" />J
          <input type="checkbox" name="dia[]"  value="5"/>V
          <input type="checkbox" name="dia[]"  value="6" />S
          <input type="checkbox" name="dia[]"  value="7"/>D
          </td>
     </tr>
  <tr valign="baseline">
 <td ><font size="2">Area:</td>
        <td height="24" valign="middle"><select  name="combo1[]" id="combo1" style="width:197px" >
          <option value="0">Seleccionar Area</option>
          <?php
$db = new MySQL();  
$db->open();
$consulta = $db->consulta("SELECT * areas FROM  Order by idarea");
if ($row = $db->fetch_array($consulta)) {
	do {
		echo 
		'<option value="'.$row[idarea].'">'.$row[area].'</option>';
	}while($row = $db->fetch_array($consulta));
}
?>
        </select> </td>
    </tr>
   
     <tr valign="baseline">
 <td  > <div align="left">Grupo:</td>
        <td ><select  name="combo2[]" id="combo2" style="width:197px">
        </select></td>
         
    <tr valign="baseline">
 <td  >Asignatura:</td>
       <td valign="middle">
        <select name="combo3[]" id="combo3" style="width:197px" >
</select> 
  <?php  echo  $var = $_POST['combo3'];?>
</td>
    </tr>
       <tr valign="baseline">
 <td > Profesor:</td>
       <td height="34" valign="middle">
        <select name="combo4[]" id="combo4" style="width:197px" >
</select>        
    </tr>
  
    <tr valign="baseline">
      <td >Hora Inicio:</td>
      <td valign="middle"><input  name="hinicio[]" id="hinicio" value="" size="26"/></td>
    </tr>
     <tr valign="baseline">
      <td >Hora Fin:</td>
      <td valign="middle"><input  name="hfin[]" id="hfin" value="" size="26"/></td>
    </tr>
    
      <tr valign="baseline">
      <td >Aula:</td>
      <td valign="middle"><input type="text" name="aula[]" id="aula" value="" size="26"/></td>
    </tr>
    <tr valign="baseline">
      <td ><input type="button" value="Cancelar" onClick="history.back()" />
        <input type="submit" value="Enviar" /></td>
      <td valign="middle">&nbsp;</td>
    </tr>
    </table>
    <input type="hidden" name="MM_insert" value="form1" />
</form> 
Codigo insertar
Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    
$dias= array();
     foreach(
$_POST["dia"] as $key => $value){
  
$insertSQL sprintf("INSERT INTO horario (dia, idarea, idgrupo,idasignatura , docente,hinicio, hfin,aula) VALUES (%s,%s,%s,%s, %s, %s, %s, %s)",    
                        
GetSQLValueString($_POST['dia'][$key], "text"),
                       
GetSQLValueString($_POST['combo1'][$key], "text"),
                       
GetSQLValueString($_POST['combo2'][$key], "text"),
                       
GetSQLValueString($_POST['combo3'][$key], "text"),
                       
GetSQLValueString($_POST['combo4'][$key], "text"),
                       
GetSQLValueString($_POST['hinicio'][$key], "text"),
                       
GetSQLValueString($_POST['hfin'][$key], "text"),
                       
GetSQLValueString($_POST['aula'][$key], "text"));                    
  
mysql_select_db($database_connection$connection);
  
$Result1 mysql_query($insertSQL$connection) or die(mysql_error()); 
  #2 (permalink)  
Antiguo 09/04/2013, 12:39
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Respuesta: Insertar arrays

Holas, Briss.

Tu código me confunde un poco, ya que la idea de colocar corchetes a un grupo de objetos HTML es para cuando son varios con el mismo nombre, lo cual ocurre con el primer set de checkboxes, pero con los combos y otros campos no veo la necesidad. Si usas los corchetes en un combobox, es porque quieres seleccionar varios elementos del mismo, y para eso el combo debe tener el atributo multiple declarado.

Por favor, explícanos mejor lo que necesitas.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 09/04/2013, 13:06
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Insertar arrays

Gracias por tu respuesta pues si necesito que si se seleccionan dos dias se agreguen a mi bd dos registros por ejemplo....
pero no lo he logrado ya que mi segundo registro solo pasa bien el dia... pero los demás datos ya no...
quite los corchetes en los demas elementon y pero se insertan cosas raras en la bd osea solo numeros
  #4 (permalink)  
Antiguo 09/04/2013, 13:31
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Respuesta: Insertar arrays

No olvides que al quitar el corchete de los campos, debes recibir los valores de $_POST como variables simples, no arrays, tal vez sea eso lo último que te marca fallos. Esta es una forma en que lo haría yo:

Código PHP:
foreach($_POST["dia"] as $value)
{
  
$insertSQL sprintf("INSERT INTO horario (dia, idarea, idgrupo,idasignatura , docente,hinicio, hfin,aula) VALUES (%s,%s,%s,%s, %s, %s, %s, %s)",    
                        
GetSQLValueString($value"text"),
                       
GetSQLValueString($_POST['combo1'], "text"),
                       
GetSQLValueString($_POST['combo2'], "text"),
                       
GetSQLValueString($_POST['combo3'], "text"),
                       
GetSQLValueString($_POST['combo4'], "text"),
                       
GetSQLValueString($_POST['hinicio'], "text"),
                       
GetSQLValueString($_POST['hfin'], "text"),
                       
GetSQLValueString($_POST['aula'], "text"));
 
// el resto del código...

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 09/04/2013, 16:15
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Insertar arrays

Gracias funciona perfecto ;)

Etiquetas: arrays, mysql, registro, select, sql
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 14:34.