Foros del Web » Programando para Internet » PHP »

Problemas al insertar registros

Estas en el tema de Problemas al insertar registros en el foro de PHP en Foros del Web. Tengo el siguiente problema, mediante este codigo muestro todos los materiales que tengo a la venta: <TABLE WIDTH=100% BORDER="1"> &nbsp;Elige Materiales:<BR><BR> <?php $SQL3="SELECT * FROM ...
  #1 (permalink)  
Antiguo 21/04/2011, 09:55
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Problemas al insertar registros

Tengo el siguiente problema, mediante este codigo muestro todos los materiales que tengo a la venta:

<TABLE WIDTH=100% BORDER="1">
&nbsp;Elige Materiales:<BR><BR>
<?php
$SQL3="SELECT * FROM materiales order by COD_MATER";
$result3=mysql_db_query("tienda",$SQL3);
$u=0;
while ($row3=mysql_fetch_array($result3))
{
echo "<TR><td><INPUT TYPE=\"checkbox\" name=\"materiales[]\" value='".$row3['COD_MATER']."'>".$row3['NOMBRE']."</TD><TD>Fecha:&nbsp;<INPUT TYPE=\"text\" size=\"8\" NAME=\"fechas[]\"></TD><TD>A&ntilde;adir:&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"cantidades[]\"></TD><td>Precio&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"precios[]\" value='".$row3['PRECIO']."'></td></TR>";
$u++;
}
?>
</TABLE>

para poder elegir cualquiera de ellos, poner la fecha de venta y la cantidad vendida.

y los recojo para meterlos en una base de datos de la siguiente forma:

<?php
$cantidades=implode (",",$_POST ['cantidades']);
$precios=implode (",",$_POST ['precios']);
$fechas=$_POST ['fechas'];
$materiales=$_POST ['materiales'];
$separar_cant=explode (",",$cantidades);
$separar_prec=explode (",",$precios);
$numero_elementos = count ($materiales);
$suma=0;
for ($i=0;$i<$numero_elementos;$i++){
$subto=$separar_cant[$i]*$separar_prec[$i];
$suma=$suma+$subto;
}
@ $db=mysql_connect ("localhost", "root", "");
if (!$db)
{
echo '<p align="left"><font size=4><BR>&nbsp;&nbsp;Error: No se puede conectar a la base de datos.<BR>&nbsp;&nbsp;Por favor, int&eacute;ntelo m&aacute;s tarde.</font></p>';
exit;
}
mysql_select_db("tienda");
mysql_query ("SET NAMES 'utf8'");
for($u=0;$u<$numero_elementos;$u++){
$sql="";
$sql.="INSERT INTO materiales (MATERIALES, CANTIDADES, FECHAS, PRECIOS) VALUES ('$materiales[$u]', '$separar_cant[$u]', '$fechas[$u]', '$separar_prec[$u]');";
$ejecuta=mysql_query($sql);
}
Mi problema es el siguiente:

Si selecciono el primer material de la lista solo, le pongo una cantidad y una fecha, me lo hace bien, si selecciono los 2 primeros materiales de la lista, les pongo cantidad y fecha, tambien me lo hace bien, el problema surge cuando selecciono un material que no está el primero, o cuando selecciono materiales salteados, dejando otros sin seleccionar en medio, en ese caso solo me poner bien en la tabla el nombre del material.

Alguien me puede ayudar?

Gracias y un saludo
  #2 (permalink)  
Antiguo 21/04/2011, 10:46
Avatar de dcreate  
Fecha de Ingreso: octubre-2009
Ubicación: Veracruz
Mensajes: 536
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Problemas al insertar registros

creo q el problema es el ; q tienes al ultimo

Código PHP:
$sql="";
$sql.="INSERT INTO materiales (MATERIALES, CANTIDADES, FECHAS, PRECIOS) VALUES ('$materiales[$u]', '$separar_cant[$u]', '$fechas[$u]', '$separar_prec[$u]');";
$ejecuta=mysql_query($sql); 
por esto:

