Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] no pasa la variable..?

Estas en el tema de no pasa la variable..? en el foro de PHP en Foros del Web. Saludos amigos, soy principiante en php.. tengo un formulario que sube una imagen y funciona, perfectamente pero cuando le quiero agregar una variable para subir ...
  #1 (permalink)  
Antiguo 18/12/2013, 22:21
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
no pasa la variable..?

Saludos amigos, soy principiante en php..
tengo un formulario que sube una imagen y funciona, perfectamente pero cuando le quiero agregar una variable para subir a la tabla, no la reconoce, pueden ayudarme a ver el error..

el formulario que esta en una pagina php es este...

<form enctype="multipart/form-data" class="dtss" method="post">
<label for="iupimg1">IMAGEN 1</label><input type="file" name="imagen1" id="iupimg1" />
<input class="click" type="submit" name="nisubmit" id="iisubmit" value="Subir las imagenes" />
</form>

aqui llamo al script php desde la misma pagina...

<?php include 'cargar.php'; ?>

la pagina cargar.php en resumen tiene este script...

$reid;
procesa();
function procesa()
{
global $reid;
if(isset($_POST['nisubmit'])) {
upload($reid, 'imagen1');
}
}

function upload($regid,$imagen)
{
$vcontrol="true";
$imname = ($_FILES[$imagen]['name']);
$imsize = ($_FILES[$imagen]['size']);
$imtipo = ($_FILES[$imagen]['type']);
$id_prop = $regid;
$imname=str_replace(" ","_",$imname); //y asi sigue el programa...

}

como les comente si le quito la variable $reid es decir si llamo solamente upload('imagen1') y pongo function upload($imagen), funciona perfectamente, pero me interesa tambien cargar $reid a la tabla.. que estoy haciendo mal...?
  #2 (permalink)  
Antiguo 18/12/2013, 22:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

¿En qué parte asignas un valor a la variable $reid?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 19/12/2013, 07:37
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

no te preocupes por la variable &reid... esta ya tiene un valor... viene de un return ejecutado en una función anterior...
  #4 (permalink)  
Antiguo 19/12/2013, 09:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

