Foros del Web » Programando para Internet » PHP »

insertar registros en una tabla compliado

Estas en el tema de insertar registros en una tabla compliado en el foro de PHP en Foros del Web. hola tengo unos inputs Código PHP: < input name = "fvalorcaractesp_11"  id = "fvalorcaractesp_11"  type = "text"   value = "" />   < input name = "fvalorcaractcat_11"  ...
  #1 (permalink)  
Antiguo 09/06/2011, 11:02
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
insertar registros en una tabla compliado

hola tengo unos inputs
Código PHP:
<input name="fvalorcaractesp_11" id="fvalorcaractesp_11" type="text"  value=""/>
 
<
input name="fvalorcaractcat_11" id="fvalorcaractcat_11" type="text"  value=""/>
  

<
input name="fvalorcaractesp_24" id="fvalorcaractesp_24" type="text"  value=""/>
 
<
input name="fvalorcaractcat_24" id="fvalorcaractcat_24" type="text"  value=""/> 
que son inputs que se generan dinamicamente osea que puedo tener mas o menos

los tengo dentro de un fomulario que da de alta un registro en una tabla "productos"

pero estos imputs se tienen que añadir dentro de otra tabla "ralacio_caracteristiques"

pasando el id del registro que guardo en la tabla productos

bien lo tengo asi pero no se por que no me funciona

Código PHP:
// aquí miro el ultimo registro insertado en la table productos
    
$sql "SELECT MAX(id) FROM productos";  
        
$consult mysql_query($sql);  
        
$r mysql_fetch_array($consult);

        
// siendo $r[0] el valor del id del ultimo registro
        
        
        // ago un foreach  de todos los campos del formulario
        
foreach($_POST as $nombre_campo => $valor){ 
            
              
// aqui ahgo que solo me actue sobre los campos que tengan la
              //cadena fvalorcaract 
             
             
$cadena_a_buscar 'fvalorcaract';
             if (
ereg($cadena_a_buscar $nombre_campo)){
  
                
                
// aqui parto el nombre del campo por que me da un valor el id 
                
$part_camp =(explode('_'$nombre_campo2));
                
$nombre_campo1 $part_camp[0]; //nombre del campo
                
$id_campo $part_camp[1];  //id del valor de la caracteristica
                
                    
if ($nombre_campo1 == "fvalorcaractcat"){
                        
$valor_caract_cat $valor;
                        
//echo $id_campo."  ";
                        //echo $nombre_campo1." = ";
                        //echo $valor;
                        
}
                    
                    if (
$nombre_campo1 == "fvalorcaractesp"){
                        
$valor_caract_esp $valor;
                        
//echo $id_campo."  ";
                        //echo $nombre_campo1." = ";
                        //echo $valor_caract_esp;
                        
}
                
                
                
inserta_caracteristica($r[0],$id_campo$valor_caract_cat$valor_caract_esp$conexion);
                
                
            
            }
// cierro el if ereg($cadena_a_buscar , $nombre_campo
            
            
            
            
        
}// cierro el forearch 
y la funcion para insetar el registro

