Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] insertar resultado de funcion en base de datos

Estas en el tema de insertar resultado de funcion en base de datos en el foro de PHP en Foros del Web. Buenos dias. He creado una función que toma los datos de un chekbox de un formulario estos datos se envian en español y debo relacionarlos ...
  #1 (permalink)  
Antiguo 06/07/2013, 10:26
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
insertar resultado de funcion en base de datos

Buenos dias.
He creado una función que toma los datos de un chekbox de un formulario estos datos se envian en español y debo relacionarlos con los datos de una tabla donde estan en frances estos datos los guarda en una variable, cuando llamo la funcion me muestra los resultados en frances de lo que recibio en españolen la misma tabla tiene los datos en español), hasta aqui todo esta bien, el problema es cuando quiero insertar esos datos en la base de datos (los de frances)ya que en el insert no me lee los resultados. coloco el codigo a continuacion:
Código PHP:
Ver original
  1. funcion
  2.  
  3. /////////////////////////////////////////////////////////////// Alcances frances//////////////////////////////////////
  4.  
  5.  function alcances_toma_fr(){
  6.                 foreach($_POST['alcance'] as $alcance){
  7.                     echo $alcances;
  8.                     mysql_query('SET NAMES utf8');
  9.                     $sql8="SELECT * FROM  alcances  WHERE alcance_es = '$alcance'";
  10.                     $result8 = @mysql_query($sql8);
  11.                     while ($rww = mysql_fetch_array($result8)){
  12.                         $alcance_fr_toma=   ($rww["alcance_fr"]).",";
  13.                         echo $alcance_fr_toma;
  14.                         //$alcances=$alcance.","."\n";
  15.                         }
  16.    }
  17.    } /*  */ ///////////////////////// fin funcion fr //////////////////////////////////////
  18.  
  19.  
  20. alcances_toma_fr();

he intentado insertarlo de esta forma
Código PHP:
Ver original
  1. $Sql="insert into docs (id_doc,alcance_frances,) values ('$id_documento','alcances_toma_fr()')";
  2.  
  3.  
  4. tambien he intentado asignarle a una variable la funcion para insertarlo de esta forma
  5.  
  6. $alcance_fr=alcances_toma_fr();
  7. $Sql="insert into docs (id_doc,alcance_frances,) values ('$id_documento','$alcance_fr')";
ninguna de las dos formas funciona.
Agradezco si me pueden ayudar esto ya me tiene loco.

Última edición por gnzsoloyo; 06/07/2013 a las 11:16
  #2 (permalink)  
Antiguo 06/07/2013, 11:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: insertar resultado de funcion en base de datos

No hay errores de sintaxis en SQL, por lo que se infiere que es un error de generacional de las consultas en PHP.

Movido al foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/07/2013, 11:29
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: insertar resultado de funcion en base de datos

Para comenzar despues que armas la consulta

Código PHP:
Ver original
  1. $Sql="insert into docs (id_doc,alcance_frances,) values ('$id_documento','alcances_toma_fr()')";

Imprimela en pantalla para confirmar que lleve una estructura correcta.

Haz esto

Código PHP:
Ver original
  1. echo $Sql;

Y postea la consulta que te imprime a ver si esta correcta
  #4 (permalink)  
Antiguo 06/07/2013, 11:35
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: insertar resultado de funcion en base de datos

Luego te hago una observacion en la función que usas pruebala de la siguiente forma

Código PHP:
Ver original
  1. function alcances_toma_fr(){
  2.     foreach($_POST['alcance'] as $alcance){
  3.         echo $alcances;
  4.         mysql_query('SET NAMES utf8');
  5.         $sql8="SELECT * FROM  alcances  WHERE alcance_es = '$alcance'";
  6.         $result8 = mysql_query($sql8)or die(mysql_error());
  7.         $alcance_fr_toma="";
  8.         while ($rww = mysql_fetch_array($result8)){
  9.             $alcance_fr_toma .=   $rww["alcance_fr"].",";
  10.             }
  11.    }
  12.     $alcance_fr_toma=substr($alcance_fr_toma,0,(strlen($alcance_fr_toma)-1)); //Borramos la ultima coma
  13.     return $alcance_fr_toma;
  14. }
  #5 (permalink)  
