Foros del Web » Programando para Internet » PHP »

Guardar dos arreglos en un solo registro

Estas en el tema de Guardar dos arreglos en un solo registro en el foro de PHP en Foros del Web. Hola, tengo un grave problema con el guardar datos variabes, me explico ,mejor. Código PHP: While ( $row =  mysql_fetch_array ( $consul ))         {                     echo  "<td>$row[nombre]<br><input type='text' name='ad[]'></td>" ...
  #1 (permalink)  
Antiguo 02/05/2005, 07:58
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta Guardar dos arreglos en un solo registro

Hola, tengo un grave problema con el guardar datos variabes, me explico ,mejor.
Código PHP:
While ($rowmysql_fetch_array($consul))
        {                
    echo 
"<td>$row[nombre]<br><input type='text' name='ad[]'></td>";

Obtengo este valor de la BD, entonces necesito guardar en otra tabla los valores para cada uno de los $row[nombre], pero a la vez necesito guardar el $row[nombre], en el mismo registro y no se como hacerlo.
Para guardar solo un valor utilizo:
Código PHP:
foreach($ad as $datos

$sql "INSERT INTO adoc (valor,documento,estado,opi,fechai) VALUES (";
$sql .= "'$datos'";
$sql .= ",'$iddocumento'";
$sql .= ",'1'";
$sql .= ",'$idUsr'";
$sql .= ",'$fecha'";
$sql .= ")";
mysql_query($sql);

En esta tabla existe otro campo que se llama nombre, ahi debo guardar el $row[nombre], pero no se como hacerlo.
Cualquier ayuda se agradece.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.
  #2 (permalink)  
Antiguo 03/05/2005, 05:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por polaya
Obtengo este valor de la BD, entonces necesito guardar en otra tabla los valores para cada uno de los $row[nombre], pero a la vez necesito guardar el $row[nombre], en el mismo registro y no se como hacerlo.
Temo que para crear nuevos registros por cada uno de tus valores recuperados tendrás que hacer la insersión dentro de tu ciclo:
Código PHP:
While ($rowmysql_fetch_array($consul))
        {                
    echo 
"<td>".$row['nombre']."<br><input type=\"text\" name='ad[]'></td>";
        
mysql_query("INSERT INTO tabla2 VALUES(..., '".$row['nombre']."')";

ó tratar de implementar algo como lo que tienes ahora para guardar un solo registro (que no entiendo )... pero tendrá que ser dentro de tu ciclo... ó quizá te resulte más cómodo crear un arreglo dentro de ese ciclo guardando (añadiendo) tus resultados para posteriormente volver a hacer otro ciclo para volverlos a retomar e insertarlos... El caso es que solo puedes crear un nuevo registro a la vez! . ¿ó es que de plano no entendí tu problema?? .

Ahora bien... para insertar/llenar un dato en un registro ya creado... tendrás que hacerlo como si actualizaras:
Código:
UPDATE SET campo='valor' WHERE otro_campo='otro_valor'
lo mismo... una actualización por vez.

Espero te haya entendido y en su caso haberme dado a entender . Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 03/05/2005, 14:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Puedes serializar tu array generado desde tu formulario usando:

serialize()
www.php.net/serialize
(útil si tu array es compleja (+1 dimensión)

Si no es tan compleja (como así lo parece) .. simplemente puedes concatenar tus elementos del array (sus valores) separados por comas por ejemplo usando:
Código PHP:
$datos=implode(",",$db);
// y luego tu INSERT a tu BD ... obtendras todos los datos separados por comas en un string largo. 
Ahora .. supongo que querras asociar el "$row['nombre']" con su valor .. si es así .. crea un campo hidden tipo:

Código PHP:
<input type="hidden" name="nombre[]" value="<? echo $row['nombre'?>">
En tu script PHP recibiras dos arrays de nombres: nombre y ad para que las leas con un bucle for() (no foreach() para este caso) usando como indice el mismo numero (de 0 a count() de una de los dos arrays (da igual cual .. tienen el mismo n° de elementos teóricamente).

Pero en tu caso particular .. simplemente podrías usar un array asociativo tipo:

Código PHP:
echo "<td>$row[nombre]<br><input type=\"text\" name=\"ad['".$row['nombre']."']\"></td>"
Con un bucle foreach() pero de tipo:
Código PHP:
foreach ($db as $indice=>$valor){
echo 
$dato."=>".$valor."<br>";
// aquí tu INSERT con $dato y $valor ... donde corresponda.

obtendras sus valores para hacer tu INSERT . .ya sea para crear un registro por entrada en tu BD o bien concatenado para UN registro por total de datos .. (ahí ya no sé como necesitas gestionarlo)

Un saludo,
  #4 (permalink)  
Antiguo 06/05/2005, 08:58
Avatar de polaya  
Fecha de Ingreso: diciembre-2004
Ubicación: Chile
Mensajes: 191
Antigüedad: 19 años, 4 meses
Puntos: 0
sigue sin guardar el nombre

gracias por los datos, probe con los dos y en ambos casos me guarda sin problemas los valores pero sigue sin guardar el nombre y es lo que mas necesito para realizar la busqueda posterior.
Cluster, en el ultimo dato que envias, se supone que guarda el valor del campo, junto con el valor del nombre?????

Necesito generar un registro por entrada, por ejemplo, si envio los valores:
nombre: 1, valor: 1
nombre:2, valor: 2...etc.
necesito que sean guardados de la misma manera en la BD.
registro 1: 1,1
registro 2: 2,2...etc
Código PHP:
foreach ($ad as $indice=>$valor)

      echo 
$dato."=>".$valor."<br>"
     
$sql "INSERT INTO adoc (nombre,valor,documento,estado,opi,fechai)        VALUES (";
            
$sql .= "'$indice'";
    
$sql .= ",'$valor'";
               
$sql .= ",'$iddocumento'";
    
$sql .= ",'1'";
               
$sql .= ",'$idUsr'";
               
$sql .= ",'$fecha'";
    
$sql .= ")";
    
mysql_query($sql);

en la variable $indice, guarde al nombre de la variable que necesito guardar en la BD, pero asi como la expuse no resulta, deja el espacio en blanco, y tampoco resulta guardando $dato.
__________________
La vida da muchas vueltas...debe ser por eso que uno se marea.

Última edición por polaya; 06/05/2005 a las 09:26
  #5 (permalink)  
Antiguo 06/05/2005, 09:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usastes el último ejemplo (es el que requieres según expones):

Cita:
echo "<td>$row[nombre]<br><input type=\"text\" name=\"ad['".$row['nombre']."']\"></td>";
En el script PHP de proceso con ese bucle foreach() .. ¿recibes los datos correctamente?

¿Esa tabla "adoc" que estructura tiene? .. usas un campo autonumerico y único? ..
Código PHP:
$sql "INSERT INTO adoc (nombre,valor,documento,estado,opi,fechai)
 VALUES ('"
.$indice."','".$valor."','".$iddocumento."','1','".$idUsr."','".$fecha."')"
Un saludo,
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:27.