Código PHP:
function inserta_caracteristica($id_prod_rel,$id_car_rel$valor_caract_cat$valor_caract_esp$conexion){
       
       
    
mysql_query("insert into ralacio_caracteristiques (id_prod_rel,id_car_rel, valor_caract_cat, valor_caract_esp) values ( '$id_prod_rel','$id_car_rel', '$valor_caract_cat', '$valor_caract_esp')");    

y solo me inserta un solo registro donde me tendria que poner 2 registros al haber 2 inputs

no se por donde esta fallando la cosa
si alguien me puede dar alguna idea
  #2 (permalink)  
Antiguo 09/06/2011, 11:05
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: insertar registros en una tabla compliado

al escribir dos inputs con el mismo nombre , el ultimo valor asignado es el que se le queda a la variable recibida por el post

Código HTML:
Ver original
  1. <input name="fvalorcaractesp_11" id="fvalorcaractesp_11" type="text"  value=""/>
  2.  
  3. <input name="fvalorcaractcat_11" id="fvalorcaractcat_11" type="text"  value=""/>



podrias llamarlas de forma distinta o en forma de arreglo
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 09/06/2011, 11:21
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: insertar registros en una tabla compliado

pero tienen nombre diferente

uno se llama
fvalorcaractesp_11 i el otro fvalorcaractcat_11

fijate el cat i el esp
  #4 (permalink)  
Antiguo 09/06/2011, 11:23
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: insertar registros en una tabla compliado

Cita:
Iniciado por engonga Ver Mensaje
pero tienen nombre diferente

uno se llama
fvalorcaractesp_11 i el otro fvalorcaractcat_11

fijate el cat i el esp

jajaja deveras la defeque , deja analizo mas este pdo a ver que le hayo
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 09/06/2011, 11:27
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: insertar registros en una tabla compliado

cual registro es el que no inserta? el primero o el segundo?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 09/06/2011, 11:35
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: insertar registros en una tabla compliado

el segundo registro


pero por ejemplo si tengo mas imputs


tres imputs que se llamen
fvalorcaractesp_11
fvalorcaractesp_24
fvalorcaractesp_58

y tres mas
fvalorcaractcat_11
fvalorcaractcat_24
fvalorcaractcat_58

me tendria que insertar 3 registros

donde el r[0] seria comun para todos los tres registros serian asi

r[0] / 11 / valorcat / valoresp
r[0] / 24 / valorcat / valoresp
r[0] / 58 / valorcat / valoresp

no se si me explico
  #7 (permalink)  
Antiguo 09/06/2011, 12:13
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: insertar registros en una tabla compliado

creo ya vi cual es el pdo


Código PHP:
Ver original
  1. $part_camp =(explode('_', $nombre_campo, 2));
  2.                 $nombre_campo1 = $part_camp[0]; //nombre del campo
  3.                 $id_campo = $part_camp[1];  //id del valor de la caracteristica
  4.                
  5.                     if ($nombre_campo1 == "fvalorcaractcat"){#normalmente entraria aqui si y solo si la cadena  es fvalorcaractcat
  6.                        $valor_caract_cat = $valor;
  7.        
  8.                         }
  9.                    
  10.                     if ($nombre_campo1 == "fvalorcaractesp"){#si esta en el mismo ciclo que el anterior , no entra , entonces $valor_caract_esp no tendra valor nunca, tal vez aqui podria ser un update del id_campo ya existente  o cambiando la logica
  11.                        $valor_caract_esp = $valor;
  12.                  
  13.                         }
  14.                
  15.                
  16.                 inserta_caracteristica($r[0],$id_campo, $valor_caract_cat, $valor_caract_esp, $conexion);#solo inserta el primero por ke es el unico que existe , si intenta insertar el segundo , no deberia poder


es o cambiar la logica o checar si existe ya ese id_campo y actualizar el registro , me imagino que la llave primaria es la combinacion de id_prod_rel,id_car_rel
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #8 (permalink)  
Antiguo 09/06/2011, 14:41
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: insertar registros en una tabla compliado

ya lo solucioné

perimeo inserto el perimer valor en la primer columna calor_caract_cat y despues actualizo mirando el id_prod_rel id_car_rel


Código PHP:
// miro el ultimo registro
    
$sql "SELECT MAX(id) FROM $taula_productes";  
        
$consult mysql_query($sql);  
        
$r mysql_fetch_array($consult);

        
//echo $r[0]."<br>"; 
        
        
        
foreach($_POST as $nombre_campo => $valor){
            
            
$cadena_a_buscar 'fvalorcaract';
             if (
ereg($cadena_a_buscar $nombre_campo) ){// busco la cadena fvalorcaractcat 

                
$part_camp =(explode('_'$nombre_campo2));
                
$nombre_campo1 $part_camp[0];
                
$id_campo $part_camp[1];
                
                
//echo $nombre_campo. " - ". $valor,"<br>";
                    
                  
                    
if ($nombre_campo1 == "fvalorcaractcat"){
                        
$valor_caract_cat $valor;
                       
                            
                            
inserta_caracteristica_cat($r[0],$id_campoReemplaza_Acentos($valor_caract_cat) , $conexion);
                            }
                            
                        
                    
                    if (
$nombre_campo1 == "fvalorcaractesp"){
                        
$valor_caract_esp $valor;
                        
                            
actualitza_caracteristica_esp($r[0],$id_campoReemplaza_Acentos($valor_caract_esp),$conexion);
                            }
                    
                                    
                
                    
                
                
            
            }
// cierroel if ereg($cadena_a_buscar , $nombre_campo
            
            
            
            
        
}// cierro el forearch 
aca las funciones

Código PHP:
function inserta_caracteristica_cat($id_prod_rel,$id_car_rel$valor_caract_cat$conexion){
       
       
    
mysql_query("insert into ralacio_caracteristiques (id_prod_rel,id_car_rel, valor_caract_cat) values ( '$id_prod_rel','$id_car_rel', '$valor_caract_cat')");
      
    }
// tanco la funcio
    
    
    
function actualitza_caracteristica_esp($id_prod_rel,$id_car_rel$valor_caract_esp$conexion){
       
    
$sSQL="Update ralacio_caracteristiques Set valor_caract_esp='$valor_caract_esp' Where id_prod_rel='$id_prod_rel' and id_car_rel=$id_car_rel";
    
mysql_query($sSQL);
    
       
    } 
y me funcioa ahora me gustaria saber si esto esta bien o no o puede perjudicar al servidor, tema uso de memoria etc etc
  #9 (permalink)  
Antiguo 09/06/2011, 15:20
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: insertar registros en una tabla compliado

jajaj que bueno que ya lo resolviste

la memoria no tendria pdos , la bronca es la base de datos , la va a pujar de andar haciendo updates , asi que digas uuuu que caon la va a pujar? solo que sean muchos datos y que al mismo tiempo la usen para otra cosa ,

lo óptimo? como lo pensaste en un inicio de una sola inserción hacerlo y no actualizar después


la propuesta? un arreglo bidimensional que al final recorras para insertarlo todo de wamazo


Código PHP:
$arr["combinacion id_prod_rel e id_car_rel"]["fvalorcaractcat"]
$arr["combinacion id_prod_rel e id_car_rel"]["fvalorcaractesp"


otra propuesta ?? un doble bandereo ese me suena el mas chiroliro pero a ver si deduces este ultimo
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Etiquetas: registros, tabla
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:02.