Antiguo 06/07/2013, 11:37
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: insertar resultado de funcion en base de datos

Gracias por responder,la conexion a la bbdd esta bien, lo que pasa es cuando llamo la funcion "alcances_toma_fr()" me muestra este resultado "Bahamas ,Barbade,Belize,Jamaïque,", este resultado es ql que quiero insertar, pero cuando hago el insert me inserta en la tabla "alcances_toma_fr()"
  #6 (permalink)  
Antiguo 06/07/2013, 11:42
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: insertar resultado de funcion en base de datos

en pocas palabras inserta "alcances_toma_fr()" el nombre de la funcion mas no los valores del proceso que son "Bahamas ,Barbade,Belize,Jamaïque,"
  #7 (permalink)  
Antiguo 06/07/2013, 11:46
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: insertar resultado de funcion en base de datos

primero hacer echo en una función no es lo recomendable, debería de haber un return con el string que deseas agregar en ese caso, de tal manera que lo puedas asignar a donde quieres asignarlo o simplemente mostrarlo con un hecho.

Otra cosa porque hacer el valor del retorno en un loop?? debería de hacer el concat y luego hacer lo que retorno

Código PHP:
Ver original
  1. funcion
  2.  
  3. /////////////////////////////////////////////////////////////// Alcances frances//////////////////////////////////////
  4.  
  5.  function alcances_toma_fr(){
  6.     mysql_query('SET NAMES utf8');
  7.     foreach($_POST['alcance'] as $alcance){        
  8.         $sql8="SELECT * FROM  alcances  WHERE alcance_es = '$alcance'";
  9.         $result8 = mysql_query($sql8);
  10.         while ($rww = mysql_fetch_array($result8)){
  11.             $alcance_fr_toma .=   ($rww["alcance_fr"]).",";      
  12.        }
  13.    }
  14.    return $alcance_fr_toma;
  15. } /*  */ ///////////////////////// fin funcion fr //////////////////////////////////////
  16.  
  17.  
  18. alcances_toma_fr();

una vez acomodado eso simplemente has lo que te indica el amigo imprime el sql generado a ver que te da y por supuesto siempre al momento del desarrollo es bueno depurar las consultas
Código PHP:
Ver original
  1. mysql_query('tu query') or die(mysql_error());

saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 06/07/2013, 12:00
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: insertar resultado de funcion en base de datos

Esto es lo que arroja el echo " insert into documentos (id_documento,alcance_fr) values ('','alcances_toma_fr()') "

Deberia arrojar lo siguiente " insert into documentos (id_documento,alcance_fr) values ('','Barbade,Belize,Jamaïque,') "
  #9 (permalink)  
Antiguo 06/07/2013, 12:09
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: insertar resultado de funcion en base de datos

php no interpreta la funcion dentro de las comillas, deberias de obtener el resultado de la función en una variable y luego pasarle los datos o en su defecto concatenar la funcón fuera de las comillas

Código php:
Ver original
  1. echo " insert into documentos (id_documento,alcance_fr) values ('','" . alcances_toma_fr() ."') ";

prueba y nos comentas ya que en la pc que estoy no puedo hacer la prueba, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 06/07/2013, 12:16
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: insertar resultado de funcion en base de datos

Gracias voy a probar el cambio en el insert. Una cosa antes al colocar return y hacer un echo fuera de la funcion "echo $alcance_fr_toma;" no me arroja nada esto es normal o el echo no se lee fuera de la funcion? o como debo hacer el echo para saber lo que esta arrojando la funcion?
  #11 (permalink)  
Antiguo 06/07/2013, 12:18
Avatar de mauricioheat  
Fecha de Ingreso: septiembre-2011
Ubicación: Bogota
Mensajes: 39
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: insertar resultado de funcion en base de datos

Si Carlos esa era la solucion sacar de las comillas la funcion ahora si el echo del $sql me muestra el resultado muchas gracias

Etiquetas: funcion, insert, mysql, resultado, select, sql, 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 09:26.