Código PHP:
$sql="";
$sql.="INSERT INTO materiales (MATERIALES, CANTIDADES, FECHAS, PRECIOS) VALUES ('$materiales[$u]', '$separar_cant[$u]', '$fechas[$u]', '$separar_prec[$u]')";
$ejecuta=mysql_query($sql) or die ("error ".mysql_error()); 
tambien depura tu consulta para ver el error
__________________
Somos lo que pensamos, como pensamos vivimos.
  #3 (permalink)  
Antiguo 21/04/2011, 11:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problemas al insertar registros

He probado lo que me dijiste, pero sigue igual, sigue metiendo en el campo MATERIALES de la tabla el material seleccionado, pero los otros campos los coge de la primera linea que da:

$SQL3="SELECT * FROM materiales order by COD_MATER";
$result3=mysql_db_query("tienda",$SQL3);
$u=0;
while ($row3=mysql_fetch_array($result3))
{
echo "<TR><td><INPUT TYPE=\"checkbox\" name=\"materiales[]\" value='".$row3['COD_MATER']."'>".$row3['NOMBRE']."</TD><TD>Fecha:&nbsp;<INPUT TYPE=\"text\" size=\"8\" NAME=\"fechas[]\"></TD><TD>A&ntilde;adir:&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"cantidades[]\"></TD><td>Precio&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"precios[]\" value='".$row3['PRECIO']."'></td></TR>";
$u++;
}

y eso es porque de alguna forma le estoy diciendo con el codigo anterior que coja la fecha, las cantidades y el precio de la primera linea, y no de la linea de la que cojo el material.

Se os ocurre algo para corregirlo?

Gracias y saludos
  #4 (permalink)  
Antiguo 21/04/2011, 11:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problemas al insertar registros

He probado lo siguiente:

$SQL3="SELECT * FROM materiales order by COD_MATER";
$result3=mysql_db_query("rebordinos",$SQL3);
$u=0;
while ($row3=mysql_fetch_array($result3))
{
echo "<TR><td><INPUT TYPE=\"checkbox\" name=\"materiales[$u]\" value='".$row3['COD_MATER']."'>".$row3['NOMBRE']."</TD><TD>Fecha:&nbsp;<INPUT TYPE=\"text\" size=\"8\" NAME=\"fechas[$u]\"></TD><TD>A&ntilde;adir:&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"cantidades[$u]\"></TD><td>Precio&nbsp;<INPUT TYPE=\"text\" size=\"3\" NAME=\"precios[$u]\" value='".$row3['PRECIO']."'></td></TR>";
$u++;
}
?>

Con esto creo las lineas como deberian ser, el material con su fecha, cantidad y precio, y lo he probado poniendo lo siguiente:

for($u=0;$u<5;$u++){
$sql="";
$sql.="INSERT INTO materiales (MATERIALES, CANTIDADES, FECHAS, PRECIOS) VALUES ('$materiales[$u]', '$separar_cant[$u]', '$fechas[$u]', '$separar_prec[$u]')";
$ejecuta=mysql_query($sql);
}

le digo que inserte 5 registros, y cuatro me los inserta vacios y uno bien, el de la posicion que ocupe el material seleccionado. ¿Cómo podría decirle que me inserte solo la línea del material seleccionado?

Gracias y saludos
  #5 (permalink)  
Antiguo 21/04/2011, 11:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problemas al insertar registros

he probado lo siguiente:

for($u=0;$u<5;$u++){
if($materiales[$u] != ""){
$sql="";
$sql.="INSERT INTO materiales (MATERIALES, CANTIDADES, FECHAS, PRECIOS) VALUES ('$materiales[$u]', '$separar_cant[$u]', '$fechas[$u]', '$separar_prec[$u]')";
$ejecuta=mysql_query($sql);
}
}

y me funciona, la unica pega que la segunda parte del for $u<5, es una condicion provisional, tengo que mirar que condición pongo para que haga el bucle que tiene que hacer.

Seguiré probando.

Gracias y un saludo.

Etiquetas: registros
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 12:58.