Comunidad de diseño web y desarrollo en internet online

Problema insertar datos mysql por formulario

Citar            
MensajeEscrito el 11 Jun 2008 09:46 am
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 :

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());

Por Hamwe

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Jun 2008 12:44 pm
Recuerda que si $_POST["txt_tag"] te llega así:

Código :

2,3,


Eso crearía una array de tres posiciones.

Código :

$Algo[0] = 2;
$Algo[1] = 3;
$Algo[2] = null;


Así que revisa que no llegue así, o bien al usar el elemento del array revisa que no sea nulo, algo así:

Código :

foreach($tags as $item){
if( $item != null )
{
    if($contador)  $insertSQL2 .= ", ";

    $contador++;

    $insertSQL2 .= "\n('$item')";
}
}

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 12 Jun 2008 10:07 pm
Para que no tengas el problema del elemento "null", usa esto:

Código :

$tags = explode(",", trim($tags, ','));


Pero aun así seria bueno de que verificaras que los valores son los que esperas, pues estas obteniendo datos por $_POST que son manipulables por el usuario.



saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 13 Jun 2008 08:26 am
Buenas añadi lo que me dices, acabo de probar y me ha creado lo siguiente:

registro 497 Casa NULL
registro 498 Coche NULL
registro 499 NULL T
registro 500 NULL O

Cuando lo que deberia crearme es

registro 497 Casa T
registro 498 Coche O

Por Hamwe

7 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.