Sería de mucha utilidad que coloques el resto del código de ese archivo, porque, con lo que muestras, pareciera estar todo normal. Por favor, usa el highlight respectivo para insertar código.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 19/12/2013, 10:10
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Bueno no puse todo porque me parece que no interfiere.. el script completo (cargar.php) procesa una pagina con dos formularios... al procesar el primero me devuelve una variable mediante return ($reid), la cual he verificado y devuelve con un valor... en total seria asi
Código PHP:
Ver original
  1. // En la pagina van dos formularios como sigue...
  2.  
  3. <form class="dtss" method="post" src="" name="propds">
  4. <label for="iaget">AGENTE</label><input type="text" name="naget" id="iaget" value="" />
  5. <label for="iagen">AGENCIA</label><input type="text" name="nagen" id="iagen" value="" />
  6. <input class="click" type="submit" name="nsubmit" id="isubmit" value="Ingrese la propiedad" />
  7.  
  8. // y el segundo formulario que ustedes ya vieron...
  9.  
  10. <form enctype="multipart/form-data" class="dtss" method="post">
  11. <label for="iupimg1">IMAGEN 1</label><input type="file" name="imagen1" id="iupimg1" />
  12. <input class="click" type="submit" name="nisubmit" id="iisubmit" value="Subir las imagenes" />
  13. </form>
  14.  
  15. //aqui llamo al script php desde la misma pagina...
  16.  
  17. <?php include 'cargar.php'; ?>
  18.  
  19. la pagina cargar.php en resumen tiene este script...
  20.  
  21. include 'lib/InsPrpCt.php';// aqui la libreria con el script que abre la BD
  22.  
  23. function insData($table)
  24. {
  25.     if(isset($_POST['nsubmit'])) {
  26.              // Capturando valores del formulario
  27.         $agente  = mysql_real_escape_string($_POST['naget']);
  28.         $agencia = mysql_real_escape_string($_POST['nagen']);
  29.        
  30. //
  #6 (permalink)  
Antiguo 19/12/2013, 10:24
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: no pasa la variable..?

proba esto
Código PHP:
$reid;
procesa();
function 
procesa()
{
global 
$reid;
# para saber si estan activadas las globales(fijate que reid sea el valor esperado)
echo "REID 1".$reid;

if(isset(
$_POST['nisubmit'])) {
upload($reid'imagen1');
}
}
# esto asegura si el valor es nulo
function upload($regid="999",$imagen)

{
# si esta llegando lo que queres
echo "REID 2".$reid;
$vcontrol="true";
$imname = ($_FILES[$imagen]['name']);
$imsize = ($_FILES[$imagen]['size']);
$imtipo = ($_FILES[$imagen]['type']);
$id_prop $regid;
$imname=str_replace(" ","_",$imname); //y asi sigue el programa...


  #7 (permalink)  
Antiguo 19/12/2013, 10:46
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Disculpen no llegue a poner todo lo que debia en mi respuesta anterior..
Bueno no puse todo porque me parece que no interfiere.. el script completo (cargar.php) procesa una pagina con dos formularios... al procesar el primero me devuelve una variable mediante return ($reid), la cual he verificado y devuelve con un valor... en total seria asi
Código PHP:
Ver original
  1. // En la pagina van dos formularios como sigue...
  2.  
  3. <form class="dtss" method="post" src="" name="propds">
  4. <label for="iaget">AGENTE</label><input type="text" name="naget" id="iaget" value="" />
  5. <label for="iagen">AGENCIA</label><input type="text" name="nagen" id="iagen" value="" />
  6. <input class="click" type="submit" name="nsubmit" id="isubmit" value="Ingrese la propiedad" />
  7.  
  8. // y el segundo formulario que ustedes ya vieron...
  9.  
  10. <form enctype="multipart/form-data" class="dtss" method="post">
  11. <label for="iupimg1">IMAGEN 1</label><input type="file" name="imagen1" id="iupimg1" />
  12. <input class="click" type="submit" name="nisubmit" id="iisubmit" value="Subir las imagenes" />
  13. </form>
  14.  
  15. //aqui llamo al script php desde la misma pagina...
  16.  
  17. <?php include 'cargar.php'; ?>
  18.  
  19. la pagina cargar.php en resumen tiene este script...
  20.  
  21. include 'lib/InsPrpCt.php';// aqui la libreria con el script que abre la BD
  22.  
  23. function insData($table)
  24. {
  25.     if(isset($_POST['nsubmit'])) {
  26.              // Capturando valores del formulario
  27.         $agente  = mysql_real_escape_string($_POST['naget']);
  28.         $agencia = mysql_real_escape_string($_POST['nagen']);
  29.         //la funcion continua e inserta los datos en la tabla usuarios
  30.                 //luego ejecuto mysql_insert_id con la variable $con (la conexion a la base de datos)
  31.                 //obtengo el id del ultimo regisytro y se lo asigno a $id...
  32.                 $id = mysql_insert_id($con);
  33.                 return $id;
  34.                 }
  35. }
  36.  
  37. // aqui lanzo la funcion insData y le asigno el valor devuelto a $reid
  38. $reid=insData('usuarios');
  39.  
  40. // y de ahi sigue como ustedes vieron... se llama a la funcion procesa()
  41. //que procesa el segundo formulario..
  42. procesa();
  43. function procesa()
  44. {
  45. global $reid;
  46. if(isset($_POST['nisubmit'])) {
  47. upload($reid, 'imagen1');
  48. }
  49. }
  50.  
  51. function upload($regid,$imagen)
  52. {
  53. $vcontrol="true";
  54. $imname = ($_FILES[$imagen]['name']);
  55. $imsize = ($_FILES[$imagen]['size']);
  56. $imtipo = ($_FILES[$imagen]['type']);
  57. $id_prop = $regid;
  58. $imname=str_replace(" ","_",$imname); //y asi sigue el programa...
  59.  
  60. }
todo funciona perfecto sin $reid.. se cargan los datos del primer formulario con insData y
luego se carga la imagen del segundo formulario con procesa(), pero cuando quiero sumar $reid
para interlazar las dos tablas (usuarios e imagenes), $reid llega al interior de procesa(), pero nno pasa a upload()...
  #8 (permalink)  
Antiguo 19/12/2013, 10:56
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: no pasa la variable..?

si estas seguro que llega bien no te complique tanto, y hace
Código PHP:
$reid=insData('usuarios');

procesa($reid);
function 
procesa($reid){
 if(isset(
$_POST['nisubmit'])) {
  
upload($reid'imagen1');
 }

  #9 (permalink)  
Antiguo 19/12/2013, 10:59
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: no pasa la variable..?

Sabes que php se ejecuta de arriba hacia abajo, es raro que no te de un error ya que primero haces la llamada a una funcion y despues la declaras
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 19/12/2013, 11:06
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

creo que ya se donde esta el problema.. Luis hice lo que me pediste, y me pasa el valor de REID 1 y en REID 2 el valor que me sale es 999, pero cuando le doy al submit del segundo formulario el valor de $reid desaparece... (pierde su valor) y claro no pasa nada.. como s epuede solucionar esto...
  #11 (permalink)  
Antiguo 19/12/2013, 11:14
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

xSkArx volvi a probar el programa con procesa($reid) y function procesa($reid) tal como sugiere Luis y de nuevo me carga los usuarios me carga la foto, pero sigue sin pasar la variable.. no, no da error en ninguna parte solo no pasa la variable $reid..
  #12 (permalink)  
Antiguo 19/12/2013, 11:30
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: no pasa la variable..?

me parece el problema esta en que nombre de los submit
que esta en la obtencion del $reid.

hace un
var_damp($_POST);
cuando envia los datos, y fijate si estan todos los necesarios para la obtencion de $reid.
  #13 (permalink)  
Antiguo 19/12/2013, 11:32
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: no pasa la variable..?

no entiendo si estas haciendo que funciones en uno o dos pasos. Pero me parece que es la variable 'nisubmit', que esta en los dos formularios.
  #14 (permalink)  
Antiguo 19/12/2013, 12:08
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

los formularios estan correctos luis.. ya te dije que cargan los datos correctamenta en las tablas correspondientes, los nombres de los submit no son igual.. uno es nsubmit y el otro es nisubmit.. me parece que terminare haciendo el proceso de una manera mas convencional.. es decir cada formulario en una pagina...
  #15 (permalink)  
Antiguo 19/12/2013, 12:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

Creo que sería más convencional si el código que recibe los datos lo pones directamente en el archivo de los formularios y no con un include, además, creo que podrías hacer la labor de tus dos formularios en uno solo. De la forma en que lo haces, es como si intentaras complicarte innecesariamente. Nada personal, así es como lo veo.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 19/12/2013, 13:31
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Ya alexis, gracias por el intento.. pero el hecho es que el segundo formulario es para hacer uploads (enctype="multipart/form-data") por eso no los puedo procesar en uno solo.. de cualquier manera gracias por el intento maestro...
  #17 (permalink)  
Antiguo 19/12/2013, 13:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

Eso no tiene nada que ver, puedes enviar cadenas de texto, así como archivos desde un mismo formulario, no tienes que tenerlos necesariamente separados.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 19/12/2013, 13:47
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Quieres decir que puedo hacer esto...?
Código PHP:
Ver original
  1. <form enctype="multipart/form-data" class="dtss" method="post">
  2. <label for="iaget">AGENTE</label><input type="text" name="naget" id="iaget" value="" />
  3. <label for="iagen">AGENCIA</label><input type="text" name="nagen" id="iagen" value="" />
  4. <label for="iupimg1">IMAGEN 1</label><input type="file" name="imagen1" id="iupimg1" />
  5. <input class="click" type="submit" name="nisubmit" id="iisubmit" value="Subir las imagenes" />
  6. </form>
y luego recuperar los textos con $_post y tratar las imagenes con $_files...?
  #19 (permalink)  
Antiguo 19/12/2013, 13:53
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: no pasa la variable..?

Cita:
Iniciado por brhs Ver Mensaje
pero el hecho es que el segundo formulario es para hacer uploads (enctype="multipart/form-data") por eso no los puedo procesar en uno solo..
el enctype es una codificacion no afecta para nada puedes tener un solo formulario como ya te han dicho

http://www.w3schools.com/tags/att_form_enctype.asp

Cita:
Iniciado por brhs Ver Mensaje
Quieres decir que puedo hacer esto...?
Código PHP:
Ver original
  1. <form enctype="multipart/form-data" class="dtss" method="post">
  2. <label for="iaget">AGENTE</label><input type="text" name="naget" id="iaget" value="" />
  3. <label for="iagen">AGENCIA</label><input type="text" name="nagen" id="iagen" value="" />
  4. <label for="iupimg1">IMAGEN 1</label><input type="file" name="imagen1" id="iupimg1" />
  5. <input class="click" type="submit" name="nisubmit" id="iisubmit" value="Subir las imagenes" />
  6. </form>
y luego recuperar los textos con $_post y tratar las imagenes con $_files...?
Efectivamente puedes hacerlo.

Última edición por webankenovi; 19/12/2013 a las 13:59
  #20 (permalink)  
Antiguo 19/12/2013, 14:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

Esta es mi sugerencia de actualización para tu código:

Código PHP:
Ver original
  1. <form method="post" enctype="multipart/form-data">
  2.     <label for="iaget">AGENTE</label>
  3.     <input type="text" name="naget" id="iaget" value="" />
  4.  
  5.     <label for="iagen">AGENCIA</label>
  6.     <input type="text" name="nagen" id="iagen" value="" />
  7.  
  8.     <label for="iupimg1">IMAGEN 1</label>
  9.     <input type="file" name="imagen1" id="iupimg1" />
  10.  
  11.     <input type="submit" value="Ingrese la propiedad" />
  12. </form>
  13.  
  14. <?php
  15. if ($_POST) {
  16.     $conexion = new mysqli ("servidor", "usuario", "password", "BD") or exit ("No se pudo realizar la conexión");
  17.  
  18.     $agente = $conexion->real_escape_string(strip_tags($_POST["naget"]));
  19.     $agencia = $conexion->real_escape_string(strip_tags($_POST["nagen"]));
  20.  
  21.     $imname = $_FILES[$imagen]["name"];
  22.     $imtmp = $_FILES[$imagen]["tmp_name"];
  23.     $imsize = $_FILES[$imagen]["size"];
  24.     $imtipo = $_FILES[$imagen]["type"];
  25.     $nombreImagen = str_replace (" ", "_", $imname);
  26.     $ruta = "img/";
  27.  
  28.     echo $conexion->query(sprintf("INSERT INTO tabla (agente, agencia, imagen) VALUES ('%s', '%s', '%s')", $agente, $agencia, $nombreImagen . $imtipo) && move_uploaded_file($imtmp, $ruta . $nombreImagen . $imtipo) ? "Datos e imagen guardados satisfactoriamente" : "Ocurrió un error al intentar guardar los datos";
  29.  
  30.     $conexion->close();
  31. }
  32. ?>

No sé bien qué otras operaciones realizas, pero con este ejemplo, deberías poder guardar los datos en una tabla de la BD y, además, subir tu imagen a una carpeta en el servidor, solamente adáptalo a tus necesidades. Te sugiero que empieces a trabajar con la extensión Mysqli, por ya no se recomienda usar la vieja extensión Mysql.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #21 (permalink)  
Antiguo 19/12/2013, 14:16
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Gracias a todos... tratare como dices alexis... eso es exactamente lo que quiero...
  #22 (permalink)  
Antiguo 19/12/2013, 15:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: no pasa la variable..?

Corrección: De la línea 21 a la 24, el código debe ser así:

Código PHP:
Ver original
  1. $imname = $_FILES["imagen1"]["name"];
  2. $imtmp = $_FILES["imagen1"]["tmp_name"];
  3. $imsize = $_FILES["imagen1"]["size"];
  4. $imtipo = $_FILES["imagen1"]["type"];

Lo había dejado con la variable $imagen como primer índice porque tomé el código que publicaste antes. Lo correcto es que vaya el nombre del input en el que ingresaste la imagen.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #23 (permalink)  
Antiguo 19/12/2013, 18:42
 
Fecha de Ingreso: diciembre-2013
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: no pasa la variable..?

Simplifique un poco el ejemplo que puse, en realidad se trataba de 5 imagenes ademas de una infinidad de datos que debian estar en tablas diferentes , ademas las imagenes debian tener el codigo automatico asignado a los datos anexo, para poder ubicarlas despues... pero la idea funciono alexis88, graciasss... igual para webankenovi...

Etiquetas: formulario, tabla, variable
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 15:20.