Foros del Web » Programando para Internet » PHP »

insert dinamico

Estas en el tema de insert dinamico en el foro de PHP en Foros del Web. tengo un problema les explico haber si aalguien se le ocurre algo: resulta que recibo en una pagina anterior el titulo y numero de opcion ...
  #1 (permalink)  
Antiguo 05/12/2004, 17:06
Avatar de The_Dark_Roy  
Fecha de Ingreso: enero-2004
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
insert dinamico

tengo un problema les explico haber si aalguien se le ocurre algo:
resulta que recibo en una pagina anterior el titulo y numero de opcion o respuestas primero inserto en una tabla el titulo y saco el id para insertarlo en cada opcion
el problema es que solo me inserta el primer registro y solo ese no se si se pueda hacer eso que hice pero no le veo nada de malo.
Código PHP:
<?php
require("control.php");
require(
"../proint_conexion.php");
$id_usuario=$_SESSION["id_usuario"];
$i=0;

while(
$i<$num_resp_env){
    if(empty(
$pregunta[$i])){
        
header("Location: admin_crear_encuesta2.php?error=1&titulo_env=$titulo_env&num_resp_env=$num_resp_env");
    }
    
$i++;
}
$qry="INSERT INTO encuesta VALUES('','$titulo_env',now())";
$res=mysql_query($qry);
if(
mysql_affected_rows($conexion)>0){
    
$qry1="SELECT id FROM encuesta ORDER BY fecha LIMIT 0,1";
    
$res1=mysql_query($qry1);
    
$fila1=mysql_fetch_array($res1);
    
$i=0;
    while(
$i<$num_resp_env){
        
$opcion=$pregunta[$i];
        
$qry2="INSERT INTO respuestas (id_encuesta,pregunta) VALUES('$fila1[id]','$opcion')";
        
mysql_query($qry2);
        
$i++;
    }
    if(
mysql_affected_rows($conexion)($num_resp_env)){
        
header("Location: admin.php");
    }
}
?>
__________________
ojala te hayas quitado la venda

http://www.surire.cl
http://www.uta.cl
  #2 (permalink)  
Antiguo 06/12/2004, 06:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Despues de cada header() de tipo "Location" debes terminar la ejecución de tu script ..

La función header() con la cabecera HTTP "location" indica a tu "cliente" (navegador) que cambien la página que está "visulalizando" .. pero todo esto lo hará cuando la ejecución del script termine y el "buffer" de salida de PHP sea entregado al "cliente" (tu navegador) para que ejecute su parte .. en tu caso la orden "cambia la página a tal otro URL" si es que llega el caso.

Por ende .. tu "objetivo" si usas header("Location ...") es que la ejecución del script termine ahí y que se mande a llamar a tu otra página/script .. por eso es necesario formar a terminar la ejecución de tu script en ese punto con un exit despues de tu location:

header ("Location: .....");
exit;

Por lo demás .. no sé que siginifica esto:
if(mysql_affected_rows($conexion)($num_resp_env)) {

entre una expresión y otra .. falta un operador lógico no? .. == != && .. || .. u otro.

Otro detalle:
$qry1="SELECT id FROM encuesta ORDER BY fecha LIMIT 0,1";

ahí estás forzando a un sólo resultado de tu consulta SQL a tu tabla "encuesta". Realmente el "último ID generado tras un INSERT" a una tabla NO deberías obtenerlo como lo haces (por fecha y mostrando un sólo resultado) .. eso no es nada seguro .. Debes usar la función:

mysql_insert_id()
http://www.php.net/manual/en/functio...-insert-id.php

En los arrays en general . usa comillas para referirte a sus indices:
Código PHP:
$qry2="INSERT INTO respuestas (id_encuesta,pregunta) VALUES('".$fila1['id']."','$opcion')"

Un saludo,

PD: deberías poner el código completo que usas incluido ese Formulario para hacerse una idea de que variables y de que tipo están llegando a ese script .. Pero antes usa los exit despues de los header("location ...")

PD2: Como veras no te resuelvo tu pregunta puntual ..pero si lo "que debería ser" no lo corriges es problable que por ahí vengan muchos errores e incluso el que mencionas en este caso concreto.
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 17:27.