Foros del Web » Programando para Internet » PHP »

Problema insertar datos mysql por formulario

Estas en el tema de Problema insertar datos mysql por formulario en el foro de PHP en Foros del Web. Buenas tengo un formulario mediante el cual meto en mi base de datos un registro con 2 campos el campo txt_tag y tpo_tag. El formulario ...
  #1 (permalink)  
Antiguo 11/06/2008, 03:51
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Problema insertar datos mysql por formulario

Buenas tengo un formulario mediante el cual meto en mi base de datos un registro con 2 campos el campo txt_tag y tpo_tag. El formulario permite introducir más de 1 registro a la vez gracias a un explode, el problema es que algo funciona mal en el formulario ya que si yo introduzco 2 nuevos registros por cada campo en mi tabla se crean 4 no 2. Ejemplo:

Txt_tag --> Casa, Coche
Tpo_tag --> X,Y

Segun eso me deberia crear 2 registros uno llamado casa q el tipo de tag es X y otro llamado coche que el tipo es Y pero no en mi tabla me crea el registro Casa con el campo tipo de tag Null y el registro COche = y luego me crea el registro txt_tag Null con tpo tag coche y lo mismo con casa.

Os dejo el codigo:
Código PHP:
if ($tags = isset($_POST["txt_tag"]) ? $_POST["txt_tag"] : false); {               
   
$tags explode(","$tags);
 
$insertSQL2 "insert into tags (txt_tag) values \n";
$contador 0;
foreach(
$tags as $item){
    if(
$contador)  $insertSQL2 .= ", ";
    
$contador++;
    
$insertSQL2 .= "\n('$item')";
}
  
mysql_select_db($database_bd_contactos$bd_contactos);
  
$Result1 mysql_query($insertSQL2$bd_contactos) or die(mysql_error());

$last_id mysql_insert_id();
echo 
$last_id;
if (
$tags2 = isset($_POST["tpo_tag"]) ? $_POST["tpo_tag"] : false); {               
   
$tags2 explode(","$tags2);

 
$insertSQL3 "insert into tags (tpo_tag,cod_itm) values \n";
 
$contador 0;
foreach(
$tags2 as $item1){
    if(
$contador)  $insertSQL3 .= ", ";
    
$contador++;
    
$insertSQL3 .= "\n('$item1','$last_id')";
}
  
mysql_select_db($database_bd_contactos$bd_contactos);
  
$Result1 mysql_query($insertSQL3$bd_contactos) or die(mysql_error()); 
  #2 (permalink)  
Antiguo 11/06/2008, 04:34
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Problema insertar datos mysql por formulario

Obtener datos
Código PHP:
$txt_tags=$_POST['txt_tags'];
$txt_tags=explode(",";$txt_tags)

$tpo_tags=$_POST['tpo_tags'];
$tpo_tags=explode(",",$tpo_tags); 
Crear consultas sql
Código PHP:
$query1="insert into tags ('txt_tags','tpo_tags') VALUES ('$txt_tags[0]','$tpo_tags[0]') 
Con eso creo que consigues lo que necesitas. Claro esta que como no sabes cuantos valores metera el usuario, debes contar el numero de valores que mete y hacer el numero de consultas correspondientes.
  #3 (permalink)  
Antiguo 11/06/2008, 04:44
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Problema insertar datos mysql por formulario

Vaya, iba a contestar diciendo lo mismo que nx00 pero veo que se me ha adelantado :D

Bueno, como él no lo explica, te explico yo el motivo por lo que tu idea no funciona: lo que le estás pidiendo a la BD es que cree nuevas filas por cada uno del texto de tag, y luego que te cree debajo nuevas filas con el tipo de tag.

La solución lo que ha dicho nx00, o en tu consulta de insertar tipo de tag hacer un where txt_tag='$txt_tags[$c]' dónde $c sería el contador para el tipo de tag que estubieses introduciendo en ese momento, pero mejor lo de nx00, aunque si pueden ser muchos, juntaría conjuntos pequeños y los inseriría de golpe (como ya hacías tú en tu código, aunque sin separar txt_tags y tipo_tags claro está) para ser eficientes.
  #4 (permalink)  
Antiguo 11/06/2008, 05:42
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema insertar datos mysql por formulario

Gracias por contestar, me da el siguiente error

Algo está equivocado en su sintax cerca ''txt_tag','tpo_tag') VALUES ('','')' en la linea 1
  #5 (permalink)  
Antiguo 11/06/2008, 05:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema insertar datos mysql por formulario

los campos de laBD en la sentencia SQL no llevan comillas, creo

Código PHP:
query1="insert into tags (txt_tags, tpo_tags) VALUES ('$txt_tags[0]','$tpo_tags[0]') 
  #6 (permalink)  
Antiguo 13/06/2008, 02:48
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema insertar datos mysql por formulario

Vale, solucionado pero sigue sin funcionar

acabo de probar y me ha creado lo siguiente:

Me crea 4 registros en el primer campo me mete Casa y Coche y 2 vacios y en el segundo 2 vacios y T y O
registro 497 Casa NULL
registro 498 Coche NULL
registro 499 NULL T
registro 500 NULL O

Cuando lo que deberia crearme es 2 registros con 2 campos, en el primer campo meterme casa y coche y en el segundo campo meterme T y O

registro 497 Casa T
registro 498 Coche O
  #7 (permalink)  
Antiguo 17/06/2008, 04:33
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema insertar datos mysql por formulario

Hice la siguiente modificacion y ahora me ingresa como yo quiero pero me lo hace de una forma rara.

Código PHP:
$id mysql_insert_id();
echo 
$id;
if (
$tags = isset($_POST["txt_tag"]) ? $_POST["txt_tag"] : false); 
{               
 
$tags explode(","trim($tags','));
 
 
$insertSQL2 "insert into tags (txt_tag,tpo_tag,cod_itm) values \n";

 
$contador1 0;
 
$datos=$_POST["tpo_tag"];
 
$datos=explode(","trim($datos','));
 foreach (
$datos as $datos){
 if(
$contador1)  $insertSQL2 .= ", ";
 
$contador1++;
$contador 0;
foreach(
$tags as $item){
    if(
$contador)  $insertSQL2 .= ", ";
    
$contador++;
    
$insertSQL2 .= "\n('$item','$datos','$id')";
}
}
  
mysql_select_db($database_bd_contactos$bd_contactos);
  
$Result1 mysql_query($insertSQL2$bd_contactos) or die(mysql_error());

Si yo ingreos 2 palabras en txt_tag y 1 en tpo_tag me lo ingresa bien, me crea 2 registros.
Pero si yo ingreso 2 palabras en txt_tag y 2 en tpo_tag me crea 4 registros

Ejemplo
Txt_tag = Coche, casa
Tpo_tag = A,B

Registro 1 Coche A
Registro 2 Casa A
Registro 3 Coche B
Registro 4 Coche B

Imagino que tendrá que ver algo con la variable contador++ no?
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 10:25.