Foros del Web » Programando para Internet » PHP »

Problema con implode() e inserccion en bd

Estas en el tema de Problema con implode() e inserccion en bd en el foro de PHP en Foros del Web. Hola, tengo el siguietne codigo: Código PHP: <? include ( "seguridad.php" ); ?> <html> <body> <?php if ( $enviar ) { // process form $basedatos = "**" ; $link  = @ ...
  #1 (permalink)  
Antiguo 22/06/2007, 09:38
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Problema con implode() e inserccion en bd

Hola, tengo el siguietne codigo:

Código PHP:
<?
include ("seguridad.php");
?>
<html>
<body>
<?php
if ($enviar) {
// process form
$basedatos="**";
$link = @mysql_connect("**""***""***");
$sql "CREATE TABLE `$nombre` (`id` INT (10) DEFAULT '0' NOT NULL AUTO_INCREMENT, `id_articulo` INT (3) DEFAULT '0' NOT NULL, `cantidad` INT (3) DEFAULT '0' NOT NULL, `descuento` INT (3) DEFAULT '0' NOT NULL, `ventas` INT (4) DEFAULT '0' NOT NULL, INDEX(`id`)) ";
if (@
mysql_db_query($basedatos$sql$link)) {
echo 
"<h2 align='center'>La tabla se ha creado con éxito</h2>";
$lista=implode(',',$_POST['campos']); 
$lista2=implode(',',$_POST['campos2']); 
$sql2 "INSERT INTO $nombre (id_articulo='IN(".$lista.")', cantidad='IN(".$lista2.")', descuento='$descuento', ventas='0')";
$result mysql_query($sql2);
echo 
"<p>¡Gracias! Hemos recibido sus datos.\n";
echo 
"<a href='medicamentos.php'>Volver</a> \n";
} else {
echo 
"<h2 align='center'>No se ha podido crear la tabla $tabla</h2>";
}
}else{
?>
<p>Añadir botiquín a la base de datos.
<form method="post" action="botiquines.php">
Nombre del botiquin (sin espacios) :<input type="Text" name="nombre" size="50"><br>
Descuento %:<input type="Text" name="descuento" size="5"><br>
<?
echo "<table border = '1'> \n";
echo 
"<tr align=\"center\"> \n";
echo 
"<td><p><b>Id</b></td> \n";
echo 
"<td><p><b>Medicamento</b></td> \n";
echo 
"<td><p><b>Cantidad</b></td> \n";
echo 
"<td><p><b>Añadir a botiquin</b></td> \n";
include 
"conexion.php";
$result=mysql_query("SELECT * FROM medicamentos ORDER BY id");
while(
$fila=mysql_fetch_object($result)){
echo 
"<tr> \n";
echo 
"<td><p>";
echo 
$fila->id;
echo 
"<td><p>";
echo 
$fila->nombre;
echo 
"<td><p><input type='Text' name='campos2[]' size='2'></td> \n";
echo 
"<td><p><input type='checkbox' name='campos[]' value='$fila->id'>";
echo 
"<br>";
}
?>
</table>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
<?php
//end if
?>
</html>
<p><a href="index.php">Index</a>
</body>
Se trata de un formulario, indicamos nombre de la tabla y descuento y además podemos elegir productos que se listan con un checkbox y una cantidad de esos productos.
La tabla la crea con éxito pero a la hora de introducir los datos en la nueva talba creada no hace nada, sabeis alguna solución, como lo podia implementar.
Gracias anticipadas.
__________________
www.adimensional.info Adimensional
www.cientosderecetas.com Cientos de recetas
  #2 (permalink)  
Antiguo 22/06/2007, 09:54
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Problema con implode() e inserccion en bd

Yo te sugiero que agregues lo siguiente en tus consultas

Código PHP:
mysql_query("Tu sentencia") or die(mysql_error()); 
Con la funcion die() no permites que siga con el proceso y com mysql_error() sabes que error sucedió con tu query.

Saludillos.
  #3 (permalink)  
Antiguo 22/06/2007, 10:00
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con implode() e inserccion en bd

Hola de nuevo y gracias,
El error que me da es este:
You have an error in your SQL syntax near ''2' (id_articulo='IN(13,14,15,17)', cantidad='IN(22,2,2,2)', descuento='2', vent' at line 1

Lo que significa que me inclue todos los datos a la vez y logicamente no se puede hacer la insercion, alguien sabe como hacerla una a una o dentro de un bucle?
Estoy estancado con este script y ya no se por donde salir
Sau2.
__________________
www.adimensional.info Adimensional
www.cientosderecetas.com Cientos de recetas
  #4 (permalink)  
Antiguo 22/06/2007, 10:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con implode() e inserccion en bd

Esta mal tu sintaxis de tu SQL, id_articulo='IN(13,14,15,17)' esta mal, debe de ser asi: id_articulo IN (13,14,15,17)

Saludos.
  #5 (permalink)  
Antiguo 22/06/2007, 11:15
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Problema con implode() e inserccion en bd

Verificando la sintexis del insert encontre un ejemplo de tu problema

Código:
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
Entonces para insertar multiples valores en un único insert tendrias que hacer lo siguiente:


INSERT INTO $nombre(id_articulo,cantidad) values (1,2),(3,4);

Lo que tendrias que hacer es generar la cadena que se encuentra despues de values (1,2),(3,4)

Saludillos.
  #6 (permalink)  
Antiguo 25/06/2007, 00:38
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con implode() e inserccion en bd

Muchas gracias, esta tarde lo pruebo a ver que tal funciona, en principio parece que si es la opción correcta, ya os lo digo.
Sois unos monstruos.
__________________
www.adimensional.info Adimensional
www.cientosderecetas.com Cientos de recetas
  #7 (permalink)  
Antiguo 25/06/2007, 12:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con implode() e inserccion en bd

Código PHP:
<?
include ("seguridad.php");
?>
<html>
<body>
<LINK REL="stylesheet" MEDIA="screen" TYPE="text/css" HREF="../stilo1.css">
<?php
if ($enviar) {
// process form
$basedatos="qch582";
$link = @mysql_connect("""""");
$sql "CREATE TABLE `$nombre` (`id` INT (10) DEFAULT '0' NOT NULL AUTO_INCREMENT, `id_articulo` INT (3) DEFAULT '0' NOT NULL, `cantidad` INT (3) DEFAULT '0' NOT NULL, `descuento` INT (3) DEFAULT '0' NOT NULL, `ventas` INT (4) DEFAULT '0' NOT NULL, INDEX(`id`)) ";
if (@
mysql_db_query($basedatos$sql$link)) {
echo 
"<h2 align='center'>La tabla se ha creado con éxito</h2>";
$lista=implode(',',$_POST['campos']); 
$lista2=implode(',',$_POST['campos2']); 
$sql2 "INSERT INTO '$nombre' (id_articulo, cantidad, descuento, ventas) VALUES ('$lista'), ('$lista2'), ('$descuento'), ('0')";
$result mysql_query($sql2);
echo 
"<p>¡Gracias! Hemos recibido sus datos.\n";
echo 
"<a href='medicamentos.php'>Volver</a> \n";
} else {
echo 
"<h2 align='center'>No se ha podido crear la tabla $tabla</h2>";
}
}else{
?>
<p>Añadir botiquín a la base de datos.
<form method="post" action="botiquines.php">
Nombre del botiquin (sin espacios) :<input type="Text" name="nombre" size="50"><br>
Descuento %:<input type="Text" name="descuento" size="5"><br>
<?
echo "<table border = '1'> \n";
echo 
"<tr align=\"center\"> \n";
echo 
"<td><p><b>Id</b></td> \n";
echo 
"<td><p><b>Medicamento</b></td> \n";
echo 
"<td><p><b>Cantidad</b></td> \n";
echo 
"<td><p><b>Añadir a botiquin</b></td> \n";
include 
"conexion.php";
$result=mysql_query("SELECT * FROM medicamentos ORDER BY id");
while(
$fila=mysql_fetch_object($result)){
echo 
"<tr> \n";
echo 
"<td><p>";
echo 
$fila->id;
echo 
"<td><p>";
echo 
$fila->nombre;
echo 
"<td><p><input type='Text' name='campos2[]' size='2'></td> \n";
echo 
"<td><p><input type='checkbox' name='campos[]' value='$fila->id'>";
echo 
"<br>";
}
?>
</table>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
<?php
//end if
?>
</html>
<p><a href="index.php">Index</a>
</body>
Hola de nuevo, me sigue sin insertar enla base de datos, creo que puede ser por que ids hay mas que precios q solo hay uno, esto como lo podria cambiar, me reiferon que si pinchan 7 articulos precios o descuentos solo hay 1 y al no repetirse no lo introduce.
Agradeceria cualquier ayuda, toy un poco sin salida con este tema ya.
Salu2.
__________________
www.adimensional.info Adimensional
www.cientosderecetas.com Cientos de recetas
  #8 (permalink)  
Antiguo 29/06/2007, 04:57
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Problema con implode() e inserccion en bd

Aqui vuelvo con mi script
Tras algunas modificaciones lo tengo asi:

Código PHP:
<?
include ("seguridad.php");
?>
<html>
<body>
<LINK REL="stylesheet" MEDIA="screen" TYPE="text/css" HREF="../stilo1.css">
<?php
if ($enviar) {
$lista=implode(',',$_POST['campos']); 
$lista2=implode(',',$_POST['campos2']); 
$lista3=implode(',',$_POST['campos3']); 

echo 
"Lista 2: $lista2 <br>Lista: $lista<br> Lista3: $lista3";
include (
'conexion.php');
$sql2 "INSERT INTO botiquin_medicamento (botiquin, medicamento, cantidad) values ($lista3),($lista2),($lista)";
$result mysql_query($sql2);
echo 
"<p>¡Gracias! Hemos recibido sus datos.\n";
echo 
"<a href='medicamentos.php'>Volver</a> \n";
} else {
echo 
"<h2 align='center'>No se ha podido crear la tabla $tabla</h2>";
}
?>
<p>Añadir botiquín a la base de datos.
<form method="post" action="botiquines.php">
Nombre del botiquin (sin espacios) :<input type="Text" name="nombre" size="50"><br>
Descuento %:<input type="Text" name="descuento" size="5"><br>
<?
echo "<table border = '1'> \n";
echo 
"<tr align=\"center\"> \n";
echo 
"<td><p><b>Id</b></td> \n";
echo 
"<td><p><b>Medicamento</b></td> \n";
echo 
"<td><p><b>Cantidad</b></td> \n";
echo 
"<td><p><b>Añadir a botiquin</b></td> \n";
include 
"conexion.php";
$result=mysql_query("SELECT * FROM medicamentos ORDER BY id");
while(
$fila=mysql_fetch_object($result)){
echo 
"<tr> \n";
echo 
"<td><p>";
echo 
$fila->id;
echo 
"<td><p>";
echo 
$fila->nombre;
echo 
"<td><p><input type='Text' name='campos2[]' size='2'></td> \n";
echo 
"<td><p><input type='checkbox' name='campos[]' value='$fila->id'>";
echo 
"<input type=\"hidden\" name=\"campos3[]\" value=\"$botiquin\">";
echo 
"<br>";
}
?>
</table>
<input type="Submit" name="enviar" value="Aceptar información">
</form>
</html>
<p><a href="index.php">Index</a>
</body>
Todo perfecto hasta la inserccion, llegan las variables, son el mismo número de arrays para cada variable, pero sigue sin hacer la inserccion, directamente en mysql me dice :
INSERT INTO botiquin_medicamento (botiquin, medicamento, cantidad) values (12,13),(11,14),(10,9)
"Column count doesn't match value count at row 1"
A ver si alguien me sabe decir como solucionarlo, gracias.
__________________
www.adimensional.info Adimensional
www.cientosderecetas.com Cientos de recetas
